├── max-window-effect
├── VERSION
├── max-window-effect@nls1729.zip
├── metadata.json
├── README.txt
├── Makefile
└── extension.js
├── activities-config@nls1729
├── VERSION
├── GSVERSIONS
├── stylesheet.css
├── metadata.json
├── metadata.json.in
├── keys.js
├── notify.js
├── colors.js
├── Makefile
├── schemas
│ ├── org.gnome.shell.extensions.activities-config.gschema.xml
│ └── org.gnome.shell.extensions.activities-config.gschema.xml.in
├── readme.js
├── face-smile-3.svg
├── po
│ └── fr.po
└── message.pot
├── donotdisturb-button@nls1729
├── VERSION
├── GSPVERSIONS
├── VERSION330
├── VERSION332
├── GSVERSIONS
├── GSVERSIONS330
├── GSVERSIONS332
├── force.js
├── arrow-right.png
├── available-no.png
├── available-yes.png
├── audio-volume-on.png
├── audio-volume-muted.png
├── default-persistence.png
├── gnome-session-reboot.png
├── correctClass330.js
├── correctClass.js
├── correctClass332.js
├── available-notifications-symbolic.svg
├── busy-notifications-symbolic.svg
├── metadata.json.in
├── po
│ ├── fr.po
│ ├── es.po
│ ├── it.po
│ ├── el.po
│ ├── de.po
│ └── cs.po
├── Makefile330
├── Makefile332
├── Makefile
├── schemas
│ ├── schema.xml.in
│ └── org.gnome.shell.extensions.donotdisturb-button.gschema.xml
├── extension.js
├── dndBtn.js
├── README.txt.in
├── README.txt
└── dndBtnGObject.js
├── extension-reloader@nls1729
├── VERSION
├── GSVERSIONS
├── metadata.json.in
├── emblem-synchronizing-symbolic.svg
├── schemas
│ ├── schema.xml.in
│ └── org.gnome.shell.extensions.extension-reloader.gschema.xml
├── po
│ ├── el.po
│ ├── fr.po
│ ├── it.po
│ ├── es.po
│ └── de.po
├── Makefile
├── prefs.js
├── README.txt.in
└── extension.js
├── .gitignore
└── README.md
/max-window-effect/VERSION:
--------------------------------------------------------------------------------
1 | 1
2 |
--------------------------------------------------------------------------------
/activities-config@nls1729/VERSION:
--------------------------------------------------------------------------------
1 | 89
2 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/VERSION:
--------------------------------------------------------------------------------
1 | 39
2 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/VERSION:
--------------------------------------------------------------------------------
1 | 12
2 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/GSPVERSIONS:
--------------------------------------------------------------------------------
1 | 3.36
2 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/VERSION330:
--------------------------------------------------------------------------------
1 | 31.01
2 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/VERSION332:
--------------------------------------------------------------------------------
1 | 31.02
2 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/GSVERSIONS:
--------------------------------------------------------------------------------
1 | \"3.36\"
2 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/GSVERSIONS:
--------------------------------------------------------------------------------
1 | \"3.36\"
2 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/GSVERSIONS330:
--------------------------------------------------------------------------------
1 | \"3.30\"
2 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/GSVERSIONS332:
--------------------------------------------------------------------------------
1 | \"3.32\"
2 |
--------------------------------------------------------------------------------
/activities-config@nls1729/GSVERSIONS:
--------------------------------------------------------------------------------
1 | \"3.36\", \"3.38\"
2 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/force.js:
--------------------------------------------------------------------------------
1 | function getForce() { return true; }
2 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/arrow-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nls1729/acme-code/HEAD/donotdisturb-button@nls1729/arrow-right.png
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/available-no.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nls1729/acme-code/HEAD/donotdisturb-button@nls1729/available-no.png
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/available-yes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nls1729/acme-code/HEAD/donotdisturb-button@nls1729/available-yes.png
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/audio-volume-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nls1729/acme-code/HEAD/donotdisturb-button@nls1729/audio-volume-on.png
--------------------------------------------------------------------------------
/max-window-effect/max-window-effect@nls1729.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nls1729/acme-code/HEAD/max-window-effect/max-window-effect@nls1729.zip
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/audio-volume-muted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nls1729/acme-code/HEAD/donotdisturb-button@nls1729/audio-volume-muted.png
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/default-persistence.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nls1729/acme-code/HEAD/donotdisturb-button@nls1729/default-persistence.png
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/gnome-session-reboot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nls1729/acme-code/HEAD/donotdisturb-button@nls1729/gnome-session-reboot.png
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/correctClass330.js:
--------------------------------------------------------------------------------
1 | const Me = imports.misc.extensionUtils.getCurrentExtension();
2 | var DoNotDisturbButton = Me.imports.dndBtn;
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .~
2 | *~
3 | CHECKSUM
4 | gschemas.compiled
5 | *.zip
6 | *.mo
7 | */po/*.pot
8 | */po/*.txt
9 | *.gz
10 | */DNDimages
11 | *.swp
12 | _build
13 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/correctClass.js:
--------------------------------------------------------------------------------
1 | const Me = imports.misc.extensionUtils.getCurrentExtension();
2 | var DoNotDisturbButton = Me.imports.dndBtnGObject;
3 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/correctClass332.js:
--------------------------------------------------------------------------------
1 | const Me = imports.misc.extensionUtils.getCurrentExtension();
2 | var DoNotDisturbButton = Me.imports.dndBtnGObject;
3 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/available-notifications-symbolic.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/busy-notifications-symbolic.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/max-window-effect/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "_generated": "Generated by SweetTooth, do not edit",
3 | "description": "Maximized window sets panel to opaque black.",
4 | "extension-id": "max-window-effect",
5 | "name": "Maximized Window Effect",
6 | "shell-version": [
7 | "3.8",
8 | "3.10",
9 | "3.12",
10 | "3.14"
11 | ],
12 | "url": "https://nls1729.github.io",
13 | "uuid": "max-window-effect@nls1729",
14 | "version": 0
15 | }
16 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/metadata.json.in:
--------------------------------------------------------------------------------
1 | {
2 | "_generated": "Generated by SweetTooth, do not edit",
3 | "description": "Indicate busy status to block display of notifications and mute sounds. User options are provided to automatically set busy status at session start and schedule timeout of busy status.",
4 | "extension-id": "donotdisturb-button",
5 | "gettext-domain": "donotdisturb-button-extension",
6 | "name": "Do Not Disturb Button",
7 | "settings-schema": "org.gnome.shell.extensions.donotdisturb-button",
8 | "shell-version": [ GSVERSIONS ],
9 | "url": "https://nls1729.github.io/donotdisturb_button.html",
10 | "uuid": "donotdisturb-button@nls1729",
11 | "version": VERSION
12 | }
13 |
--------------------------------------------------------------------------------
/activities-config@nls1729/stylesheet.css:
--------------------------------------------------------------------------------
1 |
2 | .msg-text {
3 | font-size: 16px;
4 | font-family: Monospace;
5 | color: #FFFFFF;
6 | background-color: rgba(0,0,0,0.90);
7 | border-radius: 5px;
8 | padding: .5em;
9 | }
10 |
11 | .title-text {
12 | font-size: 16px;
13 | font-family: Monospace;
14 | font-weight: bold;
15 | color: #FFFFFF;
16 | background-color: rgba(0,0,0,0.90);
17 | border-radius: 5px;
18 | padding: .5em;
19 | }
20 |
21 | .close-text {
22 | font-size: 16px;
23 | font-family: Monospace;
24 | font-weight: bold;
25 | color: #4C80CC;
26 | background-color: rgba(0,0,0,0.90);
27 | border-radius: 5px;
28 | padding: .5em;
29 | }
30 |
--------------------------------------------------------------------------------
/activities-config@nls1729/metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "_generated": "Generated by SweetTooth, do not edit",
3 | "description": "Configure the Activities Button and Top Panel. Select an icon. Change the text. Disable Hot Corner or set the Hot Corner Threshold. Set Panel Background color and transparency plus much more to enhance your desktop. Click the icon or text with the secondary mouse button to launch the GS Extension Prefs.",
4 | "extension-id": "activities-config",
5 | "gettext-domain": "activities-config-extension",
6 | "name": "Activities Configurator",
7 | "settings-schema": "org.gnome.shell.extensions.activities-config",
8 | "shell-version": [ "3.36", "3.38" ],
9 | "url": "https://nls1729.github.io/activities_config.html",
10 | "uuid": "activities-config@nls1729",
11 | "version": 89
12 | }
13 |
--------------------------------------------------------------------------------
/activities-config@nls1729/metadata.json.in:
--------------------------------------------------------------------------------
1 | {
2 | "_generated": "Generated by SweetTooth, do not edit",
3 | "description": "Configure the Activities Button and Top Panel. Select an icon. Change the text. Disable Hot Corner or set the Hot Corner Threshold. Set Panel Background color and transparency plus much more to enhance your desktop. Click the icon or text with the secondary mouse button to launch the GS Extension Prefs.",
4 | "extension-id": "activities-config",
5 | "gettext-domain": "activities-config-extension",
6 | "name": "Activities Configurator",
7 | "settings-schema": "org.gnome.shell.extensions.activities-config",
8 | "shell-version": [ GSVERSIONS ],
9 | "url": "https://nls1729.github.io/activities_config.html",
10 | "uuid": "activities-config@nls1729",
11 | "version": VERSION
12 | }
13 |
--------------------------------------------------------------------------------
/max-window-effect/README.txt:
--------------------------------------------------------------------------------
1 | Maximized Window Effect - Gnome Shell Extension
2 |
3 | When a window is maximized on the primary screen the panel is set to
4 | opaque black. This extension can be used in conjunction with themes
5 | that set the panel transparent or the panel color is not compatible
6 | with a maximized window.
7 |
8 | This extension is not compatible with the Activities Configurator
9 | Extension.
10 |
11 | 2014-11-04 Version 1.
12 |
13 | 2014-11-11 Added logic to save the color of the icons and text on the
14 | panel. When the panel color is changed to black the text and icons are
15 | changed to white. Then the panel color is restored the original text
16 | and icon color is restored. Some themes can change element colors in
17 | ways not compatible with this extension. This change makes the extension
18 | compatible with more themes but not all.
19 |
20 | ----
21 | zip: 2014-11-11
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | acme-code
2 | =========
3 | Effective March 29, 2021 I will no longer maintain the following Gnome Shell Extensions:
4 | I give my permission to anyone who may want to become the maintainer.
5 | I no not have the free time or energy necessary to maintain the extensions.
6 |
7 |
8 | This repository contains Gnome Shell Extensions and other supporting
9 | files. Extensions which are available from the Gnome Shell Extension
10 | Website: https://extensions.gnome.org are tagged with "ego".
11 |
12 | To clone this repository:
13 | git clone https://github.com/nls1729/acme-code
14 |
15 | Additional information is available at:
16 | https://nls1729.github.io
17 |
18 |
19 | | activities-config | Activities Configurator | ego |
20 | | donotdisturb-button | Do Not Disturb Button | ego |
21 | | extension-reloader | Gnome Shell Extension Reloader | ego |
22 | | max-window-effect | Max Window Effect | no |
23 |
24 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/metadata.json.in:
--------------------------------------------------------------------------------
1 | {
2 | "_generated": "Generated by SweetTooth, do not edit",
3 | "description": "This extension is intended for extension writers. The extension has been changed so any installed extension can be reloaded. The extension's panel button indicates when the current session is Wayland. When an extension is reloaded the current session must be restarted to load the changes into memory (unless the extension changes from the ERROR state to the ENABLED state). If the current session is an Xorg session the Alt F2 r sequence can be used to perform the restart. If the extension is in the DISABLED state it is enabled before the reload. Please see the extension website for additonal details.",
4 | "extension-id": "extension-reloader",
5 | "gettext-domain": "nls1729-extensions",
6 | "name": "Gnome Shell Extension Reloader",
7 | "settings-schema": "org.gnome.shell.extensions.extension-reloader",
8 | "shell-version": [ GSVERSIONS ],
9 | "url": "https://nls1729.github.io/extension-reloader.html",
10 | "uuid": "extension-reloader@nls1729",
11 | "version": VERSION
12 | }
13 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/emblem-synchronizing-symbolic.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/max-window-effect/Makefile:
--------------------------------------------------------------------------------
1 | # Maximized Window Effect Makefile
2 |
3 | # Before making zip file insure all changes have been committed.
4 | # README.txt is modified to indicate the date and time the zip file was
5 | # created and the current git commit. VERSION should be set to the
6 | # current extension version.
7 |
8 | UUID = max-window-effect@nls1729
9 | MODULES = README.txt COPYING extension.js metadata.json
10 | ZIPDATE = $(shell date +"%F %H:%M:%S")
11 | EXTENSIONS_DIR = ~/.local/share/gnome-shell/extensions
12 | COMMIT = $(shell cd .. ; git rev-parse HEAD)
13 | VERSION = $(shell cat ./VERSION)
14 |
15 | all: extension
16 |
17 | extension: $(MODULES)
18 |
19 | _build: all
20 | -rm -fR ./_build
21 | mkdir -p _build
22 | cp $(MODULES) _build
23 | sed -i 's/"version": 0/"version": $(VERSION)/' _build/metadata.json;
24 | sed -i 's/^zip: .*$\/zip: $(ZIPDATE) Commit: $(COMMIT)/' _build/README.txt;
25 |
26 | zip-file: _build
27 | cd _build ; \
28 | zip -qr "$(UUID).zip" .
29 | mv _build/$(UUID).zip ./
30 | -rm -fR _build
31 |
32 | install: _build
33 | rm -rf $(EXTENSIONS_DIR)/$(UUID)
34 | mkdir -p $(EXTENSIONS_DIR)/$(UUID)
35 | cp -r ./_build/* $(EXTENSIONS_DIR)/$(UUID)/
36 | -rm -fR _build
37 | echo done
38 |
39 | clean:
40 | rm -f ./*.zip
41 | rm -f ./.~
42 | rm -f ./*~
43 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/schemas/schema.xml.in:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | "EPVERSION"
6 | Extension version.
7 | Extension version for display in extension preferences.
8 |
9 |
10 | GSPVERSIONS
11 | Supported gnome-shell version(s).
12 | Supported gnome-shell version(s) for display in extension preferences.
13 |
14 |
15 | true
16 | Center if true.
17 | If true panel button icon position left center or right center.
18 |
19 |
20 | true
21 | Left if true.
22 | Panel button icon position left, right, left center, or right center.
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/schemas/org.gnome.shell.extensions.extension-reloader.gschema.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | "12"
6 | Extension version.
7 | Extension version for display in extension preferences.
8 |
9 |
10 | "3.36"
11 | Supported gnome-shell version(s).
12 | Supported gnome-shell version(s) for display in extension preferences.
13 |
14 |
15 | true
16 | Center if true.
17 | If true panel button icon position left center or right center.
18 |
19 |
20 | true
21 | Left if true.
22 | Panel button icon position left, right, left center, or right center.
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/po/el.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 11:14+0200\n"
6 | "PO-Revision-Date: 2017-05-21 11:14+0200\n"
7 | "Last-Translator: Jonatan Hatakeyama Zeidler \n"
8 | "Language-Team: Underdogs\n"
9 | "Language: el\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 2.0.1\n"
15 |
16 | #: extension.js:57
17 | msgid "Unknown"
18 | msgstr ""
19 |
20 | #: extension.js:58
21 | msgid "Enabled"
22 | msgstr ""
23 |
24 | #: extension.js:59
25 | msgid "Disabled"
26 | msgstr ""
27 |
28 | #: extension.js:60
29 | msgid "Error"
30 | msgstr ""
31 |
32 | #: extension.js:61
33 | msgid "Out of Date"
34 | msgstr ""
35 |
36 | #: extension.js:62
37 | msgid "Downloading"
38 | msgstr ""
39 |
40 | #: extension.js:63
41 | msgid "Initialized"
42 | msgstr ""
43 |
44 | #: extension.js:111
45 | msgid "Reloading completed"
46 | msgstr ""
47 |
48 | #: extension.js:114
49 | msgid "Error reloading"
50 | msgstr ""
51 |
52 | #: extension.js:138
53 | msgid "Gnome Shell Extension Reloader"
54 | msgstr ""
55 |
56 | #: notify.js:39
57 | msgid "Extension"
58 | msgstr ""
59 |
60 | #: prefs.js:59
61 | msgid "Button Location"
62 | msgstr "Θέση κουμπιού"
63 |
64 | #: prefs.js:60
65 | msgid "Center"
66 | msgstr "Κέντρο"
67 |
68 | #: prefs.js:61
69 | msgid "Left"
70 | msgstr "Αριστερά"
71 |
72 | #: prefs.js:62
73 | msgid "Right"
74 | msgstr "Δεξιά"
75 |
76 | #: prefs.js:70
77 | msgid "Website"
78 | msgstr "δικτυακός τόπος"
79 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/po/fr.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 11:14+0200\n"
6 | "PO-Revision-Date: 2017-05-21 11:14+0200\n"
7 | "Last-Translator: Jonatan Hatakeyama Zeidler \n"
8 | "Language-Team: Underdogs\n"
9 | "Language: fr\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 2.0.1\n"
15 |
16 | #: extension.js:57
17 | msgid "Unknown"
18 | msgstr ""
19 |
20 | #: extension.js:58
21 | msgid "Enabled"
22 | msgstr ""
23 |
24 | #: extension.js:59
25 | msgid "Disabled"
26 | msgstr ""
27 |
28 | #: extension.js:60
29 | msgid "Error"
30 | msgstr ""
31 |
32 | #: extension.js:61
33 | msgid "Out of Date"
34 | msgstr ""
35 |
36 | #: extension.js:62
37 | msgid "Downloading"
38 | msgstr ""
39 |
40 | #: extension.js:63
41 | msgid "Initialized"
42 | msgstr ""
43 |
44 | #: extension.js:111
45 | msgid "Reloading completed"
46 | msgstr ""
47 |
48 | #: extension.js:114
49 | msgid "Error reloading"
50 | msgstr ""
51 |
52 | #: extension.js:138
53 | msgid "Gnome Shell Extension Reloader"
54 | msgstr ""
55 |
56 | #: notify.js:39
57 | msgid "Extension"
58 | msgstr ""
59 |
60 | #: prefs.js:59
61 | msgid "Button Location"
62 | msgstr "Emplacement du bouton"
63 |
64 | #: prefs.js:60
65 | msgid "Center"
66 | msgstr "centre"
67 |
68 | #: prefs.js:61
69 | msgid "Left"
70 | msgstr "à gauche"
71 |
72 | #: prefs.js:62
73 | msgid "Right"
74 | msgstr "à droite"
75 |
76 | #: prefs.js:70
77 | msgid "Website"
78 | msgstr "site Internet"
79 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/po/it.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 11:14+0200\n"
6 | "PO-Revision-Date: 2017-05-21 11:14+0200\n"
7 | "Last-Translator: Jonatan Hatakeyama Zeidler \n"
8 | "Language-Team: Underdogs\n"
9 | "Language: it\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 2.0.1\n"
15 |
16 | #: extension.js:57
17 | msgid "Unknown"
18 | msgstr ""
19 |
20 | #: extension.js:58
21 | msgid "Enabled"
22 | msgstr ""
23 |
24 | #: extension.js:59
25 | msgid "Disabled"
26 | msgstr ""
27 |
28 | #: extension.js:60
29 | msgid "Error"
30 | msgstr ""
31 |
32 | #: extension.js:61
33 | msgid "Out of Date"
34 | msgstr ""
35 |
36 | #: extension.js:62
37 | msgid "Downloading"
38 | msgstr ""
39 |
40 | #: extension.js:63
41 | msgid "Initialized"
42 | msgstr ""
43 |
44 | #: extension.js:111
45 | msgid "Reloading completed"
46 | msgstr ""
47 |
48 | #: extension.js:114
49 | msgid "Error reloading"
50 | msgstr ""
51 |
52 | #: extension.js:138
53 | msgid "Gnome Shell Extension Reloader"
54 | msgstr ""
55 |
56 | #: notify.js:39
57 | msgid "Extension"
58 | msgstr ""
59 |
60 | #: prefs.js:59
61 | msgid "Button Location"
62 | msgstr "Pulsante di posizione"
63 |
64 | #: prefs.js:60
65 | msgid "Center"
66 | msgstr "Centro"
67 |
68 | #: prefs.js:61
69 | msgid "Left"
70 | msgstr "Lato sinistro"
71 |
72 | #: prefs.js:62
73 | msgid "Right"
74 | msgstr "Lato destro"
75 |
76 | #: prefs.js:70
77 | msgid "Website"
78 | msgstr "Sito web"
79 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/po/es.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 11:14+0200\n"
6 | "PO-Revision-Date: 2017-05-21 11:14+0200\n"
7 | "Last-Translator: Jonatan Hatakeyama Zeidler \n"
8 | "Language-Team: Underdogs\n"
9 | "Language: es\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 2.0.1\n"
15 |
16 | #: extension.js:57
17 | msgid "Unknown"
18 | msgstr ""
19 |
20 | #: extension.js:58
21 | msgid "Enabled"
22 | msgstr ""
23 |
24 | #: extension.js:59
25 | msgid "Disabled"
26 | msgstr ""
27 |
28 | #: extension.js:60
29 | msgid "Error"
30 | msgstr ""
31 |
32 | #: extension.js:61
33 | msgid "Out of Date"
34 | msgstr ""
35 |
36 | #: extension.js:62
37 | msgid "Downloading"
38 | msgstr ""
39 |
40 | #: extension.js:63
41 | msgid "Initialized"
42 | msgstr ""
43 |
44 | #: extension.js:111
45 | msgid "Reloading completed"
46 | msgstr ""
47 |
48 | #: extension.js:114
49 | msgid "Error reloading"
50 | msgstr ""
51 |
52 | #: extension.js:138
53 | msgid "Gnome Shell Extension Reloader"
54 | msgstr ""
55 |
56 | #: notify.js:39
57 | msgid "Extension"
58 | msgstr ""
59 |
60 | #: prefs.js:59
61 | msgid "Button Location"
62 | msgstr "Ubicación del botón"
63 |
64 | #: prefs.js:60
65 | msgid "Center"
66 | msgstr "el centro"
67 |
68 | #: prefs.js:61
69 | msgid "Left"
70 | msgstr "a la izquierda"
71 |
72 | #: prefs.js:62
73 | msgid "Right"
74 | msgstr "a la derecha"
75 |
76 | #: prefs.js:70
77 | msgid "Website"
78 | msgstr "sitio web"
79 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/po/fr.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 11:11+0200\n"
6 | "PO-Revision-Date: 2017-05-21 11:11+0200\n"
7 | "Last-Translator: Jonatan Hatakeyama Zeidler \n"
8 | "Language-Team: Underdogs\n"
9 | "Language: fr\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 2.0.1\n"
15 |
16 | #: prefs.js:49
17 | msgid ""
18 | "To edit shortcut, click the row and hold down the new keys or press "
19 | "Backspace to clear."
20 | msgstr ""
21 | "Pour modifier un raccourci, cliquez sur la ligne et actionnez les nouvelles "
22 | "touches, ou bien pressez « Retour arrière » pour l'effacer."
23 |
24 | #: prefs.js:50
25 | msgid "Edit"
26 | msgstr "Modifier"
27 |
28 | #: prefs.js:51
29 | msgid "Button Location"
30 | msgstr "Emplacement du bouton"
31 |
32 | #: prefs.js:52
33 | msgid "Center"
34 | msgstr "centre"
35 |
36 | #: prefs.js:53
37 | msgid "Show Notification Count"
38 | msgstr "Montrer mon compte de notification"
39 |
40 | #: prefs.js:54
41 | msgid "Left"
42 | msgstr "à gauche"
43 |
44 | #: prefs.js:55
45 | msgid "Right"
46 | msgstr "à droite"
47 |
48 | #: prefs.js:67
49 | msgid "Busy"
50 | msgstr "Occupé"
51 |
52 | #: prefs.js:69
53 | msgid "Website"
54 | msgstr "Site Internet"
55 |
56 | #: prefs.js:66
57 | msgid "Enable"
58 | msgstr "Activer"
59 |
60 | #: prefs.js:68
61 | msgid "Available"
62 | msgstr "Disponible"
63 |
64 | #: prefs.js:73
65 | msgid "Busy State Override At Session Start"
66 | msgstr "Remplacer l'état occupé au début de la session"
67 |
68 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/po/de.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 10:32+0200\n"
6 | "PO-Revision-Date: 2017-05-21 10:35+0200\n"
7 | "Last-Translator: Jonatan Hatakeyama Zeidler \n"
8 | "Language-Team: Underdogs\n"
9 | "Language: de\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 2.0.1\n"
15 |
16 | #: prefs.js:59
17 | msgid "Button Location"
18 | msgstr "Indikatorposition"
19 |
20 | #: prefs.js:60
21 | msgid "Center"
22 | msgstr "Mitte"
23 |
24 | #: prefs.js:61
25 | msgid "Left"
26 | msgstr "Links"
27 |
28 | #: prefs.js:62
29 | msgid "Right"
30 | msgstr "Rechts"
31 |
32 | #: prefs.js:70
33 | msgid "Website"
34 | msgstr "Webseite"
35 |
36 | #: extension.js:57
37 | msgid "Unknown"
38 | msgstr "Unbekannt"
39 |
40 | #: extension.js:58
41 | msgid "Enabled"
42 | msgstr "Aktiviert"
43 |
44 | #: extension.js:59
45 | msgid "Disabled"
46 | msgstr "Deaktiviert"
47 |
48 | #: extension.js:60
49 | msgid "Error"
50 | msgstr "Fehler"
51 |
52 | #: extension.js:61
53 | msgid "Out of Date"
54 | msgstr "Veraltet"
55 |
56 | #: extension.js:62
57 | msgid "Downloading"
58 | msgstr "Wird heruntergeladen"
59 |
60 | #: extension.js:63
61 | msgid "Initialized"
62 | msgstr "Initialisiert"
63 |
64 | #: extension.js:111
65 | msgid "Reloading completed"
66 | msgstr "Neuladen abgeschlossen"
67 |
68 | #: extension.js:114
69 | msgid "Error reloading"
70 | msgstr "Fehler beim Neuladen"
71 |
72 | #: extension.js:138
73 | msgid "Gnome Shell Extension Reloader"
74 | msgstr "GNOME Shell-Erweiterungen neuladen"
75 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/po/es.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 11:10+0200\n"
6 | "PO-Revision-Date: 2017-05-21 11:10+0200\n"
7 | "Last-Translator: Jonatan Hatakeyama Zeidler \n"
8 | "Language-Team: Underdogs\n"
9 | "Language: es\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 2.0.1\n"
15 |
16 | #: prefs.js:49
17 | msgid ""
18 | "To edit shortcut, click the row and hold down the new keys or press "
19 | "Backspace to clear."
20 | msgstr ""
21 | "Para editar un atajo nuevo pulse en la fila y mantenga pulsadas las teclas "
22 | "nuevas, o pulse Retroceso para eliminarla."
23 |
24 | #: prefs.js:50
25 | msgid "Edit"
26 | msgstr "Editar"
27 |
28 | #: prefs.js:51
29 | msgid "Button Location"
30 | msgstr "Ubicación del botón"
31 |
32 | #: prefs.js:52
33 | msgid "Center"
34 | msgstr "el centro"
35 |
36 | #: prefs.js:53
37 | msgid "Show Notification Count"
38 | msgstr "Mostrar la cuenta de notificaciones"
39 |
40 | #: prefs.js:54
41 | msgid "Left"
42 | msgstr "a la izquierda"
43 |
44 | #: prefs.js:55
45 | msgid "Right"
46 | msgstr "a la derecha"
47 |
48 | #: prefs.js:67
49 | msgid "Busy"
50 | msgstr "Ocupado"
51 |
52 | #: prefs.js:69
53 | msgid "Website"
54 | msgstr "sitio web"
55 |
56 | #: prefs.js:66
57 | msgid "Enable"
58 | msgstr "Habilitar"
59 |
60 | #: prefs.js:68
61 | msgid "Available"
62 | msgstr "Disponible"
63 |
64 | #: prefs.js:73
65 | msgid "Busy State Override At Session Start"
66 | msgstr "Ocupado Estado anula en el inicio de la sesión"
67 |
68 | #~ msgid "Disabled"
69 | #~ msgstr "Desactivado"
70 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/po/it.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 11:11+0200\n"
6 | "PO-Revision-Date: 2017-05-21 11:11+0200\n"
7 | "Last-Translator: Jonatan Hatakeyama Zeidler \n"
8 | "Language-Team: Underdogs\n"
9 | "Language: it\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 2.0.1\n"
15 |
16 | #: prefs.js:49
17 | msgid ""
18 | "To edit shortcut, click the row and hold down the new keys or press "
19 | "Backspace to clear."
20 | msgstr ""
21 | "Per modificare una scorciatoia, fare clic sulla riga e premere i nuovi tasti "
22 | "oppure premere «Backspace» per cancellarla."
23 |
24 | #: prefs.js:50
25 | msgid "Edit"
26 | msgstr "Modifica"
27 |
28 | #: prefs.js:51
29 | msgid "Button Location"
30 | msgstr "Pulsante di posizione"
31 |
32 | #: prefs.js:52
33 | msgid "Center"
34 | msgstr "Centro"
35 |
36 | #: prefs.js:53
37 | msgid "Show Notification Count"
38 | msgstr "Mostra conteggio di notifica"
39 |
40 | #: prefs.js:54
41 | msgid "Left"
42 | msgstr "Lato sinistro"
43 |
44 | #: prefs.js:55
45 | msgid "Right"
46 | msgstr "Lato destro"
47 |
48 | #: prefs.js:67
49 | msgid "Busy"
50 | msgstr "Occupata"
51 |
52 | #: prefs.js:69
53 | msgid "Website"
54 | msgstr "Sito web"
55 |
56 | #: prefs.js:66
57 | msgid "Enable"
58 | msgstr "Abilitare"
59 |
60 | #: prefs.js:68
61 | msgid "Available"
62 | msgstr "A disposizione"
63 |
64 | #: prefs.js:73
65 | msgid "Busy State Override At Session Start"
66 | msgstr "Sovrascrizione stato occupato durante l'avvio della sessione"
67 |
68 | #~ msgid "Disabled"
69 | #~ msgstr "Disabilitato"
70 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/po/el.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 11:10+0200\n"
6 | "PO-Revision-Date: 2017-05-21 11:10+0200\n"
7 | "Last-Translator: Jonatan Hatakeyama Zeidler \n"
8 | "Language-Team: Underdogs\n"
9 | "Language: el\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 2.0.1\n"
15 |
16 | #: prefs.js:49
17 | msgid ""
18 | "To edit shortcut, click the row and hold down the new keys or press "
19 | "Backspace to clear."
20 | msgstr ""
21 | "Για να επεξεργαστείτε τη συντόμευση, κάντε κλικ στην γραμμή και κρατήστε "
22 | "πατημένα τα νέα πλήκτρα ή πατήστε το Backspace για εκκαθάριση."
23 |
24 | #: prefs.js:50
25 | msgid "Edit"
26 | msgstr "Επεξεργασία"
27 |
28 | #: prefs.js:51
29 | msgid "Button Location"
30 | msgstr "Θέση κουμπιού"
31 |
32 | #: prefs.js:52
33 | msgid "Center"
34 | msgstr "Κέντρο"
35 |
36 | #: prefs.js:53
37 | msgid "Show Notification Count"
38 | msgstr "Εμφάνιση αριθμού ειδοποιήσεων"
39 |
40 | #: prefs.js:54
41 | msgid "Left"
42 | msgstr "Αριστερά"
43 |
44 | #: prefs.js:55
45 | msgid "Right"
46 | msgstr "Δεξιά"
47 |
48 | #: prefs.js:67
49 | msgid "Busy"
50 | msgstr "Απασχολημένος"
51 |
52 | #: prefs.js:69
53 | msgid "Website"
54 | msgstr "δικτυακός τόπος"
55 |
56 | #: prefs.js:66
57 | msgid "Enable"
58 | msgstr "επιτρέπω"
59 |
60 | #: prefs.js:68
61 | msgid "Available"
62 | msgstr "Διαθέσιμος"
63 |
64 | #: prefs.js:73
65 | msgid "Busy State Override At Session Start"
66 | msgstr "Κατειλημμένη κατάσταση κατά την έναρξη λειτουργίας της περιόδου σύνδεσης"
67 |
68 | #~ msgid "Disabled"
69 | #~ msgstr "Απενεργοποιημένο"
70 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/po/de.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 11:10+0200\n"
6 | "PO-Revision-Date: 2017-05-21 11:10+0200\n"
7 | "Last-Translator: Jonatan Hatakeyama Zeidler \n"
8 | "Language-Team: Underdogs\n"
9 | "Language: de\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 | "X-Generator: Poedit 2.0.1\n"
15 |
16 | #: prefs.js:51
17 | msgid ""
18 | "To edit shortcut, click the row and hold down the new keys or press "
19 | "Backspace to clear."
20 | msgstr ""
21 | "Um eine Tastenkombination zu bearbeiten, klicken Sie auf die Zeile und "
22 | "drücken Sie die neue Tastenkombination, oder drücken Sie die Rücktaste, um "
23 | "sie zu löschen."
24 |
25 | #: prefs.js:52
26 | msgid "Edit"
27 | msgstr "Bearbeiten"
28 |
29 | #: prefs.js:53
30 | msgid "Center"
31 | msgstr "Mitte"
32 |
33 | #: prefs.js:54
34 | msgid "Show Notification Count"
35 | msgstr "Anzahl der Benachrichtigungen anzeigen"
36 |
37 | #: prefs.js:55
38 | msgid "Left"
39 | msgstr "Links"
40 |
41 | #: prefs.js:56
42 | msgid "Right"
43 | msgstr "Rechts"
44 |
45 | #: prefs.js:59
46 | msgid "Button Location"
47 | msgstr "Indikatorposition"
48 |
49 | #: prefs.js:66
50 | msgid "Enable"
51 | msgstr "Aktivieren"
52 |
53 | #: prefs.js:67
54 | msgid "Busy"
55 | msgstr "Beschäftigt"
56 |
57 | #: prefs.js:68
58 | msgid "Available"
59 | msgstr "Verfügbar"
60 |
61 | #: prefs.js:73
62 | msgid "Busy State Override At Session Start"
63 | msgstr "Beschäftigt-Status bei Session-Start überschreiben"
64 |
65 | #: prefs.js:91
66 | msgid "Website"
67 | msgstr "Webseite"
68 |
69 | #~ msgid "Disabled"
70 | #~ msgstr "Deaktiviert"
71 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/po/cs.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: nls1729-extensions\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2017-05-21 11:10+0200\n"
6 | "PO-Revision-Date: 2018-08-10 12:46+0200\n"
7 | "Last-Translator: Pavel Borecki \n"
8 | "Language-Team: \n"
9 | "Language: cs\n"
10 | "MIME-Version: 1.0\n"
11 | "Content-Type: text/plain; charset=UTF-8\n"
12 | "Content-Transfer-Encoding: 8bit\n"
13 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
14 | "X-Generator: Poedit 2.0.6\n"
15 |
16 | #: prefs.js:51
17 | msgid ""
18 | "To edit shortcut, click the row and hold down the new keys or press "
19 | "Backspace to clear."
20 | msgstr ""
21 | "Klávesovou zkratku pro přepínání stavu upravíte kliknutím na řádek a "
22 | "stisknutím zvolených kláves. Pokud ovládání klávesami nechcete používat, "
23 | "případné přiřazení odeberete stisknutím klávesy Backspace."
24 |
25 | #: prefs.js:52
26 | msgid "Edit"
27 | msgstr "Upravit"
28 |
29 | #: prefs.js:53
30 | msgid "Center"
31 | msgstr "Uprostřed"
32 |
33 | #: prefs.js:54
34 | msgid "Show Notification Count"
35 | msgstr "Zobrazovat počet oznámení"
36 |
37 | #: prefs.js:55
38 | msgid "Left"
39 | msgstr "Vlevo"
40 |
41 | #: prefs.js:56
42 | msgid "Right"
43 | msgstr "Vpravo"
44 |
45 | #: prefs.js:59
46 | msgid "Button Location"
47 | msgstr "Umístění tlačítka"
48 |
49 | #: prefs.js:66
50 | msgid "Enable"
51 | msgstr "Zapnout"
52 |
53 | #: prefs.js:67
54 | msgid "Busy"
55 | msgstr "Nerušit (nezobrazovat oznámení)"
56 |
57 | #: prefs.js:68
58 | msgid "Available"
59 | msgstr "Vnímám (zobrazovat oznámení)"
60 |
61 | #: prefs.js:73
62 | msgid "Busy State Override At Session Start"
63 | msgstr ""
64 | "Zapnout přenastavení stavu při přihlášení se do systému na ten níže "
65 | "zvolený?"
66 |
67 | #: prefs.js:91
68 | msgid "Website"
69 | msgstr "Webová stránka"
70 |
--------------------------------------------------------------------------------
/activities-config@nls1729/keys.js:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | Activities Configurator Gnome Shell Extension
4 |
5 | Copyright (c) 2012-2020 Norman L. Smith
6 |
7 | This extension is free software; you can redistribute it and/or
8 | modify it under the terms of the GNU General Public License
9 | as published by the Free Software Foundation; either version 2
10 | of the License, or (at your option) any later version.
11 |
12 | This extension is distributed in the hope that it will be useful,
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | GNU General Public License for more details.
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program. If not, see
19 | < https://www.gnu.org/licenses/old-licenses/gpl-2.0.html >.
20 |
21 | This extension is a derived work of the Gnome Shell.
22 | */
23 |
24 | var REMOVED = 'activities-config-button-removed';
25 | var NEW_ICO = 'activities-config-button-icon-path';
26 | var ORI_TXT = 'original-activities-button-text';
27 | var NEW_TXT = 'activities-config-button-text';
28 | var HOTC_TO = 'activities-config-hot-corner-delay';
29 | var HOTC_PT = 'activities-config-hot-corner-threshold';
30 | var NO_HOTC = 'activities-config-hot-corner';
31 | var NO_ICON = 'activities-config-button-no-icon';
32 | var NO_TEXT = 'activities-config-button-no-text';
33 | var PAD_TXT = 'activities-text-padding';
34 | var PAD_ICO = 'activities-icon-padding';
35 | var SCF_ICO = 'activities-icon-scale-factor';
36 | var TRS_PAN = 'transparent-panel';
37 | var CON_DET = 'enable-conflict-detection';
38 | var DISABLE_ENABLE_DELAY = 'disable-enable-delay';
39 | var COLOURS = 'panel-background-color-hex-rgb';
40 | var HIDE_RC = 'panel-hide-rounded-corners';
41 | var HIDE_APPMBI = 'panel-hide-app-menu-button-icon';
42 | var BARRIERS = 'pointer-barriers-supported';
43 | var FIRST_ENABLE = 'first-enable';
44 | var MAX_WIN_EFFECT = 'maximized-window-effect';
45 | var SHADOW_COLOR = 'panel-shadow-color-hex-rgb';
46 | var SHADOW_TRANS = 'transparent-shadow';
47 | var SHADOW_LEN = 'panel-shadow-vertical-length';
48 | var SHADOW_BLUR = 'panel-shadow-blur-radius';
49 | var SHADOW_SPRED = 'panel-shadow-spread-radius';
50 | var OVERR_THEME = 'override-theme';
51 | var SHELL_THEME_ID = 'shell-theme-id';
52 | var SHOW_OVERVIEW = 'show-overview';
53 | var BTN_POSITION = 'position-right';
54 | var TILE_OFF = 'tile-max-effect-off';
55 | var EPVERSION = 'extension-version';
56 | var GSPVERSION = 'shell-version';
57 | var ICON_FILE = '/face-smile-3.svg'; // From Tango Project - Public Domain
58 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/Makefile:
--------------------------------------------------------------------------------
1 | .ONESHELL:
2 | UUID = extension-reloader@nls1729
3 | FILES = extension.js COPYING emblem-synchronizing-symbolic.svg
4 | POFILES = $(wildcard po/*.po)
5 | JSFILES = extension.js prefs.js
6 | ZIPDATE = $(shell date +"%F %H:%M")
7 | ZIPTS = $(shell date +"%y%j%H%M")
8 | COMMIT = $(shell git rev-parse --short=8 HEAD)
9 | EXTENSIONS_DIR = ~/.local/share/gnome-shell/extensions
10 | GSVERSIONS = $(shell cat ./GSVERSIONS)
11 | VERSION = $(shell cat ./VERSION)
12 | SCHEMAXMLIN = ./schemas/schema.xml.in
13 | GSCHEMAXML = ./schemas/org.gnome.shell.extensions.extension-reloader.gschema.xml
14 | BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
15 | ifeq ($(BRANCH),master)
16 | ZIPNAME = extension-reloader-$(ZIPTS)@nls1729
17 | else
18 | ZIPNAME = extension-reloader-$(ZIPTS)$(BRANCH)@nls1729
19 | endif
20 |
21 | all: extension
22 |
23 | extension: ./schemas/gschemas.compiled $(POFILES:.po=.mo)
24 |
25 | ./schemas/gschemas.compiled: $(SCHEMAXMLIN)
26 | cat $(SCHEMAXMLIN) | sed "s/EPVERSION/$(VERSION)/" | sed "s/GSPVERSIONS/$(GSVERSIONS)/" > $(GSCHEMAXML)
27 | glib-compile-schemas ./schemas/
28 |
29 | ./po/%.mo: ./po/%.po
30 | msgfmt -c $< -o $@
31 |
32 | _build: all
33 | rm -rf ./_build
34 | mkdir -p _build
35 | xgettext $(JSFILES) -o ./_build/messages.pot;
36 | cat README.txt.in | sed "s/^zip file:.*$\/zip file: $(ZIPDATE) $(COMMIT)/" > ./_build/README.txt
37 | cat prefs.js | sed "s/Commit:.*$\/Commit: $(COMMIT) $(ZIPDATE) $(BRANCH)\";/" > ./_build/prefs.js
38 | cat metadata.json.in | sed "s/GSVERSIONS/$(GSVERSIONS)/" | sed "s/VERSION/$(VERSION)/" > _build/metadata.json
39 | cp $(FILES) _build
40 | mkdir -p _build/schemas
41 | cp schemas/*.xml _build/schemas/
42 | cp schemas/gschemas.compiled _build/schemas/
43 | mkdir -p _build/locale
44 |
45 | for langmo in $(POFILES:.po=.mo) ; do \
46 | langdir=_build/locale/`basename $$langmo .mo`; \
47 | mkdir -p $$langdir; \
48 | mkdir -p $$langdir/LC_MESSAGES; \
49 | cp $$langmo $$langdir/LC_MESSAGES/nls1729-extensions.mo; \
50 | done;
51 |
52 | zip-file: clean _build
53 | rm -f ./*.zip
54 | cd _build ; \
55 | zip -qr "$(ZIPNAME).zip" .; \
56 | mv $(ZIPNAME).zip .. ; \
57 | cd .. ;
58 | sha256sum "$(ZIPNAME).zip" > CHECKSUM
59 | rm -rf _build
60 |
61 | clean:
62 | rm -f ./schemas/gschemas.compiled
63 | rm -f ./po/*.mo
64 | rm -f ./*.zip
65 | rm -f ./.*~
66 | rm -f ./*~
67 | rm -f ./*.swp
68 | rm -rf _build
69 |
70 |
71 | install:
72 | rm -rf $(EXTENSIONS_DIR)/$(UUID)
73 | mkdir -p $(EXTENSIONS_DIR)/$(UUID)
74 | cp -f "$(UUID).zip" $(EXTENSIONS_DIR)/$(UUID)
75 | cd $(EXTENSIONS_DIR)/$(UUID); \
76 | unzip "$(ZIPNAME).zip"; \
77 | echo done
78 |
--------------------------------------------------------------------------------
/activities-config@nls1729/notify.js:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | Activities Configurator Gnome Shell Extension
4 |
5 | Copyright (c) 2012-2020 Norman L. Smith
6 |
7 | This extension is free software; you can redistribute it and/or
8 | modify it under the terms of the GNU General Public License
9 | as published by the Free Software Foundation; either version 2
10 | of the License, or (at your option) any later version.
11 |
12 | This extension is distributed in the hope that it will be useful,
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | GNU General Public License for more details.
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program. If not, see
19 | < https://www.gnu.org/licenses/old-licenses/gpl-2.0.html >.
20 |
21 | This extension is a derived work of the Gnome Shell.
22 | */
23 |
24 | const Main = imports.ui.main;
25 | const St = imports.gi.St;
26 |
27 | class VerboseNotify {
28 |
29 | constructor() {
30 | this._visible = false;
31 | this._box = new St.BoxLayout({ vertical: true });
32 | this._titleBin = new St.Bin();
33 | this._msgBin = new St.Bin();
34 | this._closeBtn = new St.Button({style_class: 'close-text'});
35 | this._clickedSig = this._closeBtn.connect('button-press-event', this._clicked.bind(this));
36 | this._box.add(this._titleBin);
37 | this._box.add(this._msgBin);
38 | this._box.add(this._closeBtn);
39 | this._titleBin.child = new St.Label({style_class: 'title-text'});
40 | this._msgBin.child = new St.Label({style_class: 'msg-text'});
41 | }
42 |
43 | _clicked() {
44 | if (this._visible)
45 | Main.uiGroup.remove_actor(this._box);
46 | this._visible = false;
47 | }
48 |
49 | _notify(titleText, msgText, closeText) {
50 | this._titleBin.child.set_text(titleText);
51 | this._msgBin.child.set_text(msgText);
52 | this._closeBtn.label = closeText;
53 | Main.uiGroup.add_actor(this._box);
54 | let monitor = Main.layoutManager.primaryMonitor;
55 | this._box.set_position(Math.floor(monitor.width / 2 - this._box.width / 2),
56 | Math.floor(monitor.height / 2 - this._box.height / 2));
57 | this._visible = true;
58 | }
59 |
60 | destroy() {
61 | if (this._visible)
62 | Main.uiGroup.remove_actor(this._box);
63 | this._closeBin.disconnect(this._clickedSig);
64 | this._box.destroy();
65 | }
66 | };
67 |
68 | function getVerboseNotify() {
69 | return new VerboseNotify();
70 | }
71 |
72 |
--------------------------------------------------------------------------------
/activities-config@nls1729/colors.js:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | Activities Configurator Gnome Shell Extension
4 |
5 | Copyright (c) 2012-2020 Norman L. Smith
6 |
7 | This extension is free software; you can redistribute it and/or
8 | modify it under the terms of the GNU General Public License
9 | as published by the Free Software Foundation; either version 2
10 | of the License, or (at your option) any later version.
11 |
12 | This extension is distributed in the hope that it will be useful,
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | GNU General Public License for more details.
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program. If not, see
19 | < https://www.gnu.org/licenses/old-licenses/gpl-2.0.html >.
20 |
21 | This extension is a derived work of the Gnome Shell.
22 | */
23 |
24 | const Clutter = imports.gi.Clutter;
25 | const Gdk = imports.gi.Gdk;
26 |
27 | /*
28 |
29 | Hex Color String RGB is "#rrggbb" in settings to match color chooser
30 | ColorRGB is {'red': N, 'green': N, 'blue': N} in extension.js is common format
31 | ColorStringCSS is returned as a RGB string "N,N,N" from ColorRGB
32 | ColorRGBandTransparency returns rgb as string "N,N,N" and transparency as string "T" from #rrggbbaa
33 | ClutterColor is returned as {'red': N, 'green': N, 'blue': N, 'alpha': N} from ColorRGB and opacity
34 | Where N is 0 - 255
35 | Where opacity is 0.0 - 1.0
36 | Where T is transparency 0-100
37 |
38 | */
39 |
40 | function getColorRGB(hexString) {
41 | let rr = parseInt(hexString.slice(1,3), 16);
42 | let gg = parseInt(hexString.slice(3,5), 16);
43 | let bb = parseInt(hexString.slice(5,7), 16);
44 | return {'red': rr, 'green': gg, 'blue': bb};
45 | }
46 |
47 | function getColorRGBandTransparency(color) {
48 | let alpha = 255 - parseInt(color.slice(7), 16);
49 | let transparency = 0;
50 | if (alpha == 255) {
51 | transparency = 100;
52 | } else {
53 | transparency = parseInt((alpha / 255) * 100);
54 | }
55 | let rgb = getColorStringCSS(getColorRGB(color.slice(0,7)));
56 | return({ rgb: rgb, transparency: transparency});
57 | }
58 |
59 |
60 | function getColorStringCSS(color) {
61 | return color['red'].toString() + ',' + color['green'].toString() + ',' + color['blue'].toString();
62 | }
63 |
64 | function getClutterColor(color, opacity) {
65 | let alphaValue = 0;
66 | if(opacity > 0) {
67 | let rawAlpha = 255 * opacity;
68 | alphaValue = parseInt(rawAlpha);
69 | }
70 | return new Clutter.Color({red: color['red'], green: color['green'], blue: color['blue'], alpha: alphaValue});
71 | }
72 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/Makefile330:
--------------------------------------------------------------------------------
1 | .ONESHELL:
2 |
3 | UUID = donotdisturb-button@nls1729
4 | IMAGES = available-yes.png available-no.png default-persistence.png gnome-session-reboot.png \
5 | arrow-right.png audio-volume-on.png audio-volume-muted.png \
6 | busy-notifications-symbolic.svg available-notifications-symbolic.svg
7 |
8 | MODULES = extension.js correctClass.js notify.js dndBtn.js dndBtnGObject.js
9 | POFILES = $(wildcard po/*.po)
10 | JSFILES = extension.js prefs.js notify.js correctClass.js dndBtn.js dndBtnGObject.js
11 | ZIPDATE = $(shell date +"%F %H:%M:%S")
12 | COMMIT = $(shell git rev-parse HEAD)
13 | EXTENSIONS_DIR = ~/.local/share/gnome-shell/extensions
14 | TOUCH = $(shell find . -type f)
15 | TIMESTAMP = $(shell date +"%y%j%H%M%S")
16 | GSVERSIONS = $(shell cat ./GSVERSIONS330)
17 | VERSION = $(shell cat ./VERSION330)
18 |
19 | all: extension
20 |
21 | extension: ./schemas/gschemas.compiled $(POFILES:.po=.mo)
22 |
23 | ./schemas/gschemas.compiled: ./schemas/org.gnome.shell.extensions.donotdisturb-button.gschema.xml
24 | glib-compile-schemas ./schemas/
25 |
26 | ./po/%.mo: ./po/%.po
27 | msgfmt -c $< -o $@;
28 |
29 | _build: all
30 | rm -rf _build
31 | mkdir -p _build
32 | xgettext $(JSFILES) -o _build/message.pot;
33 | cat README.txt | sed "s/^zip file:.*$\/zip file: $(ZIPDATE) $(COMMIT)/" > _build/README.txt
34 | cat prefs.js | sed "s/Commit: .*$\/Commit: $(COMMIT)\";/" > _build/prefs.js
35 | cat metadata.json | sed "s/GSVERSIONS/$(GSVERSIONS)/" | sed "s/VERSION/$(VERSION)/" > _build/metadata.json
36 | cat correctClass330.js > correctClass.js
37 | cp $(MODULES) _build
38 | cp $(IMAGES) _build
39 | cp COPYING _build
40 | mkdir -p _build/schemas
41 | cp schemas/*.xml _build/schemas/
42 | cp schemas/gschemas.compiled _build/schemas/
43 | mkdir -p _build/locale
44 | for langmo in $(POFILES:.po=.mo) ; do \
45 | langdir=_build/locale/`basename $$langmo .mo`; \
46 | mkdir -p $$langdir; \
47 | mkdir -p $$langdir/LC_MESSAGES; \
48 | cp $$langmo $$langdir/LC_MESSAGES/donotdisturb-button-extension.mo; \
49 | done;
50 |
51 | zip-file: _build
52 | rm -f ./*.zip
53 | cd _build ; \
54 | zip -qr "$(UUID).zip" .; \
55 | mv $(UUID).zip .. ; \
56 | cd .. ;
57 | sha256sum "$(UUID).zip" > CHECKSUM
58 | rm -rf _build
59 |
60 | clean:
61 | rm -f ./schemas/gschemas.compiled
62 | rm -f ./po/*.mo
63 | rm -f ./*.zip
64 | rm -f ./.~
65 | rm -f ./*~
66 | rm -rf _build
67 |
68 |
69 | touch:
70 | for file in $(TOUCH); do \
71 | touch $$file; \
72 | done;
73 |
74 | install:
75 | rm -rf $(EXTENSIONS_DIR)/$(UUID)
76 | mkdir -p $(EXTENSIONS_DIR)/$(UUID)
77 | cp -f "$(UUID).zip" $(EXTENSIONS_DIR)/$(UUID)
78 | cd $(EXTENSIONS_DIR)/$(UUID); \
79 | unzip "$(UUID).zip"; \
80 | echo done
81 |
82 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/Makefile332:
--------------------------------------------------------------------------------
1 | .ONESHELL:
2 |
3 | UUID = donotdisturb-button@nls1729
4 | IMAGES = available-yes.png available-no.png default-persistence.png gnome-session-reboot.png \
5 | arrow-right.png audio-volume-on.png audio-volume-muted.png \
6 | busy-notifications-symbolic.svg available-notifications-symbolic.svg
7 |
8 | MODULES = extension.js correctClass.js notify.js dndBtn.js dndBtnGObject.js
9 | POFILES = $(wildcard po/*.po)
10 | JSFILES = extension.js prefs.js notify.js correctClass.js dndBtn.js dndBtnGObject.js
11 | ZIPDATE = $(shell date +"%F %H:%M:%S")
12 | COMMIT = $(shell git rev-parse HEAD)
13 | EXTENSIONS_DIR = ~/.local/share/gnome-shell/extensions
14 | TOUCH = $(shell find . -type f)
15 | TIMESTAMP = $(shell date +"%y%j%H%M%S")
16 | GSVERSIONS = $(shell cat ./GSVERSIONS332)
17 | VERSION = $(shell cat ./VERSION332)
18 |
19 | all: extension
20 |
21 | extension: ./schemas/gschemas.compiled $(POFILES:.po=.mo)
22 |
23 | ./schemas/gschemas.compiled: ./schemas/org.gnome.shell.extensions.donotdisturb-button.gschema.xml
24 | glib-compile-schemas ./schemas/
25 |
26 | ./po/%.mo: ./po/%.po
27 | msgfmt -c $< -o $@;
28 |
29 | _build: all
30 | rm -rf _build
31 | mkdir -p _build
32 | xgettext $(JSFILES) -o _build/message.pot;
33 | cat README.txt | sed "s/^zip file:.*$\/zip file: $(ZIPDATE) $(COMMIT)/" > _build/README.txt
34 | cat prefs.js | sed "s/Commit: .*$\/Commit: $(COMMIT)\";/" > _build/prefs.js
35 | cat metadata.json | sed "s/GSVERSIONS/$(GSVERSIONS)/" | sed "s/VERSION/$(VERSION)/" > _build/metadata.json
36 | cat correctClass332.js > correctClass.js
37 | cp $(MODULES) _build
38 | cp $(IMAGES) _build
39 | cp COPYING _build
40 | mkdir -p _build/schemas
41 | cp schemas/*.xml _build/schemas/
42 | cp schemas/gschemas.compiled _build/schemas/
43 | mkdir -p _build/locale
44 | for langmo in $(POFILES:.po=.mo) ; do \
45 | langdir=_build/locale/`basename $$langmo .mo`; \
46 | mkdir -p $$langdir; \
47 | mkdir -p $$langdir/LC_MESSAGES; \
48 | cp $$langmo $$langdir/LC_MESSAGES/donotdisturb-button-extension.mo; \
49 | done;
50 |
51 | zip-file: _build
52 | rm -f ./*.zip
53 | cd _build ; \
54 | zip -qr "$(UUID).zip" .; \
55 | mv $(UUID).zip .. ; \
56 | cd .. ;
57 | sha256sum "$(UUID).zip" > CHECKSUM
58 | rm -rf _build
59 |
60 | clean:
61 | rm -f ./schemas/gschemas.compiled
62 | rm -f ./po/*.mo
63 | rm -f ./*.zip
64 | rm -f ./.~
65 | rm -f ./*~
66 | rm -rf _build
67 |
68 |
69 | touch:
70 | for file in $(TOUCH); do \
71 | touch $$file; \
72 | done;
73 |
74 | install:
75 | rm -rf $(EXTENSIONS_DIR)/$(UUID)
76 | mkdir -p $(EXTENSIONS_DIR)/$(UUID)
77 | cp -f "$(UUID).zip" $(EXTENSIONS_DIR)/$(UUID)
78 | cd $(EXTENSIONS_DIR)/$(UUID); \
79 | unzip "$(UUID).zip"; \
80 | echo done
81 |
82 |
--------------------------------------------------------------------------------
/activities-config@nls1729/Makefile:
--------------------------------------------------------------------------------
1 | # Activities Configurator Makefile
2 |
3 | .ONESHELL:
4 | UUID = activities-config@nls1729
5 | IMAGES = face-smile-3.svg
6 | MODULES = colors.js extension.js keys.js notify.js readme.js stylesheet.css metadata.json
7 | POFILES = $(wildcard po/*.po)
8 | JSFILES = colors.js extension.js keys.js notify.js prefs.js readme.js
9 | ZIPDATE = $(shell date +"%F %H:%M")
10 | ZIPTS = $(shell date +"%y%j%H%M")
11 | COMMIT = $(shell git rev-parse --short=8 HEAD)
12 | EXTENSIONS_DIR = ~/.local/share/gnome-shell/extensions
13 | GSVERSIONS = $(shell cat ./GSVERSIONS)
14 | VERSION = $(shell cat ./VERSION)
15 | GSCHEMAXML = ./schemas/org.gnome.shell.extensions.activities-config.gschema.xml
16 | BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
17 | ifeq ($(BRANCH),master)
18 | ZIPNAME = activities-config$(ZIPTS)@nls1729
19 | else
20 | ZIPNAME = activities-config$(ZIPTS)$(BRANCH)@nls1729
21 | endif
22 |
23 | extension: ./schemas/gschemas.compiled $(POFILES:.po=.mo)
24 | echo "extensionOOO:"
25 |
26 | all: extension
27 | echo "allOOO:"
28 |
29 | ./schemas/gschemas.compiled: ./schemas/org.gnome.shell.extensions.activities-config.gschema.xml.in
30 | echo "./schemas/gschemas.compiledOOO:"
31 | cat $(GSCHEMAXML).in > $(GSCHEMAXML)
32 | glib-compile-schemas ./schemas/
33 |
34 | ./po/%.mo: ./po/%.po
35 | echo "./po/%.moOOO:"
36 | msgfmt -c $< -o $@
37 |
38 | _build: all
39 | echo "_buildOOO:"
40 | rm -rf ./_build
41 | mkdir -p _build
42 | cat metadata.json.in | sed "s/GSVERSIONS/$(GSVERSIONS)/" | sed "s/VERSION/$(VERSION)/" > metadata.json
43 | cat README.txt.in | sed "s/^zip file:.*$\/zip file: $(ZIPDATE) $(COMMIT)/" > _build/README.txt
44 | cat prefs.js | sed "s/Commit: .*$\/Commit: $(COMMIT) $(ZIPDATE) $(BRANCH)\";/" > _build/prefs.js
45 | xgettext $(JSFILES) -o _build/message.pot;
46 | cp $(MODULES) _build
47 | cp $(IMAGES) _build
48 | cp COPYING _build
49 | mkdir -p _build/schemas
50 | cp schemas/*.xml _build/schemas/
51 | cp schemas/gschemas.compiled _build/schemas/
52 | mkdir -p _build/locale
53 | for langmo in $(POFILES:.po=.mo) ; do \
54 | langdir=_build/locale/`basename $$langmo .mo`; \
55 | mkdir -p $$langdir; \
56 | mkdir -p $$langdir/LC_MESSAGES; \
57 | cp $$langmo $$langdir/LC_MESSAGES/activities-config-extension.mo; \
58 | done;
59 |
60 | zip-file: _build
61 | echo "zip-fileOOO:"
62 | rm -f ./*.zip
63 | cd _build ; \
64 | zip -qr "$(ZIPNAME).zip" .; \
65 | mv $(ZIPNAME).zip .. ; \
66 | cd .. ;
67 | sha256sum "$(ZIPNAME).zip" > ../CHECKSUM
68 | rm -rf _build
69 |
70 | clean:
71 | echo "cleanOOO:"
72 | rm -f ./schemas/gschemas.compiled
73 | rm -f ./po/*.mo
74 | rm -f ./*.zip
75 | rm -f ./.*~
76 | rm -f ./*~
77 | rm -f ./*.swp
78 | rm -rf _build
79 |
80 | install:
81 | echo "install"
82 | rm -rf $(EXTENSIONS_DIR)/$(UUID)
83 | mkdir -p $(EXTENSIONS_DIR)/$(UUID)
84 | cp -f "$(UUID).zip" $(EXTENSIONS_DIR)/$(UUID)
85 | cd $(EXTENSIONS_DIR)/$(UUID); \
86 | unzip "$(UUID).zip"; \
87 | echo done
88 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/Makefile:
--------------------------------------------------------------------------------
1 | .ONESHELL:
2 | UUID = donotdisturb-button@nls1729
3 | IMAGES = available-yes.png available-no.png default-persistence.png gnome-session-reboot.png \
4 | arrow-right.png audio-volume-on.png audio-volume-muted.png \
5 | busy-notifications-symbolic.svg available-notifications-symbolic.svg
6 |
7 | MODULES = extension.js correctClass.js dndBtn.js dndBtnGObject.js force.js
8 | POFILES = $(wildcard po/*.po)
9 | JSFILES = extension.js prefs.js correctClass.js dndBtn.js dndBtnGObject.js force.js
10 | ZIPDATE = $(shell date +"%F %H:%M")
11 | ZIPTS = $(shell date +"%y%j%H%M")
12 | COMMIT = $(shell git rev-parse --short=8 HEAD)
13 | EXTENSIONS_DIR = ~/.local/share/gnome-shell/extensions
14 | GSVERSIONS = $(shell cat ./GSVERSIONS)
15 | GSPVERSIONS = $(shell cat ./GSVERSIONS | sed 's/\\"//'g)
16 | VERSION = $(shell cat ./VERSION)
17 | SCHEMAXMLIN = ./schemas/schema.xml.in
18 | GSCHEMAXML = ./schemas/org.gnome.shell.extensions.donotdisturb-button.gschema.xml
19 | BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
20 | ifeq ($(BRANCH),master)
21 | ZIPNAME = donotdisturb-button$(ZIPTS)@nls1729
22 | else
23 | ZIPNAME = donotdisturb-button$(ZIPTS)$(BRANCH)@nls1729
24 | endif
25 |
26 | all: extension
27 |
28 | extension: ./schemas/gschemas.compiled $(POFILES:.po=.mo)
29 |
30 | ./schemas/gschemas.compiled: ./schemas/schema.xml.in
31 | cat $(SCHEMAXMLIN) | sed "s/EPVERSION/$(VERSION)/" | sed "s/GSPVERSIONS/\"$(GSPVERSIONS)\"/" > $(GSCHEMAXML)
32 | glib-compile-schemas ./schemas/
33 |
34 | ./po/%.mo: ./po/%.po
35 | msgfmt -c $< -o $@
36 |
37 | _build: all
38 | rm -rf ./_build
39 | mkdir -p _build
40 | xgettext $(JSFILES) -o ./_build/messages.pot;
41 | cat README.txt.in | sed "s/^zip file:.*$\/zip file: $(ZIPDATE) $(COMMIT)/" > ./_build/README.txt
42 | cat prefs.js | sed "s/Commit:.*$\/Commit: $(COMMIT) $(ZIPDATE) $(BRANCH)\";/" > ./_build/prefs.js
43 | cat metadata.json.in | sed "s/GSVERSIONS/$(GSVERSIONS)/" | sed "s/VERSION/$(VERSION)/" > _build/metadata.json
44 | cp $(MODULES) _build
45 | cp $(IMAGES) _build
46 | cp COPYING _build
47 | mkdir -p _build/schemas
48 | cp schemas/*.xml _build/schemas/
49 | cp schemas/gschemas.compiled _build/schemas/
50 | mkdir -p _build/locale
51 |
52 | for langmo in $(POFILES:.po=.mo) ; do \
53 | langdir=_build/locale/`basename $$langmo .mo`; \
54 | mkdir -p $$langdir; \
55 | mkdir -p $$langdir/LC_MESSAGES; \
56 | cp $$langmo $$langdir/LC_MESSAGES/donotdisturb-button-extension.mo; \
57 | done;
58 |
59 | zip-file: clean _build
60 | rm -f ./*.zip
61 | cd _build ; \
62 | cp README.txt ..
63 | zip -qr "$(ZIPNAME).zip" .; \
64 | mv $(ZIPNAME).zip .. ; \
65 | cd .. ;
66 | sha256sum "$(ZIPNAME).zip" > CHECKSUM
67 | rm -rf _build
68 |
69 | clean:
70 | rm -f ./schemas/gschemas.compiled
71 | rm -f ./po/*.mo
72 | rm -f ./*.zip
73 | rm -f ./.*~
74 | rm -f ./*~
75 | rm -f ./*.swp
76 | rm -rf _build
77 |
78 |
79 | install:
80 | rm -rf $(EXTENSIONS_DIR)/$(UUID)
81 | mkdir -p $(EXTENSIONS_DIR)/$(UUID)
82 | cp -f "$(ZIPNAME).zip" $(EXTENSIONS_DIR)/$(UUID)
83 | cd $(EXTENSIONS_DIR)/$(UUID); \
84 | unzip "$(ZIPNAME).zip"; \
85 | echo done
86 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/prefs.js:
--------------------------------------------------------------------------------
1 | /*
2 | This file is part of the extension-reloader@nls1729.
3 |
4 | Copyright (c) 2016-2018 Norman L. Smith
5 |
6 | This extension is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU General Public License
8 | as published by the Free Software Foundation; either version 2
9 | of the License, or (at your option) any later version.
10 |
11 | This extension is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with this program. If not, see
18 | < https://www.gnu.org/licenses/old-licenses/gpl-2.0.html >.
19 |
20 | This extension is a derived work of the Gnome Shell.
21 | */
22 |
23 |
24 | const GObject = imports.gi.GObject;
25 | const Gtk = imports.gi.Gtk;
26 | const Gio = imports.gi.Gio;
27 | const Config = imports.misc.config;
28 | const Me = imports.misc.extensionUtils.getCurrentExtension();
29 | const DOMAIN = Me.metadata['gettext-domain'];
30 | const Gettext = imports.gettext.domain(DOMAIN);
31 | const _ = Gettext.gettext;
32 | const COMMIT = "Commit:";
33 | const SHORTCUT = 'shortcut';
34 | const LEFT = 'panel-icon-left';
35 | const CENTER = 'panel-icon-center';
36 | const EPVERSION = 'version';
37 | const GSPVERSION = 'shell-version';
38 |
39 | function init() {
40 | imports.gettext.bindtextdomain(DOMAIN, Me.path + "/locale");
41 | }
42 |
43 | const ExtensionReloaderPrefsWidget = new GObject.registerClass(
44 | class ExtensionReloaderPrefsWidget extends Gtk.Box {
45 |
46 | _init(params) {
47 | super._init(params);
48 | let GioSSS = Gio.SettingsSchemaSource;
49 | let schema = Me.metadata['settings-schema'];
50 | let schemaDir = Me.dir.get_child('schemas').get_path();
51 | let schemaSrc = GioSSS.new_from_directory(schemaDir, GioSSS.get_default(), false);
52 | let schemaObj = schemaSrc.lookup(schema, true);
53 | this._settings = new Gio.Settings({settings_schema: schemaObj});
54 | this._grid = new Gtk.Grid();
55 | this._grid.margin = 5;
56 | this._grid.row_spacing = 5;
57 | this._grid.column_spacing = 5;
58 | this._grid.set_column_homogeneous(true);
59 | let btnPosition = _("Button Location");
60 | this._centerCb = new Gtk.CheckButton({label:_("Center")});
61 | this._leftRb = new Gtk.RadioButton({label:_("Left")});
62 | this._rightRb = new Gtk.RadioButton({group:this._leftRb, label:_("Right")});
63 | let rbGroup = new Gtk.Box({orientation:Gtk.Orientation.VERTICAL, homogeneous:false,
64 | margin_left:4, margin_top:2, margin_bottom:2, margin_right:4});
65 | rbGroup.add(this._centerCb);
66 | rbGroup.add(this._leftRb);
67 | rbGroup.add(this._rightRb);;
68 | let version = '[ v' + Me.metadata[EPVERSION] +
69 | ' GS ' + this._settings.get_string(GSPVERSION) + ' ]';
70 | this._linkBtn = new Gtk.LinkButton({uri: Me.metadata['url'], label: _("Website")});
71 | let left = this._settings.get_boolean(LEFT);
72 | let center = this._settings.get_boolean(CENTER);
73 | this._leftRb.connect('toggled', (b) => {
74 | if(b.get_active())
75 | this._settings.set_boolean(LEFT, true);
76 | else
77 | this._settings.set_boolean(LEFT, false);
78 | });
79 | this._rightRb.connect('toggled', (b) => {
80 | if(b.get_active())
81 | this._settings.set_boolean(LEFT, false);
82 | else
83 | this._settings.set_boolean(LEFT, true);
84 | });
85 | this._centerCb.connect('toggled', (b) => {
86 | if(b.get_active()) {
87 | this._settings.set_boolean(CENTER, true);
88 | } else {
89 | this._settings.set_boolean(CENTER, false);
90 | }
91 | });
92 | this._leftRb.set_active(left);
93 | this._rightRb.set_active(!left);
94 | this._centerCb.set_active(center);
95 | this._grid.attach(new Gtk.Label({ label: btnPosition, wrap: true, xalign: 0.5 }), 0, 8, 7, 1);
96 | this._grid.attach(rbGroup, 3, 10, 1, 3);
97 | this._grid.attach(new Gtk.Label({ label: version, wrap: true, xalign: 0.5 }), 0, 18, 7, 1);
98 | this._grid.attach(new Gtk.Label({ label: COMMIT, wrap: true, xalign: 0.5 }), 0, 20, 7, 1);
99 | this._grid.attach(this._linkBtn, 3, 22, 1, 1);
100 | this.add(this._grid);
101 | }
102 | });
103 |
104 | function buildPrefsWidget() {
105 | let widget = new ExtensionReloaderPrefsWidget();
106 | widget.show_all();
107 | return widget;
108 | }
109 |
110 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/schemas/schema.xml.in:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | "EPVERSION"
6 | Extension version.
7 | Extension version for display in extension preferences.
8 |
9 |
10 | GSPVERSIONS
11 | Supported gnome-shell version(s).
12 | Supported gnome-shell version(s) for display in extension preferences.
13 |
14 |
15 |
16 | Toggle shortcut.
17 | The keyboard shortcut to toggle the do not disturb button state.
18 |
19 |
20 | true
21 | Center if true.
22 | If true panel button icon position left center or right center.
23 |
24 |
25 | true
26 | Left if true.
27 | Panel button icon position left, right, left center, or right center.
28 |
29 |
30 | true
31 | Show message count if true.
32 | If true, display the number of notifications.
33 |
34 |
35 | false
36 | Persisten busy state.
37 | If true, busy state is set at enable.
38 |
39 |
40 | false
41 | Override persistent busy state at session startup.
42 | If true, determine state from overrride-busy-state.
43 |
44 |
45 | false
46 | Busy state .
47 | If true, state is set busy at startup.
48 |
49 |
50 | false
51 | Effect change of panel button icon.
52 | When toggled the extension is disabled and then enabled.
53 |
54 |
55 | "default"
56 | Available icon path.
57 | Default or selected icon path.
58 |
59 |
60 | "default"
61 | Busy icon path.
62 | Default or selected icon path.
63 |
64 |
65 | false
66 | Busy State Timeout enabled.
67 | When true the Busy State Timeout is operational.
68 |
69 |
70 | true
71 | Busy State Timeout once.
72 | When true the Busy State Timeout is disabled after one timeout.
73 |
74 |
75 | false
76 | Busy State Timeout always.
77 | When true the Busy State Timeout will start at busy state detection.
78 |
79 |
80 | 0
81 | Busy State Timeout hours.
82 | Minutes 0-59 portion of the Busy State Timeout interval.
83 |
84 |
85 | 0
86 | Busy State Timeout minutes.
87 | Hours 0-23 portion of the Busy State Timeout interval.
88 |
89 |
90 | 0
91 | Busy State Timeout Interval.
92 | Total of time-out-hours and time-out-minutes in minutes.
93 |
94 |
95 | false
96 | Busy state mutes sound.
97 | When true volume control is muted.
98 |
99 |
100 | false
101 | Available state un-mutes sound.
102 | When true volume control is un-muted.
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/schemas/org.gnome.shell.extensions.donotdisturb-button.gschema.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | "39"
6 | Extension version.
7 | Extension version for display in extension preferences.
8 |
9 |
10 | "3.36"
11 | Supported gnome-shell version(s).
12 | Supported gnome-shell version(s) for display in extension preferences.
13 |
14 |
15 |
16 | Toggle shortcut.
17 | The keyboard shortcut to toggle the do not disturb button state.
18 |
19 |
20 | true
21 | Center if true.
22 | If true panel button icon position left center or right center.
23 |
24 |
25 | true
26 | Left if true.
27 | Panel button icon position left, right, left center, or right center.
28 |
29 |
30 | true
31 | Show message count if true.
32 | If true, display the number of notifications.
33 |
34 |
35 | false
36 | Persisten busy state.
37 | If true, busy state is set at enable.
38 |
39 |
40 | false
41 | Override persistent busy state at session startup.
42 | If true, determine state from overrride-busy-state.
43 |
44 |
45 | false
46 | Busy state .
47 | If true, state is set busy at startup.
48 |
49 |
50 | false
51 | Effect change of panel button icon.
52 | When toggled the extension is disabled and then enabled.
53 |
54 |
55 | "default"
56 | Available icon path.
57 | Default or selected icon path.
58 |
59 |
60 | "default"
61 | Busy icon path.
62 | Default or selected icon path.
63 |
64 |
65 | false
66 | Busy State Timeout enabled.
67 | When true the Busy State Timeout is operational.
68 |
69 |
70 | true
71 | Busy State Timeout once.
72 | When true the Busy State Timeout is disabled after one timeout.
73 |
74 |
75 | false
76 | Busy State Timeout always.
77 | When true the Busy State Timeout will start at busy state detection.
78 |
79 |
80 | 0
81 | Busy State Timeout hours.
82 | Minutes 0-59 portion of the Busy State Timeout interval.
83 |
84 |
85 | 0
86 | Busy State Timeout minutes.
87 | Hours 0-23 portion of the Busy State Timeout interval.
88 |
89 |
90 | 0
91 | Busy State Timeout Interval.
92 | Total of time-out-hours and time-out-minutes in minutes.
93 |
94 |
95 | false
96 | Busy state mutes sound.
97 | When true volume control is muted.
98 |
99 |
100 | false
101 | Available state un-mutes sound.
102 | When true volume control is un-muted.
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/README.txt.in:
--------------------------------------------------------------------------------
1 | README
2 |
3 | Gnome Shell Extension Reloader extension-reloader
4 |
5 | 2016-11-12
6 |
7 | This extension is intended for use by Gnome Shell Extension writers.
8 | It is common practice to restart the Shell during testing to reload
9 | an extension with changes made to the extension's code. Wayland does
10 | not allow restarting the Shell. To reload an extension under Wayland
11 | a logout and a login is required. This extension reloads only the
12 | selected extension with two mouse clicks saving time for the extension
13 | writer. This extension requires the reload option in the recently
14 | updated gnome-shell-extension-tool (Gnome Bugzilla #772593). A copy
15 | of the new tool from the Gnome Github mirror is included with this
16 | extension. The new tool is not included in GS 3.22.2.
17 |
18 | The upcoming release of Fedora 25 will default to using Wayland instead
19 | of Xorg. I have submitted an enhancement patch to the gnome-tweak-tool
20 | (Gnome Bugzilla #774072) to include buttons for reloading extensions in
21 | the Extensions section of the Tweak Tool.
22 |
23 | When the gnome-shell-extension-tool with reload capability is released,
24 | the borrowed copy of gnome-shell-extension-tool will be removed from this
25 | extension.
26 |
27 | 2016-11-13 Uploaded to ego for review.
28 |
29 | 2016-11-23 Extension Reloader - updated copyright due to fsf address changed
30 | Removed address and added license url instead. Uploaded for review.
31 |
32 | 2016-12-23 Extension Reloader - Almost a complete rewrite.
33 | Removed the gnome-shell-extension-tool, replaced with extension
34 | code to directly control the shell extenson system. Added
35 | display of extension state to menu, sorted extension display by
36 | state and name. Added scrolling to menu. Changed notifications
37 | to indicate info, warning and error as appropriate.
38 |
39 | This extension replaces the need to [ Alt F2 r ] to restart the
40 | shell during extension development. This extension will attempt
41 | to reload the extension when it is in the error state. The most
42 | common shell restarts for extension writers are when an extension
43 | is in the error state. If the error in the extension code is
44 | corrected a restart with this extension will reload it successfully
45 | except in very rare instances. Gnome Shell extensions can have
46 | errors that are only exposed if the extension is reloaded. One such
47 | error is the import of prefs.js into an extension. The the prefs.js
48 | code is intended only to be executed by gnome-shell-extension-prefs.
49 |
50 | 2017-04-05 Added GS3.24 to metadata.json.
51 |
52 | 2017-05-21 Translations updated. Thanks to Jonatan Zeidler.
53 |
54 | 2018-04-15 Changed to be compatible with Ubuntu 18.04 LTS. Uploaded for review.
55 |
56 | 2018-09-03 Thanks to treba123 for merge request which corrected class name
57 | changes needed for GS 3.29.92 and beyond.
58 |
59 | See https://nls1729.github.io/extension-reloader.html , note when
60 | an extension is not in the error state reloading will not read
61 | changes made to disk. This limits the use of the extension to
62 | making changes when an extension is in the error state.
63 |
64 | Uploaded for review.
65 |
66 | 2018-10-03 Completed changes for ES6.
67 | Changed code to use arrow notation => instead of Lang.bind for anonymous
68 | functions. Changed code to use ES6 classes. Updated prefs.js to use GJS ES6
69 | class wrapper for GObject class. Changed to use Function.prototype.bind()
70 | instead of Lang.bind for named call backs.
71 |
72 | 2018-10-09 Uploaded for review.
73 |
74 | 2019-03-20 Updated for GS3.32 this version is not compatible with versions prior
75 | to GS3.32. Changed to use GObject class.
76 |
77 | 2019-03-22 Corrected error in metadata.json. I left the "" off GS Version.
78 | Uploaded for review.
79 |
80 | 2019-09-27 Updated for GS 3.34. Corrected deprecated actor.actor instances.
81 | Changed logic to eliminate reloads which are actually ineffective.
82 | The extension is only useful for extension writers. Only an
83 | extension in the ERROR state can be reloaded. In fact the process
84 | is to unload the extension and then create a new extension object
85 | and then load the new object. If the extension writer corrected
86 | the cause of the error the extension will be loaded and enabled.
87 | If it errors again, repeat search for the coding error(s) and try
88 | again.
89 |
90 | 2019-09-28 Uploaded for review.
91 |
92 | 2020-03-27 Updated for GS 3.36. Uploaded for review.
93 |
94 |
95 | 2020-06-13 Changed to allow selecting any extension for reload. The shell
96 | session must be restarted for changes on disk to be loaded into
97 | memory. If the session is Wayland a logout and login is required.
98 | For Xorg sessions Alt F2 r can be used. The extension visually
99 | indicates if the session is Wayland. Uploaded for review.
100 |
101 |
102 | zip file: stuff
103 |
104 | ...
105 |
--------------------------------------------------------------------------------
/max-window-effect/extension.js:
--------------------------------------------------------------------------------
1 | /*
2 | max-window-effect@nls1729 - Gnome Shell Extension
3 |
4 | Copyright (c) 2014-2016 Norman L. Smith
5 |
6 | This extension is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU General Public License
8 | as published by the Free Software Foundation; either version 2
9 | of the License, or (at your option) any later version.
10 |
11 | This extension is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with this program. If not, see
18 | < https://www.gnu.org/licenses/old-licenses/gpl-2.0.html >.
19 |
20 | This extension is a derived work of the Gnome Shell.
21 | */
22 |
23 | const Cairo = imports.cairo;
24 | const Clutter = imports.gi.Clutter;
25 | const St = imports.gi.St;
26 | const Main = imports.ui.main;
27 | const Panel = imports.ui.panel;
28 | const PanelMenu = imports.ui.panelMenu;
29 | const Lang = imports.lang;
30 |
31 | const BACKGROUND_STYLE = 'background-color: black';
32 |
33 | const MaxWindowEffect = new Lang.Class({
34 | Name: 'MaxWindowEffect',
35 |
36 | _init : function() {
37 | this._maximizeId = null;
38 | this._unmaximizeId = null;
39 | this._restackedId = null;
40 | },
41 |
42 | _disconnectGlobalSignals: function() {
43 | if(this._maximizeId != null) {
44 | global.window_manager.disconnect(this._maximizeId);
45 | this._maximizeId = null;
46 | }
47 | if(this._unmaximizeId != null) {
48 | global.window_manager.disconnect(this._unmaximizeId);
49 | this._unmaximizeId = null;
50 | }
51 | if(this._restackedId != null) {
52 | global.screen.disconnect(this._restackedId);
53 | this._restackedId = null;
54 | }
55 | },
56 |
57 | _handleCornerSignals: function(connect) {
58 | if(connect) {
59 | if(this._signalIdLC == null)
60 | this._signalIdLC = Main.panel._leftCorner.actor.connect('repaint', Lang.bind(this, this._redoLeft));
61 | if(this._signalIdRC == null)
62 | this._signalIdRC = Main.panel._rightCorner.actor.connect('repaint', Lang.bind(this, this._redoRight));
63 | } else {
64 | if(this._signalIdLC != null) {
65 | Main.panel._leftCorner.actor.disconnect(this._signalIdLC);
66 | this._signalIdLC = null;
67 | }
68 | if(this._signalIdRC != null) {
69 | Main.panel._rightCorner.actor.disconnect(this._signalIdRC);
70 | this._signalIdRC = null;
71 | }
72 | }
73 | },
74 |
75 | _redoLeft: function() {
76 | this._repaintPanelCorner(Main.panel._leftCorner);
77 | },
78 |
79 | _redoRight: function() {
80 | this._repaintPanelCorner(Main.panel._rightCorner);
81 | },
82 |
83 | _repaintPanelCorner: function(corner) {
84 | if(this._actionNeeded1)
85 | return true;
86 | let panelBackgroundColor = new Clutter.Color({red: 0, green: 0, blue: 0, alpha: 255});
87 | let node = corner.actor.get_theme_node();
88 | let cornerRadius = node.get_length('-panel-corner-radius');
89 | let borderWidth = node.get_length('-panel-corner-border-width');
90 | let borderColor = node.get_color('-panel-corner-border-color');
91 | let overlap = borderColor.alpha != 0;
92 | let offsetY = overlap ? 0 : borderWidth;
93 | let cr = corner.actor.get_context();
94 | cr.setOperator(Cairo.Operator.SOURCE);
95 | cr.moveTo(0, offsetY);
96 | if (corner._side == St.Side.LEFT)
97 | cr.arc(cornerRadius, borderWidth + cornerRadius, cornerRadius, Math.PI, 3 * Math.PI / 2);
98 | else
99 | cr.arc(0, borderWidth + cornerRadius, cornerRadius, 3 * Math.PI / 2, 2 * Math.PI);
100 | cr.lineTo(cornerRadius, offsetY);
101 | cr.closePath();
102 | let savedPath = cr.copyPath();
103 | let xOffsetDirection = corner._side == St.Side.LEFT ? -1 : 1;
104 | let over = Panel._over(borderColor, panelBackgroundColor);
105 | Clutter.cairo_set_source_color(cr, over);
106 | cr.fill();
107 | if (overlap) {
108 | let offset = borderWidth;
109 | Clutter.cairo_set_source_color(cr, panelBackgroundColor);
110 | cr.save();
111 | cr.translate(xOffsetDirection * offset, - offset);
112 | cr.appendPath(savedPath);
113 | cr.fill();
114 | cr.restore();
115 | }
116 | cr.$dispose();
117 | return true;
118 | },
119 |
120 | _maxUnmax: function() {
121 | let currentWindow;
122 | this._maxOnPrimary = false;
123 | let primaryMonitor = global.screen.get_primary_monitor();
124 | let workspace = global.screen.get_active_workspace();
125 | if(this._workspace != workspace) {
126 | this._actionNeeded1 = true;
127 | this._actionNeeded2 = true;
128 | this._workspace = workspace;
129 | }
130 | let windows = workspace.list_windows();
131 | for (let i = 0; i < windows.length; ++i) {
132 | currentWindow = windows[i];
133 | if(currentWindow.get_monitor() != primaryMonitor)
134 | continue;
135 | if(currentWindow.maximized_horizontally && currentWindow.maximized_vertically && !currentWindow.is_hidden()) {
136 | this._maxOnPrimary = true;
137 | break;
138 | }
139 | }
140 | if(this._maxOnPrimary && this._actionNeeded1) {
141 | this._actionNeeded1 = false;
142 | this._actionNeeded2 = true;
143 | Main.panel.actor.set_style(BACKGROUND_STYLE);
144 | for (id in Main.panel.statusArea)
145 | {
146 | let item = Main.panel.statusArea[id];
147 | if (typeof item.actor !== 'undefined')
148 | {
149 | item.actor.set_style("color: white");
150 | }
151 | }
152 | } else if(!this._maxOnPrimary && this._actionNeeded2) {
153 | this._actionNeeded1 = true;
154 | this._actionNeeded2 = false;
155 | for (id in Main.panel.statusArea)
156 | {
157 | let item = Main.panel.statusArea[id];
158 | if (typeof item.actor !== 'undefined')
159 | {
160 | item.actor.set_style(null);
161 | }
162 | }
163 | Main.panel.actor.set_style(null);
164 | }
165 | },
166 |
167 | _maxWindowPanelEffect: function() {
168 | this._signalIdLC = null;
169 | this._signalIdRC = null;
170 | this._maxOnPrimary = false;
171 | this._actionNeeded1 = true;
172 | this._actionNeeded2 = true;
173 | this._workspace = null;
174 | this._maxUnmax();
175 | if(this._maximizeId == null)
176 | this._maximizeId = global.window_manager.connect('maximize', Lang.bind(this, this._maxUnmax));
177 | if(this._unmaximizeId == null)
178 | this._unmaximizeId = global.window_manager.connect('unmaximize',Lang.bind(this, this._maxUnmax));
179 | if(this._restackedId == null)
180 | this._restackedId = global.screen.connect('restacked', Lang.bind(this, this._maxUnmax));
181 | this._handleCornerSignals(true);
182 | },
183 |
184 | enable: function() {
185 | this._maxWindowPanelEffect();
186 | },
187 |
188 | disable: function() {
189 | this._disconnectGlobalSignals();
190 | this._handleCornerSignals(false);
191 | Main.panel.actor.set_style(null);
192 | }
193 | });
194 |
195 | function init(metadata) {
196 | return new MaxWindowEffect();
197 | }
198 |
199 |
--------------------------------------------------------------------------------
/activities-config@nls1729/schemas/org.gnome.shell.extensions.activities-config.gschema.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ""
6 | Original Activities Button Text.
7 | If not empty, contains the original text displayed for the Activities Button.
8 |
9 |
10 | false
11 | Disable all Activities Button functions.
12 | The Activities Button is removed.
13 |
14 |
15 | ""
16 | Activities Button Text.
17 | If not empty, it contains the custom text displayed for the Activities Button.
18 |
19 |
20 | 4
21 | Text padding in pixels.
22 | Horizontal padding for Activities Text.
23 |
24 |
25 | false
26 | Disable Activities Button Text.
27 | The Activities Button Text is not displayed if true.
28 |
29 |
30 | "/usr/share/icons/gnome/24x24/status/info.png"
31 | Activities Button Icon Path.
32 | If not empty, it contains the path of an icon displayed with the Activities Button Text.
33 |
34 |
35 | 4
36 | Icon padding in pixels.
37 | Horizontal padding for Activities Icon.
38 |
39 |
40 | 1.3
41 | Icon scaling factor in em.
42 | Scaling factor for Activities Icon.
43 |
44 |
45 | false
46 | Disable Activities Button Icon.
47 | The Activities Button Icon is not displayed if true.
48 |
49 |
50 | 250
51 | Hot corner delay.
52 | Hot corner Overview toggle delay in milliseconds.
53 |
54 |
55 | 100
56 | Hot corner threshold.
57 | Hot corner Overview toggle barrier pressure threshold in pixels.
58 |
59 |
60 | false
61 | Disable Activities Hot Corner.
62 | The Activities Hot Corner is disabled if true.
63 |
64 |
65 | false
66 | Override theme background color and transparency.
67 | Apply panel background color and transparency when user or classic theme is installed if true.
68 |
69 |
70 | "Default"
71 | Path or url or name and mode of currently loaded theme.
72 | Set by extension at enable and when the shell theme is changed.
73 |
74 |
75 | "#000000"
76 | RGB value for panel background
77 | Default background color is black.
78 |
79 |
80 | 0
81 | Panel Transparency.
82 | Set panel transparency 0-100 per cent.
83 |
84 |
85 | "#000000"
86 | RGB value for shadow background
87 | Default shadow color is black.
88 |
89 |
90 | 0
91 | Shadow Transparency.
92 | Set shadow transparency 0-100 per cent.
93 |
94 |
95 | 0
96 | Shadow vertical length.
97 | Set shadow transparency 0-64 px.
98 |
99 |
100 | 0
101 | Shadow blur radius.
102 | Set shadow blur radius 0-64 px.
103 |
104 |
105 | 0
106 | Shadow spread radius.
107 | Set shadow spread radius 0-64 px.
108 |
109 |
110 | false
111 | Hide rounded corners.
112 | The panel rounded corners are hidden if true.
113 |
114 |
115 | false
116 | Hide panel app menu button icon.
117 | The panel app menu button icon is hidden if true.
118 |
119 |
120 | 0
121 | Panel background effects when a window is maximized on the primary display.
122 | If 0 no effect. If 1 transparency is removed. If 2 background is set to opaque black with rounded corners.
123 |
124 |
125 | false
126 | Conflict detection.
127 | If true conflict detection is enabled.
128 |
129 |
130 | false
131 | Barriers supported.
132 | If true X server supports barriers for Gnome Shell.
133 |
134 |
135 | true
136 | True only for first enable.
137 | If true extension sets defaults and displays prefs tool.
138 |
139 |
140 | false
141 | Show Overview when no application is running.
142 | If true extension displays overview when no applcation is running.
143 |
144 |
145 | false
146 | Disable the enable delay.
147 | If true the enable delay is set to 5 milliseconds effectively disabling delay.
148 |
149 |
150 | false
151 | Move Activities Icon Button to right corner.
152 | If true move Activities Icon Button to right corner.
153 |
154 |
155 | false
156 | If true disable tile maximized effect.
157 | If false Tile Maximized Effect supplements Windows Maximized Effect.
158 |
159 |
160 |
161 |
--------------------------------------------------------------------------------
/activities-config@nls1729/schemas/org.gnome.shell.extensions.activities-config.gschema.xml.in:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ""
6 | Original Activities Button Text.
7 | If not empty, contains the original text displayed for the Activities Button.
8 |
9 |
10 | false
11 | Disable all Activities Button functions.
12 | The Activities Button is removed.
13 |
14 |
15 | ""
16 | Activities Button Text.
17 | If not empty, it contains the custom text displayed for the Activities Button.
18 |
19 |
20 | 4
21 | Text padding in pixels.
22 | Horizontal padding for Activities Text.
23 |
24 |
25 | false
26 | Disable Activities Button Text.
27 | The Activities Button Text is not displayed if true.
28 |
29 |
30 | "/usr/share/icons/gnome/24x24/status/info.png"
31 | Activities Button Icon Path.
32 | If not empty, it contains the path of an icon displayed with the Activities Button Text.
33 |
34 |
35 | 4
36 | Icon padding in pixels.
37 | Horizontal padding for Activities Icon.
38 |
39 |
40 | 1.3
41 | Icon scaling factor in em.
42 | Scaling factor for Activities Icon.
43 |
44 |
45 | false
46 | Disable Activities Button Icon.
47 | The Activities Button Icon is not displayed if true.
48 |
49 |
50 | 250
51 | Hot corner delay.
52 | Hot corner Overview toggle delay in milliseconds.
53 |
54 |
55 | 100
56 | Hot corner threshold.
57 | Hot corner Overview toggle barrier pressure threshold in pixels.
58 |
59 |
60 | false
61 | Disable Activities Hot Corner.
62 | The Activities Hot Corner is disabled if true.
63 |
64 |
65 | false
66 | Override theme background color and transparency.
67 | Apply panel background color and transparency when user or classic theme is installed if true.
68 |
69 |
70 | "Default"
71 | Path or url or name and mode of currently loaded theme.
72 | Set by extension at enable and when the shell theme is changed.
73 |
74 |
75 | "#000000"
76 | RGB value for panel background
77 | Default background color is black.
78 |
79 |
80 | 0
81 | Panel Transparency.
82 | Set panel transparency 0-100 per cent.
83 |
84 |
85 | "#000000"
86 | RGB value for shadow background
87 | Default shadow color is black.
88 |
89 |
90 | 0
91 | Shadow Transparency.
92 | Set shadow transparency 0-100 per cent.
93 |
94 |
95 | 0
96 | Shadow vertical length.
97 | Set shadow transparency 0-64 px.
98 |
99 |
100 | 0
101 | Shadow blur radius.
102 | Set shadow blur radius 0-64 px.
103 |
104 |
105 | 0
106 | Shadow spread radius.
107 | Set shadow spread radius 0-64 px.
108 |
109 |
110 | false
111 | Hide rounded corners.
112 | The panel rounded corners are hidden if true.
113 |
114 |
115 | false
116 | Hide panel app menu button icon.
117 | The panel app menu button icon is hidden if true.
118 |
119 |
120 | 0
121 | Panel background effects when a window is maximized on the primary display.
122 | If 0 no effect. If 1 transparency is removed. If 2 background is set to opaque black with rounded corners.
123 |
124 |
125 | false
126 | Conflict detection.
127 | If true conflict detection is enabled.
128 |
129 |
130 | false
131 | Barriers supported.
132 | If true X server supports barriers for Gnome Shell.
133 |
134 |
135 | true
136 | True only for first enable.
137 | If true extension sets defaults and displays prefs tool.
138 |
139 |
140 | false
141 | Show Overview when no application is running.
142 | If true extension displays overview when no applcation is running.
143 |
144 |
145 | false
146 | Disable the enable delay.
147 | If true the enable delay is set to 5 milliseconds effectively disabling delay.
148 |
149 |
150 | false
151 | Move Activities Icon Button to right corner.
152 | If true move Activities Icon Button to right corner.
153 |
154 |
155 | false
156 | If true disable tile maximized effect.
157 | If false Tile Maximized Effect supplements Windows Maximized Effect.
158 |
159 |
160 |
161 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/extension.js:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | Do Not Disturb Button Gnome Shell Extension
4 |
5 | Copyright (c) 2015-2019 Norman L. Smith
6 |
7 | This extension is free software; you can redistribute it and/or
8 | modify it under the terms of the GNU General Public License
9 | as published by the Free Software Foundation; either version 2
10 | of the License, or (at your option) any later version.
11 |
12 | This extension is distributed in the hope that it will be useful,
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | GNU General Public License for more details.
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program. If not, see
19 | < https://www.gnu.org/licenses/old-licenses/gpl-2.0.html >.
20 |
21 | This extension is a derived work of the Gnome Shell.
22 | */
23 |
24 |
25 | const ByteArray = imports.byteArray;
26 | const Gio = imports.gi.Gio;
27 | const Gvc = imports.gi.Gvc;
28 | const Main = imports.ui.main;
29 | const PanelMenu = imports.ui.panelMenu;
30 | const Mainloop = imports.mainloop;
31 | const Me = imports.misc.extensionUtils.getCurrentExtension();
32 | const DOMAIN = Me.metadata['gettext-domain'];
33 | const _ = imports.gettext.domain(DOMAIN).gettext;
34 | var settings;
35 |
36 | function setSettings() {
37 | let GioSSS = Gio.SettingsSchemaSource;
38 | let schema = Me.metadata['settings-schema'];
39 | let schemaDir = Me.dir.get_child('schemas');
40 | let schemaSrc;
41 | if (schemaDir.query_exists(null))
42 | schemaSrc = GioSSS.new_from_directory(schemaDir.get_path(), GioSSS.get_default(), false);
43 | else
44 | schemaSrc = GioSSS.get_default();
45 | let schemaObj = schemaSrc.lookup(schema, true);
46 | if (!schemaObj)
47 | throw new Error('Schema ' + schema + ' not found.');
48 | settings = new Gio.Settings({ settings_schema: schemaObj });
49 | }
50 |
51 | setSettings();
52 |
53 | /*
54 | Self modifying code removed.
55 | */
56 |
57 | const CorrectClass = Me.imports.correctClass;
58 |
59 | class DoNotDisturbExtension {
60 |
61 | constructor() {
62 | this._btn = null;
63 | this._timeoutId = 0;
64 | this._settings = settings;
65 | this._leftChangedSig = 0;
66 | this._centerChangedSig = 0;
67 | this._mixerCtrl = null;
68 | this._StateChangedSig = 0;
69 | this._outputSink = null;
70 | this._busyStateChangedSig = 0;
71 | this._timeoutMuteId = 0;
72 | }
73 |
74 | _disableEnable() {
75 | this.disable();
76 | this.enable();
77 | }
78 |
79 | destroy() {
80 | if (this._btn != null) {
81 | this._btn.destroy();
82 | this._btn = null;
83 | }
84 | }
85 |
86 | _getPosition() {
87 | let center = this._settings.get_boolean('panel-icon-center');
88 | let left = this._settings.get_boolean('panel-icon-left');
89 | let position;
90 | if (center) {
91 | if (left)
92 | position = [0, 'center'];
93 | else
94 | position = [-1, 'center'];
95 | } else {
96 | if (left)
97 | position = [-1, 'left'];
98 | else
99 | position = [0, 'right'];
100 | }
101 | return position;
102 | }
103 |
104 | _setMute() {
105 | if (this._timeoutMuteId > 0) {
106 | Mainloop.source_remove(this._timeoutMuteId);
107 | this._timeoutMuteId = 0;
108 | }
109 | let busyState = this._settings.get_boolean('busy-state');
110 | let mute = this._settings.get_boolean('mute-busy');
111 | let unmute = this._settings.get_boolean('unmute-available');
112 | if (this._outputSink) {
113 | if (mute == busyState || (unmute != busyState && !busyState))
114 | this._outputSink.change_is_muted(busyState);
115 | }
116 | }
117 |
118 | _muteControlEnable() {
119 | //MUTE on Busy state - to eliminate all notification sounds must mute default sound stream.
120 | let aggMenu = Main.panel.statusArea.aggregateMenu;
121 | if (aggMenu.hasOwnProperty('_volume') && aggMenu._volume instanceof PanelMenu.SystemIndicator) {
122 | this._mixerCtrl = new Gvc.MixerControl({ name: 'Default Output Sound StrEam' });
123 | this._StateChangedSig = this._mixerCtrl.connect('state-changed', () => {
124 | if (this._mixerCtrl.get_state() == Gvc.MixerControlState.READY) {
125 | this._outputSink = this._mixerCtrl.get_default_sink();
126 | this._setMute();
127 | }
128 | });
129 | this._mixerCtrlSinkChangedSig = this._mixerCtrl.connect('default-sink-changed', () => {
130 | this._outputSink = this._mixerCtrl.get_default_sink();
131 | this._setMute();
132 | });
133 | this._mixerCtrl.open();
134 | this._busyStateChangedSig = this._settings.connect('changed::busy-state', this._setMute.bind(this));
135 | }
136 | }
137 |
138 | _muteControlDisable() {
139 | if (this._mixerCtrl !== null) {
140 | if (this._outputSink !== null)
141 | this._outputSink.change_is_muted(true);
142 | if (this._StateChangedSig > 0) {
143 | this._mixerCtrl.disconnect(this._StateChangedSig);
144 | this._StateChangedSig = 0;
145 | }
146 | if (this._mixerCtrlSinkChangedSig > 0) {
147 | this._mixerCtrl.disconnect(this._mixerCtrlSinkChangedSig);
148 | this._mixerCtrlSinkChangedSig= 0;
149 | }
150 | this._mixerCtrl.close();
151 | this._mixerCtrl = null;
152 | }
153 | if (this._outputSink !== null) {
154 | this._outputSink = null;
155 | }
156 | }
157 |
158 | _delayedEnable() {
159 | if (this._timeoutId != 0) {
160 | Mainloop.source_remove(this._timeoutId);
161 | this._timeoutId = 0;
162 | }
163 | this._btn = CorrectClass.DoNotDisturbButton.newDoNotDisturbButton(this._settings);
164 | let position = this._getPosition();
165 | Main.panel.addToStatusArea('DoNotDistrub', this._btn, position[0], position[1]);
166 | this._btn._setNotEmptyCount();
167 | this._leftChangedSig = this._settings.connect('changed::panel-icon-left', this._disableEnable.bind(this));
168 | this._centerChangedSig = this._settings.connect('changed::panel-icon-center', this._disableEnable.bind(this));
169 | this._iconResetSig = this._settings.connect('changed::reset-icon', this._disableEnable.bind(this));
170 | this._muteControlEnable();
171 | this._timeoutMuteId = Mainloop.timeout_add(16000, this._setMute.bind(this));
172 | this._btn._startUp();
173 | log('donotdistrub-button@nls1729 extension enabled.');
174 | }
175 |
176 | enable() {
177 | this._timeoutId = Mainloop.timeout_add(1500, this._delayedEnable.bind(this));
178 | }
179 |
180 | disable() {
181 | if (this._timeoutMuteId != 0) {
182 | Mainloop.source_remove(this._timeoutMuteId);
183 | this._timeoutMuteId = 0;
184 | }
185 | if (this._timeoutId != 0) {
186 | Mainloop.source_remove(this._timeoutId);
187 | this._timeoutId = 0;
188 | }
189 | if (this._leftChangedSig > 0) {
190 | this._settings.disconnect(this._leftChangedSig);
191 | this._leftChangedSig = 0;
192 | }
193 | if (this._centerChangedSig > 0) {
194 | this._settings.disconnect(this._centerChangedSig);
195 | this._centerChangedSig = 0;
196 | }
197 | if (this._iconResetSig > 0) {
198 | this._settings.disconnect(this._iconResetSig);
199 | this._iconResetSig = 0;
200 | }
201 | if (this._btn != null) {
202 | this._btn.destroy();
203 | this._btn = null;
204 | }
205 | this._muteControlDisable();
206 | log('donotdistrub-button@nls1729 extension disabled.');
207 | }
208 | };
209 |
210 | function init(metadata) {
211 | return new DoNotDisturbExtension();
212 | }
213 |
--------------------------------------------------------------------------------
/activities-config@nls1729/readme.js:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | Activities Configurator Gnome Shell Extension
4 |
5 | Copyright (c) 2012-2020 Norman L. Smith
6 |
7 | This extension is free software; you can redistribute it and/or
8 | modify it under the terms of the GNU General Public License
9 | as published by the Free Software Foundation; either version 2
10 | of the License, or (at your option) any later version.
11 |
12 | This extension is distributed in the hope that it will be useful,
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | GNU General Public License for more details.
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program. If not, see
19 | < https://www.gnu.org/licenses/old-licenses/gpl-2.0.html >.
20 |
21 | This extension is a derived work of the Gnome Shell.
22 | */
23 |
24 | const Gtk = imports.gi.Gtk;
25 | const ExtensionUtils = imports.misc.extensionUtils;
26 | const Me = ExtensionUtils.getCurrentExtension();
27 | const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']);
28 | const _ = Gettext.gettext;
29 |
30 | var DISABLED_HOT_CORNER = [
31 | _("Do not disable enable-hot-corners setting."), "\r",
32 | _("See < https://nls1729.github.io/activities_config.html >.")];
33 |
34 | var TITLE = _("Activities Configurator Extension");
35 |
36 | var NO_HOT_CORNERS_CHANGED = [
37 | "\n",
38 | _("The Activities Configurator requires the Activities Overview Hot Corner."), "\n",
39 | _("The enable-hot-corners setting is provided in this linux distro."), "\n",
40 | _("The enable-hot-corners setting was OFF causing the Hot Corner to be undefined."), "\n",
41 | _("The extension has set the setting from OFF to ON creating the Hot Corner."), "\n",
42 | _("The extension has set its preference Disable Hot Corner to ON disabling the Hot Corner."), "\n",
43 | _("The Hot Corner function can be enabled by setting Disable Hot Corner to OFF."), "\n",
44 | _("If the enable-hot-corners setting remains ON this message will not be displayed."), "\n",
45 | _("See < https://nls1729.github.io/activities_config.html >."),"\n\n"];
46 |
47 | var NO_HOT_CORNERS_UNHANDLED_KEY_FOUND = [
48 | "\n",
49 | _("The Activities Configurator requires the Activities Overview Hot Corner."), "\n",
50 | _("The enable-hot-corners setting is provided in this linux distro."), "\n",
51 | _("The extension has set the setting from OFF to ON to create the Hot Corner."), "\n",
52 | _("The Hot Corner is undefined. This is unexpected behavior."), "\n",
53 | _("The Activities Configurator is not functional."), "\n",
54 | _("An extension conflict or software error is the likely cause."), "\n",
55 | _("See < https://nls1729.github.io/activities_config.html >."),"\n\n"];
56 |
57 | var CLOSE = _("CLOSE");
58 |
59 | var NO_HOT_CORNERS_CONFLICT = [
60 | "\n",
61 | _("The Activities Configurator requires the Activities Overview Hot Corner."), "\n",
62 | _("The enable-hot-corners setting is not found in this linux distro."), "\n",
63 | _("The Activities Configurator is not functional."), "\n",
64 | _("Several other extensions are known to interact with the Hot Corner."), "\n",
65 | _("A conflict with another extension is the likely cause."), "\n",
66 | _("See < https://nls1729.github.io/activities_config.html >."),"\n\n"];
67 |
68 | var README = [
69 | _("The Activities Icon is selectable with the SELECT Icon button."), " ",
70 | _("The icon spacing on the panel is adjustable with the Icon Padding scale."), " ",
71 | _("The icon can be removed from the panel with the Hide Icon switch."), "\n\n",
72 | _("The Activities Text can be changed by entering New Text and then pressing the APPLY button."), " ",
73 | _("The text spacing on the panel is adjustable with the Text Padding scale."), " ",
74 | _("The text can be removed from the panel with the Hide Text switch."), "\n\n",
75 | _("Text and icon padding is left and right horizontal padding in pixels."), "\n\n",
76 | _("The Activities Button can be removed with the Remove Activities Button switch."), "\n\n",
77 | _("The sensitivity of the hot corner is adjustable with the Hot Corner Threshold scale."), " ",
78 | _("The hot corner Overview switching is disabled with the Disable Hot Corner switch."), "\n\n",
79 | _("If the hot corner is disabled the Overview can be toggled with the left super key."), "\n\n",
80 | _("The workspace background may appear more aesthetically pleasing without the black panel background."), " ",
81 | _("The color and transparency of the panel background is adjustable with Set Panel Background Button and Panel Transparency scale (0-100%)."), " ",
82 | _("The default is 0, no transparency or opaque and 100 is completely transparent."), " ",
83 | _("This feature requires a workspace background of colors which contrast with icons and text displayed in the panel."), "\n\n",
84 | _("Conflicts with other enabled extensions can be detected with the Enable Conflict Detection switch."), " ",
85 | _("This extension prefers the left-most corner of the panel."), " ",
86 | _("Another extension which inserts itself in the left-most corner of the panel is considered in conflict with this preference."), " ",
87 | _("This extension attempts to avoid conflicts by delaying its activation at shell startup time."), " ",
88 | _("The delay appears to resolve most conflicts allowing the extensions to function normally."), " ",
89 | _("Extensions which duplicate the functions of this extension may affect or be affected when both are enabled."), " ",
90 | _("Try different settings for the conflicting extensions in order to avoid conflicts."), " ",
91 | _("Conflict Detection is disabled by default. Enable only if you experience problems."), " ",
92 | _("When Conflict Detection is enabled, detected conflicts are usually automatically resolved."), " ",
93 | _("If a conflict is detected this extension will re-establish its prefered position in the panel."), " ",
94 | _("If another extension continues to create a conflict this extension will disable itself to avoid a race condition and notify the user."), " ",
95 | _("The user can disable Conflict Detection if it is acceptable to have this extension not in its preferred position."), " ",
96 | _("The conflict can be resolved by disabling the conflicting extension or this extension and restarting the session."), "\n\n",
97 | _("Extension settings are reset to their default values with the Extension Defaults RESET button."), "\n\n",
98 | _("The Extension Description README button displays this readme."), "\n\n",
99 | _("Clicking the Activities Icon or Text with the right mouse button executes GNOME Shell Extension Preferences."), "\n\n"];
100 |
101 | var CONFLICTS = [_("A conflict between an enabled extension and the Activities Configurator Extension exists."), " ",
102 | _("Please resolve the conflict by disabling the offending extension or disable the Activities Configurator and restart your session."), " ",
103 | _("See the README of the Activities Configurator for additional information."), "\n"];
104 |
105 | var ICON_MIA = [_("The Activities Icon was not found."), " ",
106 | _("The missing icon has been removed, renamed or possible filesystem corruption has damaged the icon."), " ",
107 | _("The default icon has automatically been selected to allow proper operation of the extension."), " ",
108 | _("You should determine and correct the problem, then re-select an icon."), "\n"];
109 |
110 | var README_TITLE = _("Activities Configurator - README");
111 |
112 | var MIA_ICON_TITLE = _("Activities Configurator - MISSING ICON");
113 |
114 | var SHOWING = {
115 | 'readme' : false,
116 | 'error' : false
117 | }
118 |
119 | var TEXTS = {
120 | 'readme' : README,
121 | 'error' : ICON_MIA
122 | }
123 |
124 | var TITLES = {
125 | 'readme' : README_TITLE,
126 | 'error' : MIA_ICON_TITLE
127 | }
128 |
129 | function makeTextStr(strings) {
130 | let str = '';
131 | for(let i = 0; i < strings.length; i++) {
132 | str = str + _(strings[i]);
133 | }
134 | return str;
135 | }
136 |
137 | function displayWindow(selector) {
138 | if(SHOWING[selector])
139 | return;
140 | SHOWING[selector] = true;
141 | let textStr = makeTextStr(TEXTS[selector]);
142 | let window = new Gtk.Window({'type': Gtk.WindowType.TOPLEVEL,
143 | 'title': _(TITLES[selector])});
144 | let sw = new Gtk.ScrolledWindow({'hscrollbar-policy': Gtk.PolicyType.AUTOMATIC,
145 | 'vscrollbar-policy': Gtk.PolicyType.AUTOMATIC,
146 | 'hexpand': true,
147 | 'vexpand': true});
148 | let tv = new Gtk.TextView({'wrap-mode': Gtk.WrapMode.WORD,
149 | 'editable': false});
150 | window.set_size_request(600, 400);
151 | let grid = new Gtk.Grid({'margin': 10, 'row_spacing': 10, 'column_spacing': 10});
152 | sw.add(tv);
153 | grid.attach(sw, 0,0,1,1);
154 | window.add(grid);
155 | window.connect('delete-event', function () {
156 | SHOWING[selector] = false;
157 | return false;});
158 | tv.get_buffer().set_text(textStr, -1);
159 | let parent = window.get_parent_window();
160 | window.set_transient_for(parent);
161 | window.set_modal(true);
162 | window.show_all();
163 | }
164 |
165 |
--------------------------------------------------------------------------------
/activities-config@nls1729/face-smile-3.svg:
--------------------------------------------------------------------------------
1 |
2 |
87 |
--------------------------------------------------------------------------------
/activities-config@nls1729/po/fr.po:
--------------------------------------------------------------------------------
1 | # Norman , 2016.
2 | msgid ""
3 | msgstr ""
4 | "Project-Id-Version: nls1729-extensions\n"
5 | "Report-Msgid-Bugs-To: \n"
6 | "POT-Creation-Date: 2016-07-19 15:30-0400\n"
7 | "PO-Revision-Date: 2016-10-29 01:32+0200\n"
8 | "Last-Translator: Quentin D. \n"
9 | "Language-Team: Underdogs\n"
10 | "Language: fr\n"
11 | "MIME-Version: 1.0\n"
12 | "Content-Type: text/plain; charset=UTF-8\n"
13 | "Content-Transfer-Encoding: 8bit\n"
14 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
15 | "X-Generator: Poedit 1.8.9\n"
16 |
17 | #: extension.js:46
18 | msgid "Conflict Detected:"
19 | msgstr "Conflit détécté :"
20 |
21 | #: extension.js:47
22 | msgid "Missing Icon:"
23 | msgstr "Icône manquante :"
24 |
25 | #: extension.js:603
26 | msgid "Conflict with hidden rounded corners."
27 | msgstr "Conflit avec les coins arrondis cachés."
28 |
29 | #: prefs.js:18
30 | msgid "New Text"
31 | msgstr "Nouveau texte"
32 |
33 | #: prefs.js:19
34 | msgid "Text Padding"
35 | msgstr "Décalage texte"
36 |
37 | #: prefs.js:20
38 | msgid "Hide Text"
39 | msgstr "Masquer texte"
40 |
41 | #: prefs.js:21
42 | msgid "Select Icon"
43 | msgstr "Sélectionner icône"
44 |
45 | #: prefs.js:22
46 | msgid "Scale Icon"
47 | msgstr "Redimensionner icône"
48 |
49 | #: prefs.js:23
50 | msgid "Icon Padding"
51 | msgstr "Décalage icône"
52 |
53 | #: prefs.js:24
54 | msgid "Hide Icon"
55 | msgstr "Cacher icône"
56 |
57 | #: prefs.js:25
58 | msgid "Hot Corner Threshold"
59 | msgstr "Sensibilité Coin actif"
60 |
61 | #: prefs.js:26
62 | msgid "Disable Hot Corner"
63 | msgstr "Désactiver Coin actif"
64 |
65 | #: prefs.js:27
66 | msgid "Remove Activities Button"
67 | msgstr "Supprimer Bouton Activités"
68 |
69 | #: prefs.js:28
70 | msgid "Panel Transparency"
71 | msgstr "Transparence de la barre"
72 |
73 | #: prefs.js:29
74 | msgid "Extension Defaults"
75 | msgstr "Réinitialiser paramètres par défaut"
76 |
77 | #: prefs.js:30
78 | msgid "Extension Description"
79 | msgstr "Documentation de l'extension"
80 |
81 | #: prefs.js:31
82 | msgid "APPLY"
83 | msgstr "APPLIQUER"
84 |
85 | #: prefs.js:32
86 | msgid "SELECT"
87 | msgstr "SÉLECTIONNER"
88 |
89 | #: prefs.js:33
90 | msgid "RESET"
91 | msgstr "RÉINITIALISER"
92 |
93 | #: prefs.js:34
94 | msgid "README"
95 | msgstr "LISEZ MOI"
96 |
97 | #: prefs.js:35
98 | msgid "Choose Icon"
99 | msgstr "Choisir icône"
100 |
101 | #: prefs.js:36
102 | msgid "Enable Conflict Detection"
103 | msgstr "Activer la détection des conflits"
104 |
105 | #: prefs.js:37
106 | msgid "Activities"
107 | msgstr "Activités"
108 |
109 | #: prefs.js:39
110 | msgid "Set Panel Background"
111 | msgstr "Sélectionner couleur de la Barre supérieure"
112 |
113 | #: prefs.js:40
114 | msgid "Hide Panel Rounded Corners"
115 | msgstr "Masquer les coins arrondis de la Barre supérieure"
116 |
117 | #: prefs.js:41
118 | msgid "Window Maximized Effect"
119 | msgstr "Effet fenêtre maximisée"
120 |
121 | #: prefs.js:42
122 | msgid "Hide Application Menu Button Icon"
123 | msgstr "Masquer l'icône du bouton du Menu d'applications"
124 |
125 | #: prefs.js:43
126 | msgid "Panel Shadow Color"
127 | msgstr "Couleur de l'ombre du panneau"
128 |
129 | #: prefs.js:44
130 | msgid "Transparency"
131 | msgstr "Transparence"
132 |
133 | #: prefs.js:45
134 | msgid "Vertical Length"
135 | msgstr "Longueur verticale"
136 |
137 | #: prefs.js:46
138 | msgid "Blur Radius"
139 | msgstr "Rayon du flou"
140 |
141 | #: prefs.js:47
142 | msgid "Spread Radius"
143 | msgstr "Rayon de propagation"
144 |
145 | #: prefs.js:48
146 | msgid "Override Shell Theme"
147 | msgstr "Outrepasser le thème du Shell"
148 |
149 | #: prefs.js:49
150 | msgid "Show Overview If No Applications Are Running"
151 | msgstr "Afficher la Vue d'ensemble si aucune Application n'est lancée."
152 |
153 | #: prefs.js:50
154 | msgid "Move Activities to the Right"
155 | msgstr "Déplacer Activités sur la droite"
156 |
157 | #: prefs.js:262
158 | msgid "Panel - No Effect"
159 | msgstr "Panneau - Pas d'effet"
160 |
161 | #: prefs.js:263
162 | msgid "Opaque Background Color"
163 | msgstr "Couleur de fond opaque"
164 |
165 | #: prefs.js:264
166 | msgid "Black Opaque Background"
167 | msgstr "Fond opaque de couleur noire"
168 |
169 | #: prefs.js:324
170 | msgid "Website"
171 | msgstr "Site Internet"
172 |
173 | #: prefs.js:491
174 | msgid "Images"
175 | msgstr "Images"
176 |
177 | #: notify.js:12
178 | msgid "Extension"
179 | msgstr "Extension"
180 |
181 | #: readme.js:7
182 | msgid "The Activities Icon is selectable with the SELECT Icon button."
183 | msgstr ""
184 |
185 | #: readme.js:8
186 | msgid ""
187 | "The icon spacing on the panel is adjustable with the Icon Padding scale."
188 | msgstr ""
189 |
190 | #: readme.js:9
191 | msgid "The icon can be removed from the panel with the Hide Icon switch."
192 | msgstr ""
193 |
194 | #: readme.js:10
195 | msgid ""
196 | "The Activities Text can be changed by entering New Text and then pressing "
197 | "the APPLY button."
198 | msgstr ""
199 |
200 | #: readme.js:11
201 | msgid ""
202 | "The text spacing on the panel is adjustable with the Text Padding scale."
203 | msgstr ""
204 |
205 | #: readme.js:12
206 | msgid "The text can be removed from the panel with the Hide Text switch."
207 | msgstr ""
208 |
209 | #: readme.js:13
210 | msgid "Text and icon padding is left and right horizontal padding in pixels."
211 | msgstr ""
212 |
213 | #: readme.js:14
214 | msgid ""
215 | "The Activities Button can be removed with the Remove Activities Button "
216 | "switch."
217 | msgstr ""
218 |
219 | #: readme.js:15
220 | msgid ""
221 | "The sensitivity of the hot corner is adjustable with the Hot Corner "
222 | "Threshold scale."
223 | msgstr ""
224 |
225 | #: readme.js:16
226 | msgid ""
227 | "The hot corner Overview switching is disabled with the Disable Hot Corner "
228 | "switch."
229 | msgstr ""
230 |
231 | #: readme.js:17
232 | msgid ""
233 | "If the hot corner is disabled the Overview can be toggled with the left "
234 | "super key."
235 | msgstr ""
236 |
237 | #: readme.js:18
238 | msgid ""
239 | "The workspace background may appear more aesthetically pleasing without the "
240 | "black panel background."
241 | msgstr ""
242 |
243 | #: readme.js:19
244 | msgid ""
245 | "The color and transparency of the panel background is adjustable with Set "
246 | "Panel Background Button and Panel Transparency scale (0-100%)."
247 | msgstr ""
248 |
249 | #: readme.js:20
250 | msgid ""
251 | "The default is 0, no transparency or opaque and 100 is completely "
252 | "transparent."
253 | msgstr ""
254 |
255 | #: readme.js:21
256 | msgid ""
257 | "This feature requires a workspace background of colors which contrast with "
258 | "icons and text displayed in the panel."
259 | msgstr ""
260 |
261 | #: readme.js:22
262 | msgid ""
263 | "Conflicts with other enabled extensions can be detected with the Enable "
264 | "Conflict Detection switch."
265 | msgstr ""
266 |
267 | #: readme.js:23
268 | msgid "This extension prefers the left-most corner of the panel."
269 | msgstr ""
270 |
271 | #: readme.js:24
272 | msgid ""
273 | "Another extension which inserts itself in the left-most corner of the panel "
274 | "is considered in conflict with this preference."
275 | msgstr ""
276 |
277 | #: readme.js:25
278 | msgid ""
279 | "This extension attempts to avoid conflicts by delaying its activation at "
280 | "shell startup time."
281 | msgstr ""
282 |
283 | #: readme.js:26
284 | msgid ""
285 | "The delay appears to resolve most conflicts allowing the extensions to "
286 | "function normally."
287 | msgstr ""
288 |
289 | #: readme.js:27
290 | msgid ""
291 | "Extensions which duplicate the functions of this extension may affect or be "
292 | "affected when both are enabled."
293 | msgstr ""
294 |
295 | #: readme.js:28
296 | msgid ""
297 | "Try different settings for the conflicting extensions in order to avoid "
298 | "conflicts."
299 | msgstr ""
300 |
301 | #: readme.js:29
302 | msgid ""
303 | "Conflict Detection is disabled by default. Enable only if you experience "
304 | "problems."
305 | msgstr ""
306 |
307 | #: readme.js:30
308 | msgid ""
309 | "When Conflict Detection is enabled, detected conflicts are usually "
310 | "automatically resolved."
311 | msgstr ""
312 |
313 | #: readme.js:31
314 | msgid ""
315 | "If a conflict is detected this extension will re-establish its prefered "
316 | "position in the panel."
317 | msgstr ""
318 |
319 | #: readme.js:32
320 | msgid ""
321 | "If another extension continues to create a conflict this extension will "
322 | "disable itself to avoid a race condition and notify the user."
323 | msgstr ""
324 |
325 | #: readme.js:33
326 | msgid ""
327 | "The user can disable Conflict Detection if it is acceptable to have this "
328 | "extension not in its preferred position."
329 | msgstr ""
330 |
331 | #: readme.js:34
332 | msgid ""
333 | "The conflict can be resolved by disabling the conflicting extension or this "
334 | "extension and restarting the session."
335 | msgstr ""
336 |
337 | #: readme.js:35
338 | msgid ""
339 | "Extension settings are reset to their default values with the Extension "
340 | "Defaults RESET button."
341 | msgstr ""
342 |
343 | #: readme.js:36
344 | msgid "The Extension Description README button displays this readme."
345 | msgstr ""
346 |
347 | #: readme.js:37
348 | msgid ""
349 | "Clicking the Activities Icon or Text with the right mouse button executes "
350 | "GNOME Shell Extension Preferences."
351 | msgstr ""
352 | "En cliquant sur l'icône ou texte Activités avec le bouton droit de la "
353 | "souris, exécute Préférences GNOME Shell Extension."
354 |
355 | #: readme.js:39
356 | msgid ""
357 | "A conflict between an enabled extension and the Activities Configurator "
358 | "Extension exists."
359 | msgstr ""
360 | "Il y a un conflit entre une extension activée et l'extension Activités "
361 | "Configurator."
362 |
363 | #: readme.js:40
364 | msgid ""
365 | "Please resolve the conflict by disabling the offending extension or disable "
366 | "the Activities Configurator and restart your session."
367 | msgstr ""
368 | "Résolvez le conflit en désactivant l'extension incriminée ou désactivez "
369 | "Activités Configurator et redémarrez votre session."
370 |
371 | #: readme.js:41
372 | msgid ""
373 | "See the README of the Activities Configurator for additional information."
374 | msgstr ""
375 | "Voir le fichier LISEZMOI de Activités Configurator pour plus d'informations."
376 |
377 | #: readme.js:43
378 | msgid "The Activities Icon was not found."
379 | msgstr "L'icône Activités n'a pas été trouvé."
380 |
381 | #: readme.js:44
382 | msgid ""
383 | "The missing icon has been removed, renamed or possible filesystem corruption "
384 | "has damaged the icon."
385 | msgstr ""
386 | "L'icône manquante a été supprimé, renommé ou une possible corruption du "
387 | "système de fichiers a endommagé l'icône."
388 |
389 | #: readme.js:45
390 | msgid ""
391 | "The default icon has automatically been selected to allow proper operation "
392 | "of the extension."
393 | msgstr ""
394 | "L'icône par défaut a été automatiquement sélectionnée pour permettre le bon "
395 | "fonctionnement de l'extension."
396 |
397 | #: readme.js:46
398 | #, fuzzy
399 | msgid "You should determine and correct the problem, then re-select an icon."
400 | msgstr ""
401 | "Vous devez déterminer et corriger le problème, puis re-sélectionner une "
402 | "icône."
403 |
404 | #: readme.js:48
405 | msgid "Activities Configurator - README"
406 | msgstr "Activités Configurator - LISEZMOI"
407 |
408 | #: readme.js:50
409 | msgid "Activities Configurator - MISSING ICON"
410 | msgstr "Activités Configurator - ICONE MANQUANTE"
411 |
--------------------------------------------------------------------------------
/activities-config@nls1729/message.pot:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: PACKAGE VERSION\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2019-09-20 07:33-0400\n"
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 | "Last-Translator: FULL NAME \n"
14 | "Language-Team: LANGUAGE \n"
15 | "Language: \n"
16 | "MIME-Version: 1.0\n"
17 | "Content-Type: text/plain; charset=CHARSET\n"
18 | "Content-Transfer-Encoding: 8bit\n"
19 |
20 | #: extension.js:593
21 | msgid "Missing Icon:"
22 | msgstr ""
23 |
24 | #: extension.js:759
25 | msgid "Conflict with hidden rounded corners."
26 | msgstr ""
27 |
28 | #: extension.js:924
29 | msgid "Conflict Detected:"
30 | msgstr ""
31 |
32 | #: prefs.js:61
33 | msgid "Activities"
34 | msgstr ""
35 |
36 | #: prefs.js:62
37 | msgid "Select Icon"
38 | msgstr ""
39 |
40 | #: prefs.js:64
41 | msgid "Scale Icon"
42 | msgstr ""
43 |
44 | #: prefs.js:65
45 | msgid "Hide Icon"
46 | msgstr ""
47 |
48 | #: prefs.js:66
49 | msgid "Icon Padding"
50 | msgstr ""
51 |
52 | #: prefs.js:67
53 | msgid "New Text"
54 | msgstr ""
55 |
56 | #: prefs.js:68
57 | msgid "Hide Text"
58 | msgstr ""
59 |
60 | #: prefs.js:69
61 | msgid "Text Padding"
62 | msgstr ""
63 |
64 | #: prefs.js:70
65 | msgid "Remove Activities Button"
66 | msgstr ""
67 |
68 | #: prefs.js:71
69 | msgid "Hot Corner Threshold"
70 | msgstr ""
71 |
72 | #: prefs.js:72
73 | msgid "Disable Hot Corner"
74 | msgstr ""
75 |
76 | #: prefs.js:73
77 | msgid "Hide Panel Rounded Corners"
78 | msgstr ""
79 |
80 | #: prefs.js:74
81 | msgid "Hide Application Menu Button Icon"
82 | msgstr ""
83 |
84 | #: prefs.js:75
85 | msgid "Show Overview If No Applications Are Running"
86 | msgstr ""
87 |
88 | #: prefs.js:76
89 | msgid "Set Panel Background"
90 | msgstr ""
91 |
92 | #: prefs.js:77
93 | msgid "Panel Transparency"
94 | msgstr ""
95 |
96 | #: prefs.js:78
97 | msgid "Panel Shadow Color"
98 | msgstr ""
99 |
100 | #: prefs.js:79
101 | msgid "Transparency"
102 | msgstr ""
103 |
104 | #: prefs.js:80
105 | msgid "Vertical Length"
106 | msgstr ""
107 |
108 | #: prefs.js:81
109 | msgid "Blur Radius"
110 | msgstr ""
111 |
112 | #: prefs.js:82
113 | msgid "Spread Radius"
114 | msgstr ""
115 |
116 | #: prefs.js:83
117 | msgid "Window Maximized Effect"
118 | msgstr ""
119 |
120 | #: prefs.js:84
121 | msgid "Move Activities to the Right"
122 | msgstr ""
123 |
124 | #: prefs.js:85
125 | msgid "Enable Conflict Detection"
126 | msgstr ""
127 |
128 | #: prefs.js:86
129 | msgid "Extension Defaults"
130 | msgstr ""
131 |
132 | #: prefs.js:87
133 | msgid "Extension Description"
134 | msgstr ""
135 |
136 | #: prefs.js:95
137 | msgid "SELECT"
138 | msgstr ""
139 |
140 | #: prefs.js:122
141 | msgid "APPLY"
142 | msgstr ""
143 |
144 | #: prefs.js:188
145 | msgid "Override Shell Theme"
146 | msgstr ""
147 |
148 | #: prefs.js:250
149 | msgid "Panel - No Effect"
150 | msgstr ""
151 |
152 | #: prefs.js:251
153 | msgid "Opaque Background Color"
154 | msgstr ""
155 |
156 | #: prefs.js:252
157 | msgid "Black Opaque Background"
158 | msgstr ""
159 |
160 | #: prefs.js:278
161 | msgid "Tile Maximized Effect Off"
162 | msgstr ""
163 |
164 | #: prefs.js:304
165 | msgid "RESET"
166 | msgstr ""
167 |
168 | #: prefs.js:311
169 | msgid "README"
170 | msgstr ""
171 |
172 | #: prefs.js:322
173 | msgid "Website"
174 | msgstr ""
175 |
176 | #: prefs.js:484
177 | msgid "Choose Icon"
178 | msgstr ""
179 |
180 | #: prefs.js:489
181 | msgid "Images"
182 | msgstr ""
183 |
184 | #: readme.js:31
185 | msgid "Do not disable enable-hot-corners global setting."
186 | msgstr ""
187 |
188 | #: readme.js:32 readme.js:45 readme.js:55 readme.js:66
189 | msgid "See < https://nls1729.github.io/activities_config.html >."
190 | msgstr ""
191 |
192 | #: readme.js:34
193 | msgid "Activities Configurator Extension"
194 | msgstr ""
195 |
196 | #: readme.js:38 readme.js:49 readme.js:61
197 | msgid ""
198 | "The Activities Configurator requires the Activities Overview Hot Corner."
199 | msgstr ""
200 |
201 | #: readme.js:39 readme.js:50
202 | msgid "The global enable-hot-corners setting is provided in this linux distro."
203 | msgstr ""
204 |
205 | #: readme.js:40
206 | msgid ""
207 | "The enable-hot-corners setting was OFF causing the Hot Corner to be "
208 | "undefined."
209 | msgstr ""
210 |
211 | #: readme.js:41
212 | msgid ""
213 | "The extension has set the setting from OFF to ON creating the Hot Corner."
214 | msgstr ""
215 |
216 | #: readme.js:42
217 | msgid ""
218 | "The extension has set its preference Disable Hot Corner to ON disabling the "
219 | "Hot Corner."
220 | msgstr ""
221 |
222 | #: readme.js:43
223 | msgid ""
224 | "The Hot Corner function can be enabled by setting Disable Hot Corner to OFF."
225 | msgstr ""
226 |
227 | #: readme.js:44
228 | msgid ""
229 | "If the enable-hot-corners setting remains ON this message will not be "
230 | "displayed."
231 | msgstr ""
232 |
233 | #: readme.js:51
234 | msgid ""
235 | "The extension has set the setting from OFF to ON to create the Hot Corner."
236 | msgstr ""
237 |
238 | #: readme.js:52
239 | msgid "The Hot Corner is undefined. This is unexpected behavior."
240 | msgstr ""
241 |
242 | #: readme.js:53 readme.js:63
243 | msgid "The Activities Configurator is not functional."
244 | msgstr ""
245 |
246 | #: readme.js:54
247 | msgid "An extension conflict or software error is the likely cause."
248 | msgstr ""
249 |
250 | #: readme.js:57
251 | msgid "CLOSE"
252 | msgstr ""
253 |
254 | #: readme.js:62
255 | msgid ""
256 | "The global enable-hot-corners setting is not found in this linux distro."
257 | msgstr ""
258 |
259 | #: readme.js:64
260 | msgid "Several other extensions are known to interact with the Hot Corner."
261 | msgstr ""
262 |
263 | #: readme.js:65
264 | msgid "A conflict with another extension is the likely cause."
265 | msgstr ""
266 |
267 | #: readme.js:69
268 | msgid "The Activities Icon is selectable with the SELECT Icon button."
269 | msgstr ""
270 |
271 | #: readme.js:70
272 | msgid ""
273 | "The icon spacing on the panel is adjustable with the Icon Padding scale."
274 | msgstr ""
275 |
276 | #: readme.js:71
277 | msgid "The icon can be removed from the panel with the Hide Icon switch."
278 | msgstr ""
279 |
280 | #: readme.js:72
281 | msgid ""
282 | "The Activities Text can be changed by entering New Text and then pressing "
283 | "the APPLY button."
284 | msgstr ""
285 |
286 | #: readme.js:73
287 | msgid ""
288 | "The text spacing on the panel is adjustable with the Text Padding scale."
289 | msgstr ""
290 |
291 | #: readme.js:74
292 | msgid "The text can be removed from the panel with the Hide Text switch."
293 | msgstr ""
294 |
295 | #: readme.js:75
296 | msgid "Text and icon padding is left and right horizontal padding in pixels."
297 | msgstr ""
298 |
299 | #: readme.js:76
300 | msgid ""
301 | "The Activities Button can be removed with the Remove Activities Button "
302 | "switch."
303 | msgstr ""
304 |
305 | #: readme.js:77
306 | msgid ""
307 | "The sensitivity of the hot corner is adjustable with the Hot Corner "
308 | "Threshold scale."
309 | msgstr ""
310 |
311 | #: readme.js:78
312 | msgid ""
313 | "The hot corner Overview switching is disabled with the Disable Hot Corner "
314 | "switch."
315 | msgstr ""
316 |
317 | #: readme.js:79
318 | msgid ""
319 | "If the hot corner is disabled the Overview can be toggled with the left "
320 | "super key."
321 | msgstr ""
322 |
323 | #: readme.js:80
324 | msgid ""
325 | "The workspace background may appear more aesthetically pleasing without the "
326 | "black panel background."
327 | msgstr ""
328 |
329 | #: readme.js:81
330 | msgid ""
331 | "The color and transparency of the panel background is adjustable with Set "
332 | "Panel Background Button and Panel Transparency scale (0-100%)."
333 | msgstr ""
334 |
335 | #: readme.js:82
336 | msgid ""
337 | "The default is 0, no transparency or opaque and 100 is completely "
338 | "transparent."
339 | msgstr ""
340 |
341 | #: readme.js:83
342 | msgid ""
343 | "This feature requires a workspace background of colors which contrast with "
344 | "icons and text displayed in the panel."
345 | msgstr ""
346 |
347 | #: readme.js:84
348 | msgid ""
349 | "Conflicts with other enabled extensions can be detected with the Enable "
350 | "Conflict Detection switch."
351 | msgstr ""
352 |
353 | #: readme.js:85
354 | msgid "This extension prefers the left-most corner of the panel."
355 | msgstr ""
356 |
357 | #: readme.js:86
358 | msgid ""
359 | "Another extension which inserts itself in the left-most corner of the panel "
360 | "is considered in conflict with this preference."
361 | msgstr ""
362 |
363 | #: readme.js:87
364 | msgid ""
365 | "This extension attempts to avoid conflicts by delaying its activation at "
366 | "shell startup time."
367 | msgstr ""
368 |
369 | #: readme.js:88
370 | msgid ""
371 | "The delay appears to resolve most conflicts allowing the extensions to "
372 | "function normally."
373 | msgstr ""
374 |
375 | #: readme.js:89
376 | msgid ""
377 | "Extensions which duplicate the functions of this extension may affect or be "
378 | "affected when both are enabled."
379 | msgstr ""
380 |
381 | #: readme.js:90
382 | msgid ""
383 | "Try different settings for the conflicting extensions in order to avoid "
384 | "conflicts."
385 | msgstr ""
386 |
387 | #: readme.js:91
388 | msgid ""
389 | "Conflict Detection is disabled by default. Enable only if you experience "
390 | "problems."
391 | msgstr ""
392 |
393 | #: readme.js:92
394 | msgid ""
395 | "When Conflict Detection is enabled, detected conflicts are usually "
396 | "automatically resolved."
397 | msgstr ""
398 |
399 | #: readme.js:93
400 | msgid ""
401 | "If a conflict is detected this extension will re-establish its prefered "
402 | "position in the panel."
403 | msgstr ""
404 |
405 | #: readme.js:94
406 | msgid ""
407 | "If another extension continues to create a conflict this extension will "
408 | "disable itself to avoid a race condition and notify the user."
409 | msgstr ""
410 |
411 | #: readme.js:95
412 | msgid ""
413 | "The user can disable Conflict Detection if it is acceptable to have this "
414 | "extension not in its preferred position."
415 | msgstr ""
416 |
417 | #: readme.js:96
418 | msgid ""
419 | "The conflict can be resolved by disabling the conflicting extension or this "
420 | "extension and restarting the session."
421 | msgstr ""
422 |
423 | #: readme.js:97
424 | msgid ""
425 | "Extension settings are reset to their default values with the Extension "
426 | "Defaults RESET button."
427 | msgstr ""
428 |
429 | #: readme.js:98
430 | msgid "The Extension Description README button displays this readme."
431 | msgstr ""
432 |
433 | #: readme.js:99
434 | msgid ""
435 | "Clicking the Activities Icon or Text with the right mouse button executes "
436 | "GNOME Shell Extension Preferences."
437 | msgstr ""
438 |
439 | #: readme.js:101
440 | msgid ""
441 | "A conflict between an enabled extension and the Activities Configurator "
442 | "Extension exists."
443 | msgstr ""
444 |
445 | #: readme.js:102
446 | msgid ""
447 | "Please resolve the conflict by disabling the offending extension or disable "
448 | "the Activities Configurator and restart your session."
449 | msgstr ""
450 |
451 | #: readme.js:103
452 | msgid ""
453 | "See the README of the Activities Configurator for additional information."
454 | msgstr ""
455 |
456 | #: readme.js:105
457 | msgid "The Activities Icon was not found."
458 | msgstr ""
459 |
460 | #: readme.js:106
461 | msgid ""
462 | "The missing icon has been removed, renamed or possible filesystem corruption "
463 | "has damaged the icon."
464 | msgstr ""
465 |
466 | #: readme.js:107
467 | msgid ""
468 | "The default icon has automatically been selected to allow proper operation "
469 | "of the extension."
470 | msgstr ""
471 |
472 | #: readme.js:108
473 | msgid "You should determine and correct the problem, then re-select an icon."
474 | msgstr ""
475 |
476 | #: readme.js:110
477 | msgid "Activities Configurator - README"
478 | msgstr ""
479 |
480 | #: readme.js:112
481 | msgid "Activities Configurator - MISSING ICON"
482 | msgstr ""
483 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/dndBtn.js:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | Do Not Disturb Button Gnome Shell Extension
4 |
5 | Copyright (c) 2015-2019 Norman L. Smith
6 |
7 | This extension is free software; you can redistribute it and/or
8 | modify it under the terms of the GNU General Public License
9 | as published by the Free Software Foundation; either version 2
10 | of the License, or (at your option) any later version.
11 |
12 | This extension is distributed in the hope that it will be useful,
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | GNU General Public License for more details.
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program. If not, see
19 | < https://www.gnu.org/licenses/old-licenses/gpl-2.0.html >.
20 |
21 | This extension is a derived work of the Gnome Shell.
22 | */
23 |
24 | const GLib = imports.gi.GLib;
25 | const Gio = imports.gi.Gio;
26 | const Clutter = imports.gi.Clutter;
27 | const Meta = imports.gi.Meta;
28 | const Shell = imports.gi.Shell;
29 | const St = imports.gi.St;
30 | const Main = imports.ui.main;
31 | const PanelMenu = imports.ui.panelMenu;
32 | const GnomeSession = imports.misc.gnomeSession;
33 | const Mainloop = imports.mainloop;
34 | const Me = imports.misc.extensionUtils.getCurrentExtension();
35 | const Notify = Me.imports.notify;
36 | const Util = imports.misc.util;
37 | const DOMAIN = Me.metadata['gettext-domain'];
38 | const _ = imports.gettext.domain(DOMAIN).gettext;
39 | const BUSY_PATH = Me.path + '/busy-notifications-symbolic.svg'
40 | const AVAILABLE_PATH = Me.path + '/available-notifications-symbolic.svg'
41 | const SHORTCUT = 'shortcut';
42 |
43 |
44 | class DoNotDisturbButton extends PanelMenu.Button {
45 |
46 | constructor(settings, overrideAllowed) {
47 | super(0.5, null, true);
48 | this._settings = settings;
49 | this._setIcons();
50 | let iconStyle = 'icon-size: 1.3em; padding-left: 2px; padding-right: 2px';
51 | this._iconBusy.set_style(iconStyle);
52 | this._iconAvailable.set_style(iconStyle);
53 | this._notEmptyCount = new St.Label({ text: '', y_align: Clutter.ActorAlign.CENTER });
54 | this._timeoutActiveIndicator = new St.Label({ text: '', y_align: Clutter.ActorAlign.CENTER });
55 | this._timeoutActive = false;
56 | this._layoutBox = new St.BoxLayout();
57 | this._layoutBox.add_actor(this._iconAvailable);
58 | this._layoutBox.add_actor(this._iconBusy);
59 | this._layoutBox.add_actor(this._timeoutActiveIndicator);
60 | this._layoutBox.add_actor(this._notEmptyCount);
61 | this.actor.add_actor(this._layoutBox);
62 | this._touchEventSig = this.actor.connect('touch-event', this._onButtonPress.bind(this));
63 | this._btnPressSig = this.actor.connect_after('button-press-event', this._onButtonPress.bind(this));
64 | this._keyPressSig = this.actor.connect_after('key-press-event', this._onKeyPress.bind(this));
65 | this._statusBusy = false;
66 | this._presence = new GnomeSession.Presence((proxy, error) => {
67 | this._onStatusChanged(proxy.status);
68 | });
69 | this._statusChangedSig = this._presence.connectSignal('StatusChanged', (proxy, senderName, [status]) => {
70 | this._onStatusChanged(status);
71 | });
72 | this._changedSettingsSig = this._settings.connect('changed::shortcut', () => {
73 | this._removeKeybinding();
74 | this._addKeybinding();
75 | });
76 | this._showCountChangedSig = this._settings.connect('changed::panel-count-show', () => {
77 | this._showCount = this._settings.get_boolean('panel-count-show');
78 | this._setNotEmptyCount();
79 | });
80 | this._timeoutProcessed = false;
81 | this._timeoutInterval = 0;
82 | this._timeoutAlways = false;
83 | this._timeoutEnabled = false;
84 | this._timeoutEnabledChanged();
85 | this._timeoutEnabledChangedSig = this._settings.connect('changed::time-out-enabled', this._timeoutEnabledChanged.bind(this));
86 | this._list = Main.panel.statusArea.dateMenu._messageList._notificationSection._list;
87 | this._listActorAddedSig = this._list.connect('actor-added', this._setNotEmptyCount.bind(this));
88 | this._listActorRemovedSig = this._list.connect('actor-removed', this._setNotEmptyCount.bind(this));
89 | this._addKeybinding();
90 | this._showCount = this._settings.get_boolean('panel-count-show');
91 | this._indicatorActor = Main.panel.statusArea['dateMenu']._indicator.actor;
92 | this._indicatorSources = Main.panel.statusArea['dateMenu']._indicator._sources;
93 | this._timeoutId = Mainloop.timeout_add(30000, this._findUnseenNotifications.bind(this));
94 | this._checkTimeoutId = Mainloop.timeout_add(15000, this._checkTimeout.bind(this));
95 |
96 |
97 | //Set user preferred BUSY state at login
98 | let override = this._settings.get_boolean('override');
99 | if (override && overrideAllowed) {
100 | // Do not use last set persistent busy state instead use user preference for override
101 | let overrideBusyState = this._settings.get_boolean('overrride-busy-state');
102 | this._toggle = overrideBusyState;
103 | } else {
104 | // Use last set persistent busy state
105 | this._toggle = this._settings.get_boolean('busy-state'); // Set user preferred BUSY state at login.
106 | }
107 | this._togglePresence();
108 | this._toggle = this._settings.get_boolean('busy-state'); // Set user preferred BUSY state at login.
109 |
110 | }
111 |
112 | _timeoutEnabledChanged() {
113 | this._timeoutAlways = this._settings.get_boolean('time-out-always');
114 | this._timeoutEnabled = this._settings.get_boolean('time-out-enabled');
115 | if (!this._timeoutActive && this._timeoutEnabled && this._statusBusy) {
116 | this._processTimeout(false);
117 | } else if (!this._timeoutEnabled && this._timeoutActive) {
118 | this._processTimeout(false);
119 | }
120 | }
121 |
122 | _setIcons() {
123 | let available = this._settings.get_string('available-icon');
124 | if (!GLib.file_test(available, GLib.FileTest.EXISTS))
125 | available = 'default';
126 | if (available == 'default')
127 | available = AVAILABLE_PATH;
128 | this._iconAvailable = new St.Icon({ gicon: Gio.icon_new_for_string(available) });
129 | let busy = this._settings.get_string('busy-icon');
130 | if (!GLib.file_test(busy, GLib.FileTest.EXISTS))
131 | busy = 'default';
132 | if (busy == 'default')
133 | busy = BUSY_PATH;
134 | this._iconBusy = new St.Icon({ gicon: Gio.icon_new_for_string(busy) });
135 | }
136 |
137 | _findUnseenNotifications() {
138 | if (!this._indicatorActor.visible) {
139 | let count = 0;
140 | this._indicatorSources.forEach((source) => {
141 | count += source.unseenCount;
142 | });
143 | if (count > 0)
144 | this._indicatorActor.visible = true;
145 | }
146 | return true;
147 | }
148 |
149 | _checkTimeout() {
150 | this._processTimeout(true);
151 | return true;
152 | }
153 |
154 | _processTimeout(timeout) {
155 | if (this._timeoutProcessed & !this._statusBusy) {
156 | this._timeoutProcessed = false;
157 | Notify.notify(_("Timeout Once"),_("Busy State Timeout expired. Timeout disabled."));
158 | this._settings.set_boolean('time-out-enabled', false);
159 | return;
160 | }
161 | if (timeout) {
162 | if (!this._statusBusy)
163 | return;
164 | if (!this._timeoutEnabled || this._timeoutProcessed)
165 | return;
166 | this._timeoutInterval--;
167 | if (this._timeoutInterval < 0) {
168 | if (!this._timeoutAlways)
169 | this._timeoutProcessed = true;
170 | this._togglePresence();
171 | return;
172 | }
173 | } else { //handle status change
174 | this._timeoutInterval = this._settings.get_int('time-out-interval') * 4;
175 | if (this._timeoutEnabled && this._statusBusy) {
176 | this._timeoutActiveIndicator.set_text("\u23F3");
177 | this._timeoutActive = true;
178 | } else {
179 | this._timeoutActiveIndicator.set_text('');
180 | this._timeoutActive = false;
181 | }
182 | }
183 | }
184 |
185 | _setNotEmptyCount() {
186 | let count = this._list.get_n_children();
187 | // hide count if no notifications are available or the user doesn't want to see it
188 | if (count < 1 || !this._showCount)
189 | this._notEmptyCount.set_text('');
190 | else
191 | this._notEmptyCount.set_text(count.toString());
192 | }
193 |
194 | _onStatusChanged(status) {
195 | this._iconAvailable.hide();
196 | this._iconBusy.hide();
197 | if (status == GnomeSession.PresenceStatus.BUSY) {
198 | this._statusBusy = true;
199 | this._iconBusy.show();
200 | } else {
201 | this._statusBusy = false;
202 | this._iconAvailable.show();
203 | }
204 | this._toggle = !this._statusBusy;
205 | this._settings.set_boolean('busy-state', this._statusBusy);
206 | this._processTimeout(false);
207 | }
208 |
209 | _onButtonPress(actor, event) {
210 | let type = event.type();
211 | let pressed = type == Clutter.EventType.BUTTON_PRESS;
212 | if (!pressed && type == Clutter.EventType.TOUCH_BEGIN) {
213 | this._togglePresence();
214 | return Clutter.EVENT_STOP;
215 | }
216 | let button = pressed ? event.get_button() : -1;
217 | if (button == -1) {
218 | return Clutter.EVENT_PROPAGATE;
219 | }
220 | if (button == 1) {
221 | this._togglePresence();
222 | } else if (button == 3) {
223 | Util.spawn(["gnome-shell-extension-prefs", Me.uuid]);
224 | }
225 | return Clutter.EVENT_STOP;
226 | }
227 |
228 | _onKeyPress(actor, event) {
229 | let symbol = event.get_key_symbol();
230 | if (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_space) {
231 | this._togglePresence();
232 | return Clutter.EVENT_STOP;
233 | }
234 | return Clutter.EVENT_PROPAGATE;
235 | }
236 |
237 | _togglePresence() {
238 | if (this._toggle) {
239 | this._updatePresense(false);
240 | } else {
241 | this._updatePresense(true);
242 | }
243 | this._toggle = !this._toggle;
244 | }
245 |
246 | _updatePresense(state) {
247 | this._status = state ? GnomeSession.PresenceStatus.AVAILABLE : GnomeSession.PresenceStatus.BUSY;
248 | this._presence.SetStatusRemote(this._status);
249 | }
250 |
251 | _removeKeybinding() {
252 | Main.wm.removeKeybinding(SHORTCUT);
253 | }
254 |
255 | _addKeybinding() {
256 | Main.wm.addKeybinding(SHORTCUT, this._settings, Meta.KeyBindingFlags.NONE, Shell.ActionMode.NORMAL, this._togglePresence.bind(this));
257 | }
258 |
259 | destroy() {
260 | Mainloop.source_remove(this._timeoutId);
261 | Mainloop.source_remove(this._checkTimeoutId);
262 | this._settings.disconnect(this._showCountChangedSig);
263 | this._removeKeybinding();
264 | this.actor.disconnect(this._touchEventSig);
265 | this.actor.disconnect(this._btnPressSig);
266 | this.actor.disconnect(this._keyPressSig);
267 | this._settings.disconnect(this._changedSettingsSig);
268 | this._settings.disconnect(this._timeoutEnabledChangedSig);
269 | this._list.disconnect(this._listActorAddedSig);
270 | this._list.disconnect(this._listActorRemovedSig);
271 | this.actor.get_children().forEach(function(c) { c.destroy(); });
272 | super.destroy();
273 | }
274 | };
275 |
276 |
277 | function newDoNotDisturbButton(settings, overrideAllowed) {
278 | return new DoNotDisturbButton(settings, overrideAllowed);
279 | }
280 |
281 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/README.txt.in:
--------------------------------------------------------------------------------
1 | README
2 |
3 | donotdisturb-button@nls1729
4 |
5 | Gnome Shell 3.16 removed the ability to set a busy status for
6 | notifications.
7 |
8 | This extension only sets status for notifications. It does not
9 | integrate setting of presence with Online Accounts.
10 |
11 | The issue is discussed on the Fedora Desktop List:
12 | https://lists.fedoraproject.org/pipermail/desktop/2015-June/012417.html
13 |
14 | Panel button toggles presense status {BUSY | AVAILABLE}.
15 |
16 | Uploaded to ego website 2015-06-15.
17 |
18 | Corrected error in README.txt updated metadata.json
19 |
20 | Uploaded to ego website 2015-09-26.
21 |
22 | Uploaded version 6 to ego website 2016-09-23.
23 |
24 | Added preferences to allow assigning keyboard shortcut to toggle button.
25 | Uploaded version 7 to ego website 2016-10-07.
26 |
27 | Added notification count. Changed to find location of clock and locate
28 | button next to clock. Uploaded version 8 to ego website 2016-10-23.
29 |
30 | Changed panel button location to be set by preference (user request).
31 | Added Greek translations thanks to Tom Tryfonidis.
32 | Uploaded version 9 to ego website 2016-11-12.
33 |
34 | Do Not Disturb Button - updated copyright due to fsf address change
35 | Removed addess and added license url instead in extension.js.
36 | Removed copyright from prefs.js. Uploaded for review 2016-11-23.
37 |
38 | Do Not Disturb Button - changed name of translation mo files
39 | requested by Andrew Toskin to avoid duplicate filenames when
40 | creating RPM packages for Fedora. Changed to use default
41 | schema directory if not installed from zip file. Uploaded for
42 | review 2017-03-12.
43 |
44 | Do Not Disturb Button - changed available and busy icons to the
45 | style of the No Notifications icon displayed in the notifications
46 | area of the calendar. Github issue #22. Updated for GS3.24
47 | Uploaded for review 2017-04-05
48 |
49 | Do Not Disturb Button - changed to make display of notification
50 | count optional. Added function to show notification indicator dot
51 | (after time display in panel) when unseen notifications reside in
52 | the calendar notification area. Thanks to Christoph Schroeder for
53 | Github nls1729/acme-code pull request #23 Add option to hide
54 | notification count. Translations updated. Thanks to Jonatan Zeidler.
55 | Uploaded for review 2017-05-21.
56 |
57 | Do Not Disturb Button - The modified Gnome Shell in the Ubuntu default
58 | Ubuntu Session operates in the 'ubuntu' mode. Removed restrictions
59 | based on mode to accomadate Ubuntu 17.10 and 18.04 and going forward.
60 | Added a preference to allow user to set the busy state at extension
61 | init (ie. login). Uploaded for review 2017-11-25.
62 |
63 | Do Not Disturb Button - Updated translations. Uploaded for
64 | review 2017-11-30.
65 |
66 | 2018-04-15 Updated metadata.json to GS 3.28
67 |
68 | 2018-04-19 Before the following changes there was one option which
69 | allowed the user to set busy state of the session with the Busy
70 | preference. If unchecked the busy state was set to Available at login.
71 | If checked the busy state was set to Busy. During the session the busy
72 | state could be set by clicking the extension icon. The busy state set
73 | by the panel icon was not retained during a screen lock or a switch
74 | to another user. A re-login to the current session after a screen lock
75 | or user switch was treated like logging into a new startup session.
76 | The Busy State preference determined the busy state of the extension.
77 |
78 | The Busy State Override At Session Start preference is added and consists
79 | of an "Enable" checkbox, "Busy" radiobutton and "Avaliable" radiobutton.
80 | If "Enable" is unchecked, the default is that the state of the extension
81 | icon controls the busy state in a persistent manner. Whatever state the
82 | icon was in when the session ended or was interrupted by a screen lock or
83 | user switch determines the state at the next session login or re-login
84 | after a screen lock or user switch. If the "Enable" is checked the state
85 | indicated by the selected radiobutton will only set the state at the next
86 | new session startup login; otherwise, the new persistent behavoir set
87 | by the extension panel button is in effect.
88 |
89 | 2018-04-22 Uploaded for review.
90 |
91 | 2018-07-29 Lots of changes for the future...
92 |
93 | See:
94 | https://bugzilla.gnome.org/show_bug.cgi?id=770185#c21
95 | https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/112/diffs
96 | https://github.com/nls1729/acme-code/issues/38
97 |
98 | Added code to handle clutter.EventType.TOUCH_BEGIN to act the same as
99 | a mouse click off the extension's panel button.
100 |
101 | Updated code to use arrow notation => instead of Lang.bind for anonymous
102 | functions.
103 |
104 | Updated code to use ES6 classes.
105 |
106 | Updated to use GJS ES6 class wrapper for GObject class in prefs.js.
107 |
108 | Updated to use Function.prototype.bind() instead of Lang.bind for named
109 | call backs.
110 |
111 | 2018-08-10 Thanks to p-bo for adding Czech translation.
112 | Uploaded for review. Reviewer please see previous comment 2018-07-29.
113 |
114 | 2018-10-03 Completed changes for ES6.
115 |
116 | 2018-10-09 Uploaded for review.
117 |
118 |
119 | 2018-10-28 Added user selection of the panel button icons to indicate busy or
120 | available status. Owen Williams filed a bug report that the provided icons were
121 | not clearly visible when using some user themes. We decided user selection of the
122 | icons would be useful. Changed prefs.js widget arrangement to better display
123 | translated text.
124 |
125 | 2018-10-29 Uploaded for review.
126 |
127 | 2019-02-17 Added Busy State Timeout feature. Version 26.01.
128 |
129 | ----
130 | Description of the Busy State Timeout Feature
131 |
132 | The Panel Button has been changed. It continues to toggle the
133 | extension state between Busy and Available when clicked with the
134 | primary mouse button. Since the Preferences Tool will be involved
135 | with using the Busy State Timeout Feature, quick access to the
136 | tool is provided by a secondary mouse click of the Panel Button.
137 |
138 | New Icons
139 |
140 | When a Busy State Timeout starts an icon is displayed, ⏳.
141 |
142 | When the Busy State Timeout Feature is enabled by checking the
143 | Enable Checkbox the duration of the timeout is calculated and
144 | displayed along with an icon, ⌛.
145 |
146 | Extension States
147 |
148 | When the Busy State of the extension is set and the the Busy State
149 | Timeout Feature is enabled the timeout will start. If during the
150 | duration of a timeout the extension's state is changed from Busy to
151 | Available the timeout will be canceled.
152 |
153 | Preferences
154 |
155 | If a timeout is in progress when the Preferences Tool is activated
156 | the timeout is cancelled and the feature is disabled.
157 |
158 | The Enable Check Box enables or disables the Busy State Timeout
159 | Feature.
160 |
161 | The Once Radio Button is used to select a one time timeout. When the
162 | Enable Check Box is checked and the Once Radio Button is selected a
163 | timeout starts when the extension's busy state is set. When the one
164 | time timeout expires the Busy State Timeout Feature is disabled.
165 | A notification is sent, "Timeout Once Busy State Timeout expired.
166 | Timeout disabled". The Busy State Timeout Feature will not start
167 | a new one time timeout until the Enable Check Box preference is
168 | checked to re-enable the Busy State Timeout Feature. If during the
169 | duration of a one time timeout the Gnome Session is ended at the next
170 | session start the Busy State Timeout Feature will be disabled and a
171 | notification is displayed, "Timeout Once Found at Session Start Busy
172 | Timeout is disabled". If there are unviewed notifications in the
173 | in the queue notifications may not be displayed but will be added
174 | to the queue.
175 |
176 | The Always Radio Button
177 |
178 | The Always Radio Button sets a recurring timeout state. When the
179 | Enable Check Box is checked and the Always Radio Button is selected
180 | a timeout starts whenever the extension busy state is set.
181 |
182 | The Hours Spin Button and the Minutes Spin Button are provided to
183 | set the duration of the timeout timer.
184 |
185 | When changing preferences the following behavior insures if a timeout
186 | is in progress it will be canceled. Changing the state of the Once
187 | Radio Button or Always Radio Button or changing the setting of the
188 | Hours Spin Button or Minutes Spin Button will disable the Busy State
189 | Timeout Feature. After changes are made the Enable Check Box must be
190 | checked to enable the Busy State Timeout Feature.
191 |
192 | A timeout will start at Session Start if:
193 |
194 | Busy State Override At Session Start is not enabled and the extension
195 | was in the Busy State and the Busy State Timeout was enabled and the
196 | Always Radio Button was active at last session end.
197 |
198 | A timeout will start at Session Start if:
199 |
200 | Busy State Override At Session Start is enabled and the Busy Radio
201 | Button is active and Busy State Timeout was enabled and the Always
202 | Radio Button was active at last session end.
203 |
204 | A timeout will start during the session if:
205 |
206 | The user set the extension from Available to Busy with the Panel
207 | Button and the Busy State Timeout Feature is enabled.
208 |
209 | Uploaded for review 2019-03-16. Busy State Timeout feature.
210 |
211 | 2019-03-27 Updated for GS 3.32. Changed default icons to be compatible
212 | with No Notifications icon in the notifications area of the calendar.
213 |
214 | 2019-03-28 Uploaded for review.
215 |
216 | -----
217 |
218 | 2019-04-08
219 |
220 | Notification Sound
221 | The only way to eliminate all notification sounds is to mute the default
222 | sound stream. The extension has been modified to include two options:
223 | 1. to mute sound when the extension is changed to the busy state
224 | 2. to un-mute sound when the extension is changed to available state
225 | Two check boxes are provided in the user preferences.
226 | ----
227 | Busy State Timeout
228 | The message "Timeout Once Found at Session Start Busy Timeout is disabled"
229 | has been removed. Once timeouts by definition are performed only one time
230 | and must be re-enabled if desired.
231 | ----
232 | Code has been added to allow one version of the extenson to function with
233 | Gnome Shell versions 3.28, 3.30 and 3.32.
234 |
235 | 2019-04-10 Uploaded for review.
236 |
237 | 2019-04-21
238 |
239 | Cleaned out some code that was no longer needed concerning icon handling.
240 |
241 | 2019-04-21
242 | I was contacted by a member of the Fedora team and was informed that they
243 | had a problem packaging version 31 of my extension. I was unaware that
244 | an RPM was created and was being distrubed by Fedora. The problem they
245 | reported was due to version 31 modifying itself to be compatible with GObject
246 | registered classes and plain ES6 classes. Since extensions installed from the
247 | Fedora RPM are placed in /usr/share/gnome-shell/extensions and are owned
248 | by root the extension cannot modify its own code. The solution was to
249 | create two verions of the extension, one for GS 3.30 and one for GS 3.32.
250 | I have uploaded the two versions.
251 |
252 | 2019-09-26
253 | Updated for GS3.34. Corrected deprecated actor.actor instances.
254 | Worked around missng shell-version in metadata with settings for
255 | prefs.js.
256 |
257 | 2019-09-28 Uploaded for review.
258 |
259 | 2020-01-26 Corrected error in Donotdisturb Button Makefile. Added disconnect
260 | for _statusChangedSig in dndBtnGObject.js. Failure to disconnect was causing
261 | tracebacks in journal.
262 | Uploaded for review.
263 |
264 | 2020-03-27 Updated to support GS 3.36.
265 | Uploaded for review.
266 |
267 | 2020-04-01 Updated to support GS 3.36.1. gnome-shell-extension-prefs has been changed and
268 | will no longer display the prefs for an extension indicated as a parameter on the command line.
269 | Changed to use gnome-extensions tool. Uploaded for review.
270 |
271 | 2020-06-10 I received a report that a user could not access settings in
272 | Ubuntu 2020.4. I found an un-needed import in prefs.js. I removed it and
273 | the settings were displayed properly. The strange thing is the code that
274 | displays the settings (org.gnome.Shell.Extensions) is different in Ubuntu
275 | compared to Fedora for the same Gnome Shell version. Strange as it ever
276 | was. Uploaded for review.
277 |
278 |
279 | zip file: Stuff
280 |
281 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/README.txt:
--------------------------------------------------------------------------------
1 | README
2 |
3 | donotdisturb-button@nls1729
4 |
5 | Gnome Shell 3.16 removed the ability to set a busy status for
6 | notifications.
7 |
8 | This extension only sets status for notifications. It does not
9 | integrate setting of presence with Online Accounts.
10 |
11 | The issue is discussed on the Fedora Desktop List:
12 | https://lists.fedoraproject.org/pipermail/desktop/2015-June/012417.html
13 |
14 | Panel button toggles presense status {BUSY | AVAILABLE}.
15 |
16 | Uploaded to ego website 2015-06-15.
17 |
18 | Corrected error in README.txt updated metadata.json
19 |
20 | Uploaded to ego website 2015-09-26.
21 |
22 | Uploaded version 6 to ego website 2016-09-23.
23 |
24 | Added preferences to allow assigning keyboard shortcut to toggle button.
25 | Uploaded version 7 to ego website 2016-10-07.
26 |
27 | Added notification count. Changed to find location of clock and locate
28 | button next to clock. Uploaded version 8 to ego website 2016-10-23.
29 |
30 | Changed panel button location to be set by preference (user request).
31 | Added Greek translations thanks to Tom Tryfonidis.
32 | Uploaded version 9 to ego website 2016-11-12.
33 |
34 | Do Not Disturb Button - updated copyright due to fsf address change
35 | Removed addess and added license url instead in extension.js.
36 | Removed copyright from prefs.js. Uploaded for review 2016-11-23.
37 |
38 | Do Not Disturb Button - changed name of translation mo files
39 | requested by Andrew Toskin to avoid duplicate filenames when
40 | creating RPM packages for Fedora. Changed to use default
41 | schema directory if not installed from zip file. Uploaded for
42 | review 2017-03-12.
43 |
44 | Do Not Disturb Button - changed available and busy icons to the
45 | style of the No Notifications icon displayed in the notifications
46 | area of the calendar. Github issue #22. Updated for GS3.24
47 | Uploaded for review 2017-04-05
48 |
49 | Do Not Disturb Button - changed to make display of notification
50 | count optional. Added function to show notification indicator dot
51 | (after time display in panel) when unseen notifications reside in
52 | the calendar notification area. Thanks to Christoph Schroeder for
53 | Github nls1729/acme-code pull request #23 Add option to hide
54 | notification count. Translations updated. Thanks to Jonatan Zeidler.
55 | Uploaded for review 2017-05-21.
56 |
57 | Do Not Disturb Button - The modified Gnome Shell in the Ubuntu default
58 | Ubuntu Session operates in the 'ubuntu' mode. Removed restrictions
59 | based on mode to accomadate Ubuntu 17.10 and 18.04 and going forward.
60 | Added a preference to allow user to set the busy state at extension
61 | init (ie. login). Uploaded for review 2017-11-25.
62 |
63 | Do Not Disturb Button - Updated translations. Uploaded for
64 | review 2017-11-30.
65 |
66 | 2018-04-15 Updated metadata.json to GS 3.28
67 |
68 | 2018-04-19 Before the following changes there was one option which
69 | allowed the user to set busy state of the session with the Busy
70 | preference. If unchecked the busy state was set to Available at login.
71 | If checked the busy state was set to Busy. During the session the busy
72 | state could be set by clicking the extension icon. The busy state set
73 | by the panel icon was not retained during a screen lock or a switch
74 | to another user. A re-login to the current session after a screen lock
75 | or user switch was treated like logging into a new startup session.
76 | The Busy State preference determined the busy state of the extension.
77 |
78 | The Busy State Override At Session Start preference is added and consists
79 | of an "Enable" checkbox, "Busy" radiobutton and "Avaliable" radiobutton.
80 | If "Enable" is unchecked, the default is that the state of the extension
81 | icon controls the busy state in a persistent manner. Whatever state the
82 | icon was in when the session ended or was interrupted by a screen lock or
83 | user switch determines the state at the next session login or re-login
84 | after a screen lock or user switch. If the "Enable" is checked the state
85 | indicated by the selected radiobutton will only set the state at the next
86 | new session startup login; otherwise, the new persistent behavoir set
87 | by the extension panel button is in effect.
88 |
89 | 2018-04-22 Uploaded for review.
90 |
91 | 2018-07-29 Lots of changes for the future...
92 |
93 | See:
94 | https://bugzilla.gnome.org/show_bug.cgi?id=770185#c21
95 | https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/112/diffs
96 | https://github.com/nls1729/acme-code/issues/38
97 |
98 | Added code to handle clutter.EventType.TOUCH_BEGIN to act the same as
99 | a mouse click off the extension's panel button.
100 |
101 | Updated code to use arrow notation => instead of Lang.bind for anonymous
102 | functions.
103 |
104 | Updated code to use ES6 classes.
105 |
106 | Updated to use GJS ES6 class wrapper for GObject class in prefs.js.
107 |
108 | Updated to use Function.prototype.bind() instead of Lang.bind for named
109 | call backs.
110 |
111 | 2018-08-10 Thanks to p-bo for adding Czech translation.
112 | Uploaded for review. Reviewer please see previous comment 2018-07-29.
113 |
114 | 2018-10-03 Completed changes for ES6.
115 |
116 | 2018-10-09 Uploaded for review.
117 |
118 |
119 | 2018-10-28 Added user selection of the panel button icons to indicate busy or
120 | available status. Owen Williams filed a bug report that the provided icons were
121 | not clearly visible when using some user themes. We decided user selection of the
122 | icons would be useful. Changed prefs.js widget arrangement to better display
123 | translated text.
124 |
125 | 2018-10-29 Uploaded for review.
126 |
127 | 2019-02-17 Added Busy State Timeout feature. Version 26.01.
128 |
129 | ----
130 | Description of the Busy State Timeout Feature
131 |
132 | The Panel Button has been changed. It continues to toggle the
133 | extension state between Busy and Available when clicked with the
134 | primary mouse button. Since the Preferences Tool will be involved
135 | with using the Busy State Timeout Feature, quick access to the
136 | tool is provided by a secondary mouse click of the Panel Button.
137 |
138 | New Icons
139 |
140 | When a Busy State Timeout starts an icon is displayed, ⏳.
141 |
142 | When the Busy State Timeout Feature is enabled by checking the
143 | Enable Checkbox the duration of the timeout is calculated and
144 | displayed along with an icon, ⌛.
145 |
146 | Extension States
147 |
148 | When the Busy State of the extension is set and the the Busy State
149 | Timeout Feature is enabled the timeout will start. If during the
150 | duration of a timeout the extension's state is changed from Busy to
151 | Available the timeout will be canceled.
152 |
153 | Preferences
154 |
155 | If a timeout is in progress when the Preferences Tool is activated
156 | the timeout is cancelled and the feature is disabled.
157 |
158 | The Enable Check Box enables or disables the Busy State Timeout
159 | Feature.
160 |
161 | The Once Radio Button is used to select a one time timeout. When the
162 | Enable Check Box is checked and the Once Radio Button is selected a
163 | timeout starts when the extension's busy state is set. When the one
164 | time timeout expires the Busy State Timeout Feature is disabled.
165 | A notification is sent, "Timeout Once Busy State Timeout expired.
166 | Timeout disabled". The Busy State Timeout Feature will not start
167 | a new one time timeout until the Enable Check Box preference is
168 | checked to re-enable the Busy State Timeout Feature. If during the
169 | duration of a one time timeout the Gnome Session is ended at the next
170 | session start the Busy State Timeout Feature will be disabled and a
171 | notification is displayed, "Timeout Once Found at Session Start Busy
172 | Timeout is disabled". If there are unviewed notifications in the
173 | in the queue notifications may not be displayed but will be added
174 | to the queue.
175 |
176 | The Always Radio Button
177 |
178 | The Always Radio Button sets a recurring timeout state. When the
179 | Enable Check Box is checked and the Always Radio Button is selected
180 | a timeout starts whenever the extension busy state is set.
181 |
182 | The Hours Spin Button and the Minutes Spin Button are provided to
183 | set the duration of the timeout timer.
184 |
185 | When changing preferences the following behavior insures if a timeout
186 | is in progress it will be canceled. Changing the state of the Once
187 | Radio Button or Always Radio Button or changing the setting of the
188 | Hours Spin Button or Minutes Spin Button will disable the Busy State
189 | Timeout Feature. After changes are made the Enable Check Box must be
190 | checked to enable the Busy State Timeout Feature.
191 |
192 | A timeout will start at Session Start if:
193 |
194 | Busy State Override At Session Start is not enabled and the extension
195 | was in the Busy State and the Busy State Timeout was enabled and the
196 | Always Radio Button was active at last session end.
197 |
198 | A timeout will start at Session Start if:
199 |
200 | Busy State Override At Session Start is enabled and the Busy Radio
201 | Button is active and Busy State Timeout was enabled and the Always
202 | Radio Button was active at last session end.
203 |
204 | A timeout will start during the session if:
205 |
206 | The user set the extension from Available to Busy with the Panel
207 | Button and the Busy State Timeout Feature is enabled.
208 |
209 | Uploaded for review 2019-03-16. Busy State Timeout feature.
210 |
211 | 2019-03-27 Updated for GS 3.32. Changed default icons to be compatible
212 | with No Notifications icon in the notifications area of the calendar.
213 |
214 | 2019-03-28 Uploaded for review.
215 |
216 | -----
217 |
218 | 2019-04-08
219 |
220 | Notification Sound
221 | The only way to eliminate all notification sounds is to mute the default
222 | sound stream. The extension has been modified to include two options:
223 | 1. to mute sound when the extension is changed to the busy state
224 | 2. to un-mute sound when the extension is changed to available state
225 | Two check boxes are provided in the user preferences.
226 | ----
227 | Busy State Timeout
228 | The message "Timeout Once Found at Session Start Busy Timeout is disabled"
229 | has been removed. Once timeouts by definition are performed only one time
230 | and must be re-enabled if desired.
231 | ----
232 | Code has been added to allow one version of the extenson to function with
233 | Gnome Shell versions 3.28, 3.30 and 3.32.
234 |
235 | 2019-04-10 Uploaded for review.
236 |
237 | 2019-04-21
238 |
239 | Cleaned out some code that was no longer needed concerning icon handling.
240 |
241 | 2019-04-21
242 | I was contacted by a member of the Fedora team and was informed that they
243 | had a problem packaging version 31 of my extension. I was unaware that
244 | an RPM was created and was being distrubed by Fedora. The problem they
245 | reported was due to version 31 modifying itself to be compatible with GObject
246 | registered classes and plain ES6 classes. Since extensions installed from the
247 | Fedora RPM are placed in /usr/share/gnome-shell/extensions and are owned
248 | by root the extension cannot modify its own code. The solution was to
249 | create two verions of the extension, one for GS 3.30 and one for GS 3.32.
250 | I have uploaded the two versions.
251 |
252 | 2019-09-26
253 | Updated for GS3.34. Corrected deprecated actor.actor instances.
254 | Worked around missng shell-version in metadata with settings for
255 | prefs.js.
256 |
257 | 2019-09-28 Uploaded for review.
258 |
259 | 2020-01-26 Corrected error in Donotdisturb Button Makefile. Added disconnect
260 | for _statusChangedSig in dndBtnGObject.js. Failure to disconnect was causing
261 | tracebacks in journal.
262 | Uploaded for review.
263 |
264 | 2020-03-27 Updated to support GS 3.36.
265 | Uploaded for review.
266 |
267 | 2020-04-01 Updated to support GS 3.36.1. gnome-shell-extension-prefs has been changed and
268 | will no longer display the prefs for an extension indicated as a parameter on the command line.
269 | Changed to use gnome-extensions tool. Uploaded for review.
270 |
271 | 2020-06-10 I received a report that a user could not access settings in
272 | Ubuntu 2020.4. I found an un-needed import in prefs.js. I removed it and
273 | the settings were displayed properly. The strange thing is the code that
274 | displays the settings (org.gnome.Shell.Extensions) is different in Ubuntu
275 | compared to Fedora for the same Gnome Shell version. Strange as it ever
276 | was. Uploaded for review.
277 |
278 |
279 | zip file: 2020-06-11 13:21 7e7e64f5
280 |
281 |
--------------------------------------------------------------------------------
/extension-reloader@nls1729/extension.js:
--------------------------------------------------------------------------------
1 | /*
2 | Gnome Shell Extension Reloader
3 |
4 | Copyright (c) 2016-2020 Norman L. Smith
5 |
6 | This extension is free software; you can redistribute it and/or
7 | modify it under the terms of the GNU General Public License
8 | as published by the Free Software Foundation; either version 2
9 | of the License, or (at your option) any later version.
10 |
11 | This extension is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with this extension. If not, see
18 | < https://www.gnu.org/licenses/old-licenses/gpl-2.0.html >.
19 |
20 | This extension is a derived work of the Gnome Shell.
21 |
22 | This extension is intended for use by Gnome Shell Extension writers.
23 | The extension to be reloaded must be in the error state to reload.
24 | It is common practice to restart the Shell during extension testing
25 | to reload the extension to test changes made to the extension's code.
26 | Wayland does not allow restart of the Shell. To reload an extension
27 | not in the error state under Wayland a logout and a login is required.
28 |
29 | */
30 |
31 |
32 | const Mainloop = imports.mainloop;
33 | const Clutter = imports.gi.Clutter;
34 | const GObject = imports.gi.GObject;
35 | const Gio = imports.gi.Gio;
36 | const Meta = imports.gi.Meta;
37 | const St = imports.gi.St;
38 | const ExtensionSystem = imports.ui.extensionSystem;
39 | const ExtensionManager = imports.ui.main.extensionManager
40 | const Main = imports.ui.main;
41 | const PanelMenu = imports.ui.panelMenu;
42 | const PopupMenu = imports.ui.popupMenu;
43 | const Panel = imports.ui.panel;
44 | const ExtensionUtils = imports.misc.extensionUtils;
45 | const Util = imports.misc.util;
46 | const Me = ExtensionUtils.getCurrentExtension();
47 | const DOMAIN = Me.metadata['gettext-domain'];
48 | const Gettext = imports.gettext.domain(DOMAIN);
49 | const _ = Gettext.gettext;
50 | const MAX_HEIGHT = parseInt(global.screen_height * 0.75).toString();
51 | const ROLE = 'extension-reloader-indicator';
52 | const STYLE1 = 'width: 180px;';
53 | const STYLE2 = 'font-weight: bold; color: red;';
54 | const NOTIFY_TYPE = { info: 0, warning: 1, error: 2 };
55 |
56 | var IS_WAYLAND = true;
57 | var LIMITATION = '';
58 |
59 | var SubMenuItem = GObject.registerClass(
60 | class SubMenuItem extends PopupMenu.PopupBaseMenuItem {
61 | _init(extension, name, menu, subMenu, params) {
62 |
63 | var ExtensionStates =
64 | [ _("Unknown"),
65 | _("Enabled"),
66 | _("Disabled"),
67 | _("Error"),
68 | _("Out of Date"),
69 | _("Downloading"),
70 | _("Initialized") ];
71 |
72 |
73 | super._init(params);
74 | this._extension = extension;
75 | this._state = extension.state;
76 | this._uuid = extension.uuid;
77 | this._name = name;
78 | if (this._state > 6)
79 | this._state = 0;
80 | let box = new St.BoxLayout();
81 | let label1 = new St.Label({ text: ExtensionStates[this._state] });
82 | label1.set_style(STYLE1);
83 | box.add_actor(label1);
84 | let label2 = new St.Label({ text: name });
85 | if (this._state == 3)
86 | label2.set_style(STYLE2);
87 | box.add_actor(label2);
88 | this.add_child(box);
89 | this._subMenu = subMenu;
90 | this._menu = menu;
91 | this._keyInId = 0;
92 | }
93 |
94 | destroy() {
95 | this.disconnect(this._keyInId);
96 | super.destroy();
97 | }
98 |
99 | activate() {
100 | log("Reloading " + this._name + "...")
101 | this._menu.close();
102 | let disabled = global.settings.get_strv('disabled-extensions');
103 | if (disabled.includes(this._uuid)) {
104 | disabled = disabled.filter(item => item !== this._uuid);
105 | global.settings.set_strv('disabled-extensions', disabled);
106 | }
107 | let enabled = global.settings.get_strv('enabled-extensions');
108 | if (enabled.indexOf(this._uuid) == -1) {
109 | enabled.push(this._uuid);
110 | global.settings.set_strv('enabled-extensions', enabled);
111 | }
112 | try {
113 | let { uuid, dir, type } = this._extension;
114 | let stateBefore = this._extension.state;
115 | if (ExtensionManager.unloadExtension(this._extension)) {
116 | this._extension = ExtensionManager.createExtensionObject(uuid, dir, type);
117 | ExtensionManager.loadExtension(this._extension);
118 | if (this._extension.state != 3) {
119 | // Extension in error state and loads to not error state is OK.
120 | if (stateBefore == 3) {
121 | let completed = "\uD83D\uDE03 " + _("Reloading completed");
122 | Main.notify(completed, this._name);
123 | log(_("Reloading completed") + ' : ' + this._name + ' : ' + this._uuid);
124 | return;
125 | } else {
126 | Main.notify(LIMITATION, this._name);
127 | log(_("Restart session ") + ' : ' + this._name + ' : ' + this._uuid);
128 | return;
129 | }
130 | }
131 | }
132 | throw new Error(_("Reloading"));
133 | } catch(e) {
134 | Main.notify(e + ' : ' + this._name + ' : ' + this._uuid);
135 | log( e + ' : ' + this._name + ' : ' + this._uuid);
136 | }
137 | }
138 | });
139 |
140 |
141 | var ReloadExtensionMenu = GObject.registerClass(
142 | class ReloadExtensionMenu extends PanelMenu.Button {
143 |
144 | _init() {
145 | super._init(0.5, 'Reload Extension Menu');
146 | let hbox = new St.BoxLayout({
147 | style_class: 'panel-status-menu-box'
148 | });
149 | let path = Me.path + '/emblem-synchronizing-symbolic.svg';
150 | let icon = new St.Icon({
151 | gicon: Gio.icon_new_for_string(path),
152 | style_class: 'system-status-icon'
153 | });
154 | let iconBin = new St.Bin();
155 | iconBin.child = icon;
156 | this._textBin = new St.Bin();
157 | this._textBin.hide();
158 | this._textBin.child = new St.Label({text: "w"});
159 | hbox.add_child(iconBin);
160 | hbox.add_child(this._textBin);
161 | hbox.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
162 | this.add_actor(hbox);
163 | let title = _("Gnome Shell Extension Reloader");
164 | this._subMenuMenuItem = new PopupMenu.PopupSubMenuMenuItem(title, false);
165 | this.menu.addMenuItem(this._subMenuMenuItem);
166 | this._scrollView = this._subMenuMenuItem.menu.actor;
167 | this._vBar = this._subMenuMenuItem.menu.actor.get_vscroll_bar();
168 | this._vBar.vscrollbar_policy = true;
169 | this._populateSubMenu(this._subMenuMenuItem.menu);
170 | this._openToggledId = this.menu.connect('open-state-changed', this._openToggled.bind(this));
171 | if(IS_WAYLAND)
172 | this._textBin.show();
173 | }
174 |
175 | _openToggled(menu, open) {
176 | if (open) {
177 | this._subMenuMenuItem.menu.removeAll();
178 | this._populateSubMenu(this._subMenuMenuItem.menu);
179 | this._subMenuMenuItem.menu.open();
180 | }
181 | }
182 |
183 | _scrollMenuBox(actor) {
184 | let box = actor.get_allocation_box();
185 | let currentValue = this._vBar.get_adjustment().get_value();
186 | let newValue = currentValue;
187 | let delta = Math.ceil((box.y2 - box.y1) * .25);
188 | if (currentValue > (box.y1 - delta))
189 | newValue = box.y1 - delta;
190 | if ((this._scrollView.height + currentValue) < (box.y2 + delta))
191 | newValue = box.y2 - this._scrollView.height + delta;
192 | if (newValue != currentValue)
193 | this._vBar.get_adjustment().set_value(newValue);
194 | }
195 |
196 | _compare(a, b) {
197 | let aKey = a.state.toString() + a.metadata.name.toUpperCase();
198 | let bKey = b.state.toString() + b.metadata.name.toUpperCase();
199 | return (aKey > bKey) ? 0 : -1;
200 | }
201 |
202 | _populateSubMenu(subMenu) {
203 | let sortedArray = [];
204 |
205 | for (let uuid of ExtensionManager.getUuids()) {
206 | let entry = ExtensionManager.lookup(uuid)
207 | Util.insertSorted(sortedArray, entry, (a, b) => {
208 | return this._compare(a, b);
209 | });
210 | }
211 | for (let i in sortedArray) {
212 | let uuid = sortedArray[i].uuid;
213 | let name = sortedArray[i].metadata.name;
214 | let state = sortedArray[i].state;
215 | let ext = sortedArray[i];
216 | let item = new SubMenuItem(ext, name, this.menu, subMenu);
217 | item._keyInId = item.connect('key-focus-in', this._scrollMenuBox.bind(this));
218 | subMenu.addMenuItem(item);
219 | }
220 | this.menu.style = ('max-height:' + MAX_HEIGHT + 'px');
221 | }
222 |
223 | destroy() {
224 | this.menu.disconnect(this._openToggledId);
225 | this._subMenuMenuItem.menu.removeAll();
226 | this.menu.removeAll();
227 | super.destroy();
228 | }
229 | });
230 |
231 |
232 | class ExtensionReloaderExtension {
233 |
234 | constructor() {
235 | this._btn = null;
236 | this._timeoutId = 0;
237 | let GioSSS = Gio.SettingsSchemaSource;
238 | let schema = Me.metadata['settings-schema'];
239 | let schemaDir = Me.dir.get_child('schemas').get_path();
240 | let schemaSrc = GioSSS.new_from_directory(schemaDir, GioSSS.get_default(), false);
241 | let schemaObj = schemaSrc.lookup(schema, true);
242 | this._settings = new Gio.Settings({ settings_schema: schemaObj });
243 | this._leftChangedSig = 0;
244 | this._centerChangedSig = 0;
245 | }
246 |
247 | _positionChange() {
248 | this.disable();
249 | this._delayedEnable();
250 | }
251 |
252 | _getPosition() {
253 | let center = this._settings.get_boolean('panel-icon-center');
254 | let left = this._settings.get_boolean('panel-icon-left');
255 | let position;
256 | if (center) {
257 | if (left)
258 | position = [0, 'center'];
259 | else
260 | position = [-1, 'center'];
261 | } else {
262 | if (left)
263 | position = [-1, 'left'];
264 | else
265 | position = [0, 'right'];
266 | }
267 | return position;
268 | }
269 |
270 | _delayedEnable() {
271 | if (this._timeoutId != 0) {
272 | Mainloop.source_remove(this._timeoutId);
273 | this._timeoutId = 0;
274 | }
275 | this._btn = new ReloadExtensionMenu();
276 | let position = this._getPosition();
277 | Main.panel.addToStatusArea(ROLE, this._btn, position[0], position[1]);
278 | this._leftChangedSig = this._settings.connect('changed::panel-icon-left', this._positionChange.bind(this));
279 | this._centerChangedSig = this._settings.connect('changed::panel-icon-center', this._positionChange.bind(this));
280 | }
281 |
282 | destroy() {
283 | if (this._btn != null) {
284 | this._btn.destroy();
285 | this._btn = null;
286 | }
287 | }
288 |
289 | enable() {
290 | if (Main.sessionMode.currentMode == 'ubuntu' || Main.sessionMode.currentMode == 'user' || Main.sessionMode.currentMode == 'classic') {
291 | IS_WAYLAND = Meta.is_wayland_compositor();
292 | if (IS_WAYLAND)
293 | LIMITATION = '\u26A0\uFE0F Logout/Login';
294 | else
295 | LIMITATION = '\u26A0\uFE0F Alt F2 r';
296 | this._timeoutId = Mainloop.timeout_add(3000, this._delayedEnable.bind(this));
297 | }
298 | }
299 |
300 | disable() {
301 | if (this._timeoutId != 0) {
302 | Mainloop.source_remove(this._timeoutId);
303 | this._timeoutId = 0;
304 | }
305 | if (this._btn != null) {
306 | this._btn.destroy();
307 | this._btn = null;
308 | }
309 | if (this._leftChangedSig > 0) {
310 | this._settings.disconnect(this._leftChangedSig);
311 | this._leftChangedSig = 0;
312 | }
313 | if (this._centerChangedSig > 0) {
314 | this._settings.disconnect(this._centerChangedSig);
315 | this._centerChangedSig = 0;
316 | }
317 | }
318 | };
319 |
320 | function init(metadata) {
321 | imports.gettext.bindtextdomain(DOMAIN, Me.path + "/locale");
322 | return new ExtensionReloaderExtension();
323 | }
324 |
--------------------------------------------------------------------------------
/donotdisturb-button@nls1729/dndBtnGObject.js:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | Do Not Disturb Button Gnome Shell Extension
4 |
5 | Copyright (c) 2015-2020 Norman L. Smith
6 |
7 | This extension is free software; you can redistribute it and/or
8 | modify it under the terms of the GNU General Public License
9 | as published by the Free Software Foundation; either version 2
10 | of the License, or (at your option) any later version.
11 |
12 | This extension is distributed in the hope that it will be useful,
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | GNU General Public License for more details.
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program. If not, see
19 | < https://www.gnu.org/licenses/old-licenses/gpl-2.0.html >.
20 |
21 | This extension is a derived work of the Gnome Shell.
22 | */
23 |
24 | const GLib = imports.gi.GLib;
25 | const Gio = imports.gi.Gio;
26 | const Clutter = imports.gi.Clutter;
27 | const GObject = imports.gi.GObject;
28 | const Meta = imports.gi.Meta;
29 | const Shell = imports.gi.Shell;
30 | const St = imports.gi.St;
31 | const Main = imports.ui.main;
32 | const PanelMenu = imports.ui.panelMenu;
33 | const GnomeSession = imports.misc.gnomeSession;
34 | const Mainloop = imports.mainloop;
35 | const Me = imports.misc.extensionUtils.getCurrentExtension();
36 | const Util = imports.misc.util;
37 | const DOMAIN = Me.metadata['gettext-domain'];
38 | const _ = imports.gettext.domain(DOMAIN).gettext;
39 | const BUSY_PATH = Me.path + '/busy-notifications-symbolic.svg'
40 | const AVAILABLE_PATH = Me.path + '/available-notifications-symbolic.svg'
41 | const SHORTCUT = 'shortcut';
42 |
43 |
44 | var DoNotDisturbButton = GObject.registerClass (
45 | class DoNotDisturbButton extends PanelMenu.Button {
46 |
47 | _init(settings) {
48 | super._init(0.5, null, true);
49 | this._settings = settings;
50 | this._timeoutActive = false;
51 | this._timeOutIndicators = [];
52 | this._unseenTimeoutId = 0;
53 | this._checkTimeoutId = 0;
54 | this._timeoutProcessed = false;
55 | this._timeoutInterval = 0;
56 | this._statusChangedSig = 0;
57 | this._touchEventSig = 0;
58 | this._btnPressSig = 0;
59 | this._keyPressSig = 0;
60 | this._changedSettingsSig = 0;
61 | this._timeoutEnabledChangedSig = 0;
62 | this._showCountChangedSig = 0;
63 | this._listActorAddedSig = 0;
64 | this._listActorRemovedSig = 0;
65 | this._statusBusy = false;
66 | this._layoutBox = new St.BoxLayout();
67 | this._notEmptyCount = new St.Label({ text: '', y_align: Clutter.ActorAlign.CENTER });
68 | this._list = Main.panel.statusArea.dateMenu._messageList._notificationSection._list;
69 | this._timeoutEnabled = this._settings.get_boolean('time-out-enabled');
70 | this._indicatorSources = Main.panel.statusArea['dateMenu']._indicator._sources;
71 | this._indicatorActor = Main.panel.statusArea['dateMenu']._indicator;
72 | this._showCount = this._settings.get_boolean('panel-count-show');
73 | this._setIcons();
74 | this._populateTmeOutIndicators();
75 | this._setLayoutBox();
76 | this.timeStart = 0;
77 |
78 |
79 | this._presence = new GnomeSession.Presence((proxy, error) => {
80 | this._onStatusChanged(proxy.status);
81 | });
82 |
83 | this._statusChangedSig = this._presence.connectSignal('StatusChanged', (proxy, senderName, [status]) => {
84 | this._onStatusChanged(status);
85 | });
86 |
87 | this._touchEventSig = this.connect('touch-event', (actor, event) => {
88 | this._onButtonPress(actor, event);
89 | });
90 |
91 | this._btnPressSig = this.connect_after('button-press-event', (actor, event) => {
92 | this._onButtonPress(actor, event);
93 | });
94 |
95 | this._keyPressSig = this.connect_after('key-press-event', (actor, event) => {
96 | this._onKeyPress(actor, event);
97 | });
98 |
99 | this._changedSettingsSig = this._settings.connect('changed::shortcut', () => {
100 | this._removeKeybinding();
101 | this._addKeybinding();
102 | });
103 |
104 | this._timeoutEnabledChangedSig = this._settings.connect('changed::time-out-enabled', () => {
105 | this._timeoutEnabled = this._settings.get_boolean('time-out-enabled');
106 | });
107 |
108 | this._showCountChangedSig = this._settings.connect('changed::panel-count-show', () => {
109 | this._showCount = this._settings.get_boolean('panel-count-show');
110 | this._setNotEmptyCount();
111 | });
112 |
113 | this._listActorAddedSig = this._list.connect('actor-added', () => {
114 | this._setNotEmptyCount();
115 | });
116 |
117 | this._listActorRemovedSig = this._list.connect('actor-removed', () => {
118 | this._setNotEmptyCount();
119 | });
120 |
121 | this._addKeybinding();
122 | }
123 |
124 | _setIcons() {
125 |
126 | let available = this._settings.get_string('available-icon');
127 | let busy = this._settings.get_string('busy-icon');
128 | let iconStyle = 'icon-size: 1.3em; padding-left: 2px; padding-right: 2px';
129 |
130 | if (!GLib.file_test(available, GLib.FileTest.EXISTS))
131 | available = 'default';
132 | if (available == 'default')
133 | available = AVAILABLE_PATH;
134 | if (!GLib.file_test(busy, GLib.FileTest.EXISTS))
135 | busy = 'default';
136 | if (busy == 'default')
137 | busy = BUSY_PATH;
138 | this._iconAvailable = new St.Icon({ gicon: Gio.icon_new_for_string(available) });
139 | this._iconBusy = new St.Icon({ gicon: Gio.icon_new_for_string(busy) });
140 | this._iconBusy.set_style(iconStyle);
141 | this._iconAvailable.set_style(iconStyle);
142 | }
143 |
144 | _populateTmeOutIndicators() {
145 | let i = 0;
146 | let markupBegin = '';
147 | let markupEnd = '';
148 | this._timeOutSymbol = [ ' \uD83D\uDD5B', ' \uD83D\uDD52', ' \uD83D\uDD55', ' \uD83D\uDD58' ];
149 |
150 | while ( i < 4 ) {
151 | let ind = new St.Label({ text: markupBegin + this._timeOutSymbol[i] + markupEnd , y_align: Clutter.ActorAlign.CENTER });
152 | let ct = ind.get_clutter_text();
153 |
154 | ct.set_use_markup(true);
155 | this._timeOutIndicators.push(ind);
156 | i++;
157 | }
158 | }
159 |
160 | _setLayoutBox() {
161 | let i = 0;
162 |
163 | this._layoutBox.add_actor(this._iconAvailable);
164 | this._layoutBox.add_actor(this._iconBusy);
165 | while ( i < 4 ) {
166 | this._layoutBox.add_actor(this._timeOutIndicators[i++]);
167 | }
168 | this._layoutBox.add_actor(this._notEmptyCount);
169 | this.add_actor(this._layoutBox)
170 | }
171 |
172 | _startClock() {
173 | this._timeOutIndicators[0].show();
174 | this._timeOutIndicators[1].hide();
175 | this._timeOutIndicators[2].hide();
176 | this._timeOutIndicators[3].hide();
177 | }
178 |
179 | _advanceClock() {
180 | let i = 0;
181 | while (i < 3) {
182 | if (this._timeOutIndicators[i].visible) {
183 | this._timeOutIndicators[i++].hide();
184 | this._timeOutIndicators[i].show();
185 | return;
186 | }
187 | i++;
188 | }
189 | this._timeOutIndicators[3].hide();
190 | this._timeOutIndicators[0].show();
191 | }
192 |
193 | _stopClock() {
194 | let i = 0;
195 | while (i < 4)
196 | this._timeOutIndicators[i++].hide();
197 | }
198 |
199 | _timeoutEnabledChanged() {
200 | this._timeoutEnabled = this._settings.get_boolean('time-out-enabled');
201 | }
202 |
203 |
204 | _findUnseenNotifications() {
205 | if (!this._indicatorActor.visible) {
206 | let count = 0;
207 | this._indicatorSources.forEach((source) => {
208 | count += source.unseenCount;
209 | });
210 | if (count > 0 && !this._indicatorActor.visible)
211 | this._indicatorActor.visible = true;
212 | }
213 | return true;
214 | }
215 |
216 | _checkTimeout() {
217 | if(this._timeoutActive) {
218 | this._processActiveTimeout()
219 | }
220 | return true;
221 | }
222 |
223 | _startTimeout() {
224 | this._startClock();
225 | this._timeoutInterval = this._settings.get_int('time-out-interval') * 4;
226 | this._timeoutActive = true;
227 | this.timeStart = Date.now();
228 | }
229 |
230 | _processActiveTimeout() {
231 | this._timeoutInterval--;
232 | this._advanceClock();
233 | if (this._timeoutInterval < 0) {
234 | this._endTimeout();
235 | }
236 | }
237 |
238 | _endTimeout() {
239 | this._stopClock();
240 | this._timeoutActive = false;
241 | this._togglePresence();
242 | //log("DONOT elasped time " + (Date.now() - this.timeStart)/1000)
243 | }
244 |
245 | _setNotEmptyCount() {
246 | let count = this._list.get_n_children();
247 | if (count < 1 || !this._showCount)
248 | this._notEmptyCount.set_text('');
249 | else
250 | this._notEmptyCount.set_text(' ' + count.toString());
251 | }
252 |
253 | _onStatusChanged(status) {
254 | this._iconAvailable.hide();
255 | this._iconBusy.hide();
256 | this._stopClock();
257 | if (status == GnomeSession.PresenceStatus.BUSY) {
258 | this._statusBusy = true;
259 | this._iconBusy.show();
260 | if (this._timeoutEnabled)
261 | this._startTimeout();
262 | } else {
263 | this._statusBusy = false;
264 | this._timeoutActive = false;
265 | this._iconAvailable.show();
266 | }
267 | this._toggle = !this._statusBusy;
268 | this._settings.set_boolean('busy-state', this._statusBusy);;
269 | }
270 |
271 | _onButtonPress(actor, event) {
272 | let type = event.type();
273 | let pressed = type == Clutter.EventType.BUTTON_PRESS;
274 | let button = pressed ? event.get_button() : -1;
275 |
276 | if (!pressed && type == Clutter.EventType.TOUCH_BEGIN) {
277 | this._togglePresence();
278 | return Clutter.EVENT_STOP;
279 | }
280 | if (button == -1) {
281 | return Clutter.EVENT_PROPAGATE;
282 | }
283 | if (button == 1) {
284 | this._togglePresence();
285 | } else if (button == 3) {
286 | Util.spawn(["gnome-extensions", "prefs", Me.uuid]);
287 | }
288 | return Clutter.EVENT_STOP;
289 | }
290 |
291 |
292 | _onKeyPress(actor, event) {
293 | let symbol = event.get_key_symbol();
294 | if (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_space) {
295 | this._togglePresence();
296 | return Clutter.EVENT_STOP;
297 | }
298 | return Clutter.EVENT_PROPAGATE;
299 | }
300 |
301 | _togglePresence() {
302 | if (this._toggle) {
303 | this._updatePresense(false);
304 | } else {
305 | this._updatePresense(true);
306 | }
307 | this._toggle = !this._toggle;
308 | }
309 |
310 | _updatePresense(state) {
311 | this._status = state ? GnomeSession.PresenceStatus.AVAILABLE : GnomeSession.PresenceStatus.BUSY;
312 | this._presence.SetStatusRemote(this._status);
313 | }
314 |
315 | _removeKeybinding() {
316 | Main.wm.removeKeybinding(SHORTCUT);
317 | }
318 |
319 | _addKeybinding() {
320 | Main.wm.addKeybinding(SHORTCUT, this._settings, Meta.KeyBindingFlags.NONE, Shell.ActionMode.NORMAL, this._togglePresence.bind(this));
321 | }
322 |
323 | _startUp() {
324 | this._unseenTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 30000, this._findUnseenNotifications.bind(this));
325 | this._checkTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 15000, this._checkTimeout.bind(this));
326 | this._settings.set_boolean('busy-state', this._settings.get_boolean('override'));
327 | this._toggle = this._settings.get_boolean('busy-state');
328 | this._togglePresence();
329 | }
330 |
331 | _disconnectSignal(signalId, theConnected) {
332 | if (signalId != 0)
333 | theConnected.disconnect(signalId);
334 | }
335 |
336 | destroy() {
337 | if (this._unseenTimeoutId != 0) {
338 | GLib.source_remove(this._unseenTimeoutId);
339 | this._unseenTimeoutId = 0;
340 | };
341 | if (this._checkTimeoutId != 0) {
342 | GLib.source_remove(this._checkTimeoutId);
343 | this._checkTimeoutId = 0;
344 | }
345 | this._disconnectSignal(this._touchEventSig, this);
346 | this._disconnectSignal(this._btnPressSig, this);
347 | this._disconnectSignal(this._keyPressSig, this);
348 | this._disconnectSignal(this._changedSettingsSig, this._settings);
349 | this._disconnectSignal(this._timeoutEnabledChangedSig, this._settings);
350 | this._disconnectSignal(this._showCountChangedSig, this._settings);
351 | this._disconnectSignal(this._listActorAddedSig, this._list);
352 | this._disconnectSignal(this._listActorRemovedSig, this._list);
353 | this._removeKeybinding();
354 | this.get_children().forEach(function(c) { c.destroy(); });
355 | super.destroy();
356 | }
357 | });
358 |
359 | function newDoNotDisturbButton(settings) {
360 | return new DoNotDisturbButton(settings);
361 | }
362 |
363 |
--------------------------------------------------------------------------------