├── 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 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /donotdisturb-button@nls1729/busy-notifications-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 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 | 20 | 21 | 22 | 23 |
activities-configActivities Configuratorego
donotdisturb-buttonDo Not Disturb Buttonego
extension-reloaderGnome Shell Extension Reloaderego
max-window-effectMax Window Effectno
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 | 3 | 4 | 5 | 6 | Face - Happy 7 | 8 | 9 | 10 | emoticon 11 | emote 12 | smiley 13 | happy 14 | :) 15 | :-) 16 | 17 | 18 | 19 | 20 | Open Clip Art Library, Source: Tango Icon Library, Source: Tango Icon Library, Source: Tango Icon Library, Source: Tango Icon Library 21 | 22 | 23 | 24 | 25 | Jakub Steiner 26 | 27 | 28 | 29 | 30 | Jakub Steiner 31 | 32 | 33 | 34 | image/svg+xml 35 | 36 | 37 | en 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 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 | --------------------------------------------------------------------------------