├── .eslintrc.yml ├── .github └── workflows │ └── make.yml ├── .gitignore ├── COPYING ├── Makefile ├── README.md ├── Settings.ui ├── _stylesheet.scss ├── appIconIndicators.js ├── appIcons.js ├── appIconsDecorator.js ├── appSpread.js ├── dash.js ├── dbusmenuUtils.js ├── default.nix ├── dependencies ├── gi.js └── shell │ ├── extensions │ └── extension.js │ ├── misc.js │ └── ui.js ├── desktopIconsIntegration.js ├── docking.js ├── extension.js ├── fileManager1API.js ├── imports.js ├── intellihide.js ├── launcherAPI.js ├── lint ├── eslintrc-gjs.yml └── eslintrc-shell.yml ├── locations.js ├── locationsWorker.js ├── media ├── glossy.svg ├── highlight_stacked_bg.svg ├── highlight_stacked_bg_h.svg ├── logo.svg └── screenshot.jpg ├── metadata.json ├── notificationsMonitor.js ├── po ├── ar.po ├── cs.po ├── de.po ├── el.po ├── es.po ├── eu.po ├── fr.po ├── gl.po ├── hu.po ├── id.po ├── it.po ├── ja.po ├── ko.po ├── nb.po ├── nl.po ├── pl.po ├── pt.po ├── pt_BR.po ├── ru.po ├── sk.po ├── sl.po ├── sr.po ├── sr@latin.po ├── sv.po ├── tr.po ├── uk_UA.po ├── zh_CN.po └── zh_TW.po ├── prefs.js ├── schemas └── org.gnome.shell.extensions.dash-to-dock.gschema.xml ├── theming.js ├── utils.js └── windowPreview.js /.eslintrc.yml: -------------------------------------------------------------------------------- 1 | ignorePatterns: 2 | - _build/** 3 | 4 | extends: 5 | - ./lint/eslintrc-gjs.yml 6 | - ./lint/eslintrc-shell.yml 7 | 8 | overrides: 9 | - files: ./*.js 10 | globals: 11 | global: readonly 12 | _: readonly 13 | C_: readonly 14 | N_: readonly 15 | ngettext: readonly 16 | 17 | rules: 18 | prefer-const: error 19 | prefer-destructuring: warn 20 | guard-for-in: error 21 | max-len: 22 | - error 23 | - code: 110 24 | ignoreUrls: true 25 | ignoreTemplateLiterals: true 26 | 27 | comma-dangle: 28 | - error 29 | - arrays: always-multiline 30 | objects: always-multiline 31 | imports: always-multiline 32 | functions: never 33 | 34 | parserOptions: 35 | sourceType: module 36 | -------------------------------------------------------------------------------- /.github/workflows/make.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Make 3 | 'on': 4 | pull_request: 5 | push: 6 | branches: 7 | - master 8 | - ubuntu-dock 9 | - make_ci 10 | 11 | jobs: 12 | make: 13 | name: Make 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Check out the codebase. 17 | uses: actions/checkout@v4 18 | 19 | - name: Install dependencies. 20 | run: sudo apt-get install -y sassc gettext 21 | 22 | - name: Make 23 | run: make 24 | 25 | - name: Install modules 26 | run: sudo npm install eslint -g 27 | 28 | - name: Make Check 29 | run: make check 30 | 31 | - name: Make Install 32 | run: make install 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .~ 2 | *~ 3 | gschemas.compiled 4 | dash-to-dock@micxgx.gmail.com.zip 5 | *.mo 6 | po/dashtodock.pot 7 | stylesheet.css 8 | Settings.ui.h 9 | _build 10 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Basic Makefile 2 | 3 | UUID = dash-to-dock@micxgx.gmail.com 4 | BASE_MODULES = extension.js \ 5 | metadata.json \ 6 | COPYING \ 7 | README.md \ 8 | $(NULL) 9 | 10 | EXTRA_MODULES = \ 11 | appSpread.js \ 12 | dash.js \ 13 | docking.js \ 14 | appIcons.js \ 15 | appIconsDecorator.js \ 16 | appIconIndicators.js \ 17 | fileManager1API.js \ 18 | imports.js \ 19 | launcherAPI.js \ 20 | locations.js \ 21 | locationsWorker.js \ 22 | notificationsMonitor.js \ 23 | windowPreview.js \ 24 | intellihide.js \ 25 | prefs.js \ 26 | theming.js \ 27 | utils.js \ 28 | dbusmenuUtils.js \ 29 | desktopIconsIntegration.js \ 30 | Settings.ui \ 31 | $(NULL) 32 | 33 | EXTRA_MEDIA = logo.svg \ 34 | glossy.svg \ 35 | highlight_stacked_bg.svg \ 36 | highlight_stacked_bg_h.svg \ 37 | $(NULL) 38 | 39 | TOLOCALIZE = prefs.js \ 40 | docking.js \ 41 | appIcons.js \ 42 | appIconsDecorator.js \ 43 | locations.js \ 44 | $(NULL) 45 | 46 | MSGSRC = $(wildcard po/*.po) 47 | ifeq ($(strip $(DESTDIR)),) 48 | INSTALLTYPE = local 49 | INSTALLBASE = $(HOME)/.local/share/gnome-shell/extensions 50 | else 51 | INSTALLTYPE = system 52 | SHARE_PREFIX = $(DESTDIR)/usr/share 53 | INSTALLBASE = $(SHARE_PREFIX)/gnome-shell/extensions 54 | endif 55 | INSTALLNAME = dash-to-dock@micxgx.gmail.com 56 | 57 | # The command line passed variable VERSION is used to set the version string 58 | # in the metadata and in the generated zip-file. If no VERSION is passed, the 59 | # current commit SHA1 is used as version number in the metadata while the 60 | # generated zip file has no string attached. 61 | ifdef VERSION 62 | VSTRING = _v$(VERSION) 63 | else 64 | VERSION = $(shell git rev-parse HEAD) 65 | VSTRING = 66 | endif 67 | 68 | all: extension 69 | 70 | clean: 71 | rm -f ./schemas/gschemas.compiled 72 | rm -f stylesheet.css 73 | rm -rf _build 74 | 75 | extension: ./schemas/gschemas.compiled ./stylesheet.css $(MSGSRC:.po=.mo) 76 | 77 | ./schemas/gschemas.compiled: ./schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml 78 | glib-compile-schemas ./schemas/ 79 | 80 | potfile: ./po/dashtodock.pot 81 | 82 | mergepo: potfile 83 | for l in $(MSGSRC); do \ 84 | msgmerge -U $$l ./po/dashtodock.pot; \ 85 | done; 86 | 87 | ./po/dashtodock.pot: $(TOLOCALIZE) Settings.ui 88 | mkdir -p po 89 | xgettext --keyword=__ --keyword=N__ --add-comments='Translators:' -o po/dashtodock.pot --package-name "Dash to Dock" --from-code=utf-8 $(TOLOCALIZE) 90 | intltool-extract --type=gettext/glade Settings.ui 91 | xgettext --keyword=_ --keyword=N_ --join-existing -o po/dashtodock.pot Settings.ui.h 92 | 93 | ./po/%.mo: ./po/%.po 94 | msgfmt -c $< -o $@ 95 | 96 | ./stylesheet.css: ./_stylesheet.scss 97 | ifeq ($(SASS), ruby) 98 | sass --sourcemap=none --no-cache --scss _stylesheet.scss stylesheet.css 99 | else ifeq ($(SASS), dart) 100 | sass --no-source-map _stylesheet.scss stylesheet.css 101 | else ifeq ($(SASS), sassc) 102 | sassc --omit-map-comment _stylesheet.scss stylesheet.css 103 | else 104 | sassc --omit-map-comment _stylesheet.scss stylesheet.css 105 | endif 106 | 107 | install: install-local 108 | 109 | install-local: _build 110 | rm -rf $(INSTALLBASE)/$(INSTALLNAME) 111 | mkdir -p $(INSTALLBASE)/$(INSTALLNAME) 112 | cp -r ./_build/* $(INSTALLBASE)/$(INSTALLNAME)/ 113 | ifeq ($(INSTALLTYPE),system) 114 | # system-wide settings and locale files 115 | rm -r $(INSTALLBASE)/$(INSTALLNAME)/schemas $(INSTALLBASE)/$(INSTALLNAME)/locale 116 | mkdir -p $(SHARE_PREFIX)/glib-2.0/schemas $(SHARE_PREFIX)/locale 117 | cp -r ./schemas/*gschema.* $(SHARE_PREFIX)/glib-2.0/schemas 118 | cp -r ./_build/locale/* $(SHARE_PREFIX)/locale 119 | endif 120 | -rm -fR _build 121 | echo done 122 | 123 | zip-file: _build check 124 | cd _build ; \ 125 | zip -qr "$(UUID)$(VSTRING).zip" . 126 | mv _build/$(UUID)$(VSTRING).zip ./ 127 | -rm -fR _build 128 | 129 | _build: all 130 | -rm -fR ./_build 131 | mkdir -p _build 132 | cp $(BASE_MODULES) $(EXTRA_MODULES) _build 133 | cp -a dependencies _build 134 | cp stylesheet.css _build 135 | mkdir -p _build/media 136 | cd media ; cp $(EXTRA_MEDIA) ../_build/media/ 137 | mkdir -p _build/schemas 138 | cp schemas/*.xml _build/schemas/ 139 | cp schemas/gschemas.compiled _build/schemas/ 140 | mkdir -p _build/locale 141 | for l in $(MSGSRC:.po=.mo) ; do \ 142 | lf=_build/locale/`basename $$l .mo`; \ 143 | mkdir -p $$lf; \ 144 | mkdir -p $$lf/LC_MESSAGES; \ 145 | cp $$l $$lf/LC_MESSAGES/dashtodock.mo; \ 146 | done; 147 | sed -i 's/"version": -1/"version": "$(VERSION)"/' _build/metadata.json; 148 | 149 | ifeq ($(strip $(ESLINT)),) 150 | ESLINT = eslint 151 | endif 152 | 153 | ifneq ($(strip $(ESLINT_TAP)),) 154 | ESLINT_ARGS = -f tap 155 | endif 156 | 157 | check: 158 | ESLINT_USE_FLAT_CONFIG=false $(ESLINT) $(ESLINT_ARGS) . 159 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dash to Dock 2 | ![screenshot](https://github.com/micheleg/dash-to-dock/raw/master/media/screenshot.jpg) 3 | 4 | ## A dock for the GNOME Shell 5 | This extension enhances the dash moving it out of the overview and transforming it in a dock for an easier launching of applications and a faster switching between windows and desktops without having to leave the desktop view. 6 | 7 | [](https://extensions.gnome.org/extension/307/dash-to-dock) 8 | 9 | For additional installation instructions and more information visit [https://micheleg.github.io/dash-to-dock/](https://micheleg.github.io/dash-to-dock/). 10 | 11 | ## Installation from source 12 | 13 | The extension can be installed directly from source, either for the convenience of using git or to test the latest development version. Clone the desired branch with git 14 | 15 | ### Build Dependencies 16 | 17 | To compile the stylesheet you'll need an implementation of SASS. Dash to Dock supports `dart-sass` (`sass`), `sassc`, and `ruby-sass`. Every distro should have at least one of these implementations, we recommend using `dart-sass` (`sass`) or `sassc` over `ruby-sass` as `ruby-sass` is deprecated. 18 | 19 | By default, Dash to Dock will attempt to build with `sassc`. To change this behavior set the `SASS` environment variable to either `dart` or `ruby`. 20 | 21 | ```bash 22 | export SASS=dart 23 | # or... 24 | export SASS=ruby 25 | ``` 26 | 27 | ### Building 28 | 29 | Clone the repository or download the branch from github. A simple Makefile is included. 30 | 31 | Next use `make` to install the extension into your home directory. A Shell reload is required `Alt+F2 r Enter` under Xorg or under Wayland you may have to logout and login. The extension has to be enabled with *gnome-extensions-app* (GNOME Extensions) or with *dconf*. 32 | 33 | ```bash 34 | git clone https://github.com/micheleg/dash-to-dock.git 35 | make -C dash-to-dock install 36 | ``` 37 | 38 | If `msgfmt` is not available on your system, you will see an error message like the following: 39 | 40 | ```bash 41 | make: msgfmt: No such file or directory 42 | ``` 43 | 44 | In this case install the `gettext` package from your distribution's repository. 45 | 46 | 47 | ## Bug Reporting 48 | 49 | Bugs should be reported to the Github bug tracker [https://github.com/micheleg/dash-to-dock/issues](https://github.com/micheleg/dash-to-dock/issues). 50 | 51 | ## License 52 | Dash to Dock Gnome Shell extension is distributed under the terms of the GNU General Public License, 53 | version 2 or later. See the COPYING file for details. 54 | -------------------------------------------------------------------------------- /appIconsDecorator.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | 4 | import { 5 | Docking, 6 | AppIconIndicators, 7 | Utils, 8 | } from './imports.js'; 9 | 10 | import { 11 | Gio, 12 | } from './dependencies/gi.js'; 13 | 14 | import { 15 | AppMenu, 16 | AppDisplay, 17 | Main, 18 | PopupMenu, 19 | } from './dependencies/shell/ui.js'; 20 | 21 | const Labels = Object.freeze({ 22 | GENERIC: Symbol('generic'), 23 | ICONS: Symbol('icons'), 24 | }); 25 | 26 | export class AppIconsDecorator { 27 | constructor() { 28 | this._signals = new Utils.GlobalSignalsHandler(); 29 | this._methodInjections = new Utils.InjectionsHandler(); 30 | this._propertyInjections = new Utils.PropertyInjectionsHandler( 31 | null, {allowNewProperty: true}); 32 | this._indicators = new Set(); 33 | 34 | this._patchAppIcons(); 35 | this._decorateIcons(); 36 | } 37 | 38 | destroy() { 39 | this._signals?.destroy(); 40 | delete this._signals; 41 | this._methodInjections?.destroy(); 42 | delete this._methodInjections; 43 | this._propertyInjections?.destroy(); 44 | delete this._propertyInjections; 45 | this._indicators?.forEach(i => i.destroy()); 46 | this._indicators?.clear(); 47 | delete this._indicators; 48 | } 49 | 50 | _decorateIcon(parentIcon, signalLabel = Labels.GENERIC) { 51 | const indicator = new AppIconIndicators.UnityIndicator(parentIcon); 52 | this._indicators.add(indicator); 53 | this._signals.addWithLabel(signalLabel, parentIcon, 'destroy', () => { 54 | this._indicators.delete(indicator); 55 | indicator.destroy(); 56 | }); 57 | return indicator; 58 | } 59 | 60 | _decorateIcons() { 61 | const {appDisplay} = Docking.DockManager.getDefault().overviewControls; 62 | 63 | const decorateAppIcons = () => { 64 | this._indicators.forEach(i => i.destroy()); 65 | this._indicators.clear(); 66 | this._signals.removeWithLabel(Labels.ICONS); 67 | 68 | const decorateViewIcons = view => { 69 | const items = view.getAllItems(); 70 | items.forEach(i => { 71 | if (i instanceof AppDisplay.AppIcon) { 72 | this._decorateIcon(i, Labels.ICONS); 73 | } else if (i instanceof AppDisplay.FolderIcon) { 74 | decorateViewIcons(i.view); 75 | this._signals.addWithLabel(Labels.ICONS, i.view, 76 | 'view-loaded', () => decorateAppIcons()); 77 | } 78 | }); 79 | }; 80 | decorateViewIcons(appDisplay); 81 | }; 82 | 83 | this._signals.add(appDisplay, 'view-loaded', () => decorateAppIcons()); 84 | decorateAppIcons(); 85 | } 86 | 87 | _patchAppIcons() { 88 | const self = this; 89 | 90 | this._methodInjections.add(AppDisplay.AppSearchProvider.prototype, 91 | 'createResultObject', function (originalFunction, ...args) { 92 | /* eslint-disable no-invalid-this */ 93 | const result = originalFunction.call(this, ...args); 94 | if (result instanceof AppDisplay.AppIcon) 95 | self._decorateIcon(result); 96 | return result; 97 | /* eslint-enable no-invalid-this */ 98 | }); 99 | 100 | this._methodInjections.add(AppDisplay.AppIcon.prototype, 101 | 'activate', function (originalFunction, ...args) { 102 | /* eslint-disable no-invalid-this */ 103 | if (this.updating) { 104 | const icon = Gio.Icon.new_for_string('action-unavailable-symbolic'); 105 | Main.osdWindowManager.show(-1, icon, 106 | _('%s is updating, try again later').format(this.name), 107 | null); 108 | return; 109 | } 110 | 111 | originalFunction.call(this, ...args); 112 | /* eslint-enable no-invalid-this */ 113 | }); 114 | 115 | const appIconsTypes = [ 116 | AppDisplay.AppSearchProvider, 117 | AppDisplay.AppIcon, 118 | ]; 119 | appIconsTypes.forEach(type => 120 | this._propertyInjections.add(type.prototype, 'updating', { 121 | get() { 122 | return !!this.__d2dUpdating; 123 | }, 124 | set(updating) { 125 | if (this.updating === updating) 126 | return; 127 | this.__d2dUpdating = updating; 128 | if (updating) 129 | this.add_style_class_name('updating'); 130 | else 131 | this.remove_style_class_name('updating'); 132 | }, 133 | })); 134 | 135 | this._methodInjections.add(AppMenu.AppMenu.prototype, 136 | 'open', function (originalFunction, ...args) { 137 | /* eslint-disable no-invalid-this */ 138 | if (!this.sourceActor.updating) { 139 | originalFunction.call(this, ...args); 140 | return; 141 | } 142 | 143 | if (this.isOpen) 144 | return; 145 | 146 | if (this.isEmpty()) 147 | return; 148 | 149 | // Temporarily hide all the menu items a part the Pinning and 150 | // the details one while we're updating. 151 | const validItems = [ 152 | this._toggleFavoriteItem, 153 | this._detailsItem, 154 | ]; 155 | const items = this._getMenuItems().filter( 156 | i => !validItems.includes(i)).map(i => 157 | i instanceof PopupMenu.PopupMenuBase ? i.actor : i); 158 | const itemsVisibility = items.map(i => i.visible); 159 | items.forEach(i => (i.visible = false)); 160 | const menuClosedId = this.connect('menu-closed', () => { 161 | this.disconnect(menuClosedId); 162 | items.forEach((i, idx) => (i.visible = itemsVisibility[idx])); 163 | }); 164 | originalFunction.call(this, ...args); 165 | /* eslint-enable no-invalid-this */ 166 | }); 167 | } 168 | } 169 | -------------------------------------------------------------------------------- /appSpread.js: -------------------------------------------------------------------------------- 1 | import {Atk, Clutter} from './dependencies/gi.js'; 2 | 3 | import { 4 | Main, 5 | SearchController, 6 | Workspace, 7 | WorkspaceThumbnail, 8 | } from './dependencies/shell/ui.js'; 9 | 10 | import {Utils} from './imports.js'; 11 | 12 | export class AppSpread { 13 | constructor() { 14 | this.app = null; 15 | this.supported = true; 16 | this.windows = []; 17 | 18 | // fail early and do nothing, if mandatory gnome shell functions are missing 19 | if (Main.overview.isDummy || 20 | !Workspace?.Workspace?.prototype._isOverviewWindow || 21 | !WorkspaceThumbnail?.WorkspaceThumbnail?.prototype._isOverviewWindow) { 22 | log('Dash to dock: Unable to temporarily replace shell functions ' + 23 | 'for app spread - using previews instead'); 24 | this.supported = false; 25 | return; 26 | } 27 | 28 | this._signalHandlers = new Utils.GlobalSignalsHandler(); 29 | this._methodInjections = new Utils.InjectionsHandler(); 30 | this._vfuncInjections = new Utils.VFuncInjectionsHandler(); 31 | } 32 | 33 | get isInAppSpread() { 34 | return !!this.app; 35 | } 36 | 37 | destroy() { 38 | if (!this.supported) 39 | return; 40 | this._hideAppSpread(); 41 | this._signalHandlers.destroy(); 42 | this._methodInjections.destroy(); 43 | this._vfuncInjections.destroy(); 44 | } 45 | 46 | toggle(app) { 47 | const newApp = this.app !== app; 48 | if (this.app) 49 | Main.overview.hide(); // also triggers hook 'hidden' 50 | 51 | if (app && newApp) 52 | this._showAppSpread(app); 53 | } 54 | 55 | _updateWindows() { 56 | this.windows = this.app.get_windows(); 57 | } 58 | 59 | _restoreDefaultWindows() { 60 | const {workspaceManager} = global; 61 | 62 | for (let i = 0; i < workspaceManager.nWorkspaces; i++) { 63 | const metaWorkspace = workspaceManager.get_workspace_by_index(i); 64 | metaWorkspace.list_windows().forEach(w => metaWorkspace.emit('window-added', w)); 65 | } 66 | } 67 | 68 | _filterWindows() { 69 | const {workspaceManager} = global; 70 | 71 | for (let i = 0; i < workspaceManager.nWorkspaces; i++) { 72 | const metaWorkspace = workspaceManager.get_workspace_by_index(i); 73 | metaWorkspace.list_windows().filter(w => !this.windows.includes(w)).forEach( 74 | w => metaWorkspace.emit('window-removed', w)); 75 | } 76 | } 77 | 78 | _restoreDefaultOverview() { 79 | this._hideAppSpread(); 80 | this._restoreDefaultWindows(); 81 | } 82 | 83 | _showAppSpread(app) { 84 | if (this.isInAppSpread) 85 | return; 86 | 87 | // Checked in overview "hide" event handler _hideAppSpread 88 | this.app = app; 89 | this._updateWindows(); 90 | 91 | // we need to hook into overview 'hidden' like this, in case app spread 92 | // overview is hidden by choosing another app it should then do its 93 | // cleanup too 94 | this._signalHandlers.add(Main.overview, 'hidden', () => this._hideAppSpread()); 95 | 96 | const appSpread = this; 97 | this._methodInjections.add([ 98 | // Filter workspaces to only show current app windows 99 | Workspace.Workspace.prototype, '_isOverviewWindow', 100 | function (originalMethod, window) { 101 | /* eslint-disable no-invalid-this */ 102 | const isOverviewWindow = originalMethod.call(this, window); 103 | return isOverviewWindow && appSpread.windows.includes(window); 104 | /* eslint-enable no-invalid-this */ 105 | }, 106 | ], 107 | [ 108 | // Filter thumbnails to only show current app windows 109 | WorkspaceThumbnail.WorkspaceThumbnail.prototype, '_isOverviewWindow', 110 | function (originalMethod, windowActor) { 111 | /* eslint-disable no-invalid-this */ 112 | const isOverviewWindow = originalMethod.call(this, windowActor); 113 | return isOverviewWindow && appSpread.windows.includes(windowActor.metaWindow); 114 | /* eslint-enable no-invalid-this */ 115 | }, 116 | ]); 117 | 118 | const activitiesButton = Main.panel.statusArea?.activities; 119 | 120 | if (activitiesButton) { 121 | this._signalHandlers.add(Main.overview, 'showing', () => { 122 | activitiesButton.remove_style_pseudo_class('overview'); 123 | activitiesButton.remove_accessible_state(Atk.StateType.CHECKED); 124 | }); 125 | 126 | this._vfuncInjections.add([ 127 | activitiesButton.constructor.prototype, 128 | 'event', 129 | function (event) { 130 | if (event.type() === Clutter.EventType.TOUCH_END || 131 | event.type() === Clutter.EventType.BUTTON_RELEASE) { 132 | if (Main.overview.shouldToggleByCornerOrButton()) 133 | appSpread._restoreDefaultOverview(); 134 | } 135 | return Clutter.EVENT_PROPAGATE; 136 | }, 137 | ], 138 | [ 139 | activitiesButton.constructor.prototype, 140 | 'key_release_event', 141 | function (keyEvent) { 142 | const {keyval} = keyEvent; 143 | if (keyval === Clutter.KEY_Return || keyval === Clutter.KEY_space) { 144 | if (Main.overview.shouldToggleByCornerOrButton()) 145 | appSpread._restoreDefaultOverview(); 146 | } 147 | return Clutter.EVENT_PROPAGATE; 148 | }, 149 | ]); 150 | } 151 | 152 | this._signalHandlers.add(Main.overview.dash.showAppsButton, 'notify::checked', () => { 153 | if (Main.overview.dash.showAppsButton.checked) 154 | this._restoreDefaultOverview(); 155 | }); 156 | 157 | // If closing windows in AppSpread, and only one window left: 158 | // exit app spread and focus remaining window (handled in _hideAppSpread) 159 | this._signalHandlers.add(this.app, 'windows-changed', () => { 160 | this._updateWindows(); 161 | 162 | if (this.windows.length <= 1) 163 | Main.overview.hide(); 164 | }); 165 | 166 | this._disableSearch(); 167 | 168 | Main.overview.show(); 169 | } 170 | 171 | _hideAppSpread() { 172 | if (!this.isInAppSpread) 173 | return; 174 | 175 | if (Main.overview.visible) { 176 | Main.panel.statusArea?.activities.add_style_pseudo_class('overview'); 177 | Main.panel.statusArea?.activities.add_accessible_state(Atk.StateType.CHECKED); 178 | } 179 | 180 | // Restore original behaviour 181 | this.app = null; 182 | this._enableSearch(); 183 | this._methodInjections.clear(); 184 | this._signalHandlers.clear(); 185 | this._vfuncInjections.clear(); 186 | 187 | // Check reason for leaving AppSpread was closing app windows and only one window left... 188 | if (this.windows.length === 1) 189 | Main.activateWindow(this.windows[0]); 190 | 191 | this.windows = []; 192 | } 193 | 194 | _disableSearch() { 195 | if (!SearchController.SearchController.prototype._shouldTriggerSearch) 196 | return; 197 | 198 | if (Main.overview.searchEntry) 199 | Main.overview.searchEntry.opacity = 0; 200 | 201 | this._methodInjections.add( 202 | SearchController.SearchController.prototype, 203 | '_shouldTriggerSearch', () => false); 204 | } 205 | 206 | _enableSearch() { 207 | if (Main.overview.searchEntry) 208 | Main.overview.searchEntry.opacity = 255; 209 | } 210 | } 211 | -------------------------------------------------------------------------------- /dbusmenuUtils.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | import { 4 | Atk, 5 | Clutter, 6 | Gio, 7 | GLib, 8 | St, 9 | } from './dependencies/gi.js'; 10 | 11 | import {PopupMenu} from './dependencies/shell/ui.js'; 12 | 13 | import {Utils} from './imports.js'; 14 | 15 | // Dbusmenu features not (yet) supported: 16 | // 17 | // * The CHILD_DISPLAY property 18 | // 19 | // This seems to have only one possible value in the Dbusmenu API, so 20 | // there's little point in depending on it--the code in libdbusmenu sets it 21 | // if and only if an item has children, so for our purposes it's simpler 22 | // and more intuitive to just check children.length. (This does ignore the 23 | // possibility of a program not using libdbusmenu and setting CHILD_DISPLAY 24 | // independently, perhaps to indicate that an childless menu item should 25 | // nevertheless be displayed like a submenu.) 26 | // 27 | // * Children more than two levels deep 28 | // 29 | // PopupMenu doesn't seem to support submenus in submenus. 30 | // 31 | // * Shortcut keys 32 | // 33 | // If these keys are supposed to be installed as global shortcuts, we'd 34 | // have to query these aggressively and not wait for the DBus menu to be 35 | // mapped to a popup menu. A shortcut key that only works once the popup 36 | // menu is open and has key focus is possibly of marginal value. 37 | 38 | /** 39 | * 40 | */ 41 | export async function haveDBusMenu() { 42 | try { 43 | const {default: DBusMenu} = await import('gi://Dbusmenu'); 44 | return DBusMenu; 45 | } catch (e) { 46 | log(`Failed to import DBusMenu, quicklists are not available: ${e}`); 47 | return null; 48 | } 49 | } 50 | 51 | const DBusMenu = await haveDBusMenu(); 52 | 53 | /** 54 | * @param dbusmenuItem 55 | * @param deep 56 | */ 57 | export function makePopupMenuItem(dbusmenuItem, deep) { 58 | // These are the only properties guaranteed to be available when the root 59 | // item is first announced. Other properties might be loaded already, but 60 | // be sure to connect to Dbusmenu.MENUITEM_SIGNAL_PROPERTY_CHANGED to get 61 | // the most up-to-date values in case they aren't. 62 | const itemType = dbusmenuItem.property_get(DBusMenu.MENUITEM_PROP_TYPE); 63 | const label = dbusmenuItem.property_get(DBusMenu.MENUITEM_PROP_LABEL); 64 | const visible = dbusmenuItem.property_get_bool(DBusMenu.MENUITEM_PROP_VISIBLE); 65 | const enabled = dbusmenuItem.property_get_bool(DBusMenu.MENUITEM_PROP_ENABLED); 66 | const accessibleDesc = dbusmenuItem.property_get(DBusMenu.MENUITEM_PROP_ACCESSIBLE_DESC); 67 | // const childDisplay = dbusmenuItem.property_get(Dbusmenu.MENUITEM_PROP_CHILD_DISPLAY); 68 | 69 | let item; 70 | const signalsHandler = new Utils.GlobalSignalsHandler(); 71 | const wantIcon = itemType === DBusMenu.CLIENT_TYPES_IMAGE; 72 | 73 | // If the basic type of the menu item needs to change, call this. 74 | const recreateItem = () => { 75 | const newItem = makePopupMenuItem(dbusmenuItem, deep); 76 | const parentMenu = item._parent; 77 | parentMenu.addMenuItem(newItem); 78 | // Reminder: Clutter thinks of later entries in the child list as 79 | // "above" earlier ones, so "above" here means "below" in terms of the 80 | // menu's vertical order. 81 | parentMenu.actor.set_child_above_sibling(newItem.actor, item.actor); 82 | if (newItem.menu) 83 | parentMenu.actor.set_child_above_sibling(newItem.menu.actor, newItem.actor); 84 | 85 | parentMenu.actor.remove_child(item.actor); 86 | item.destroy(); 87 | item = null; 88 | }; 89 | 90 | const updateDisposition = () => { 91 | const disposition = dbusmenuItem.property_get(DBusMenu.MENUITEM_PROP_DISPOSITION); 92 | let iconName = null; 93 | switch (disposition) { 94 | case DBusMenu.MENUITEM_DISPOSITION_ALERT: 95 | case DBusMenu.MENUITEM_DISPOSITION_WARNING: 96 | iconName = 'dialog-warning-symbolic'; 97 | break; 98 | case DBusMenu.MENUITEM_DISPOSITION_INFORMATIVE: 99 | iconName = 'dialog-information-symbolic'; 100 | break; 101 | } 102 | if (iconName) { 103 | item._dispositionIcon = new St.Icon({ 104 | icon_name: iconName, 105 | style_class: 'popup-menu-icon', 106 | y_align: Clutter.ActorAlign.CENTER, 107 | y_expand: true, 108 | }); 109 | let expander; 110 | for (let child = item.label.get_next_sibling(); ; child = child.get_next_sibling()) { 111 | if (!child) { 112 | expander = new St.Bin({ 113 | style_class: 'popup-menu-item-expander', 114 | x_expand: true, 115 | }); 116 | item.actor.add_child(expander); 117 | break; 118 | } else if (child instanceof St.Widget && 119 | child.has_style_class_name('popup-menu-item-expander')) { 120 | expander = child; 121 | break; 122 | } 123 | } 124 | item.actor.insert_child_above(item._dispositionIcon, expander); 125 | } else if (item._dispositionIcon) { 126 | item.actor.remove_child(item._dispositionIcon); 127 | item._dispositionIcon = null; 128 | } 129 | }; 130 | 131 | const updateIcon = () => { 132 | if (!wantIcon) 133 | return; 134 | 135 | const iconData = dbusmenuItem.property_get_byte_array(DBusMenu.MENUITEM_PROP_ICON_DATA); 136 | const iconName = dbusmenuItem.property_get(DBusMenu.MENUITEM_PROP_ICON_NAME); 137 | if (iconName) 138 | item.icon.icon_name = iconName; 139 | else if (iconData.length) 140 | item.icon.gicon = Gio.BytesIcon.new(iconData); 141 | }; 142 | 143 | const updateOrnament = () => { 144 | const toggleType = dbusmenuItem.property_get(DBusMenu.MENUITEM_PROP_TOGGLE_TYPE); 145 | switch (toggleType) { 146 | case DBusMenu.MENUITEM_TOGGLE_CHECK: 147 | item.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM; 148 | break; 149 | case DBusMenu.MENUITEM_TOGGLE_RADIO: 150 | item.actor.accessible_role = Atk.Role.RADIO_MENU_ITEM; 151 | break; 152 | default: 153 | item.actor.accessible_role = Atk.Role.MENU_ITEM; 154 | } 155 | let ornament = PopupMenu.Ornament.NONE; 156 | const state = dbusmenuItem.property_get_int(DBusMenu.MENUITEM_PROP_TOGGLE_STATE); 157 | if (state === DBusMenu.MENUITEM_TOGGLE_STATE_UNKNOWN) { 158 | // PopupMenu doesn't natively support an "unknown" ornament, but we 159 | // can hack one in: 160 | item.setOrnament(ornament); 161 | item.actor.add_accessible_state(Atk.StateType.INDETERMINATE); 162 | item._ornamentLabel.text = '\u2501'; 163 | item.actor.remove_style_pseudo_class('checked'); 164 | } else { 165 | item.actor.remove_accessible_state(Atk.StateType.INDETERMINATE); 166 | if (state === DBusMenu.MENUITEM_TOGGLE_STATE_CHECKED) { 167 | if (toggleType === DBusMenu.MENUITEM_TOGGLE_CHECK) 168 | ornament = PopupMenu.Ornament.CHECK; 169 | else if (toggleType === DBusMenu.MENUITEM_TOGGLE_RADIO) 170 | ornament = PopupMenu.Ornament.DOT; 171 | 172 | item.actor.add_style_pseudo_class('checked'); 173 | } else { 174 | item.actor.remove_style_pseudo_class('checked'); 175 | } 176 | item.setOrnament(ornament); 177 | } 178 | }; 179 | 180 | const onPropertyChanged = (_, name, value) => { 181 | // `value` is null when a property is cleared, so handle those cases 182 | // with sensible defaults. 183 | switch (name) { 184 | case DBusMenu.MENUITEM_PROP_TYPE: 185 | recreateItem(); 186 | break; 187 | case DBusMenu.MENUITEM_PROP_ENABLED: 188 | item.setSensitive(value ? value.unpack() : false); 189 | break; 190 | case DBusMenu.MENUITEM_PROP_LABEL: 191 | item.label.text = value ? value.unpack() : ''; 192 | break; 193 | case DBusMenu.MENUITEM_PROP_VISIBLE: 194 | item.actor.visible = value ? value.unpack() : false; 195 | break; 196 | case DBusMenu.MENUITEM_PROP_DISPOSITION: 197 | updateDisposition(); 198 | break; 199 | case DBusMenu.MENUITEM_PROP_ACCESSIBLE_DESC: 200 | item.actor.get_accessible().accessible_description = value && value.unpack() || ''; 201 | break; 202 | case DBusMenu.MENUITEM_PROP_ICON_DATA: 203 | case DBusMenu.MENUITEM_PROP_ICON_NAME: 204 | updateIcon(); 205 | break; 206 | case DBusMenu.MENUITEM_PROP_TOGGLE_TYPE: 207 | case DBusMenu.MENUITEM_PROP_TOGGLE_STATE: 208 | updateOrnament(); 209 | break; 210 | } 211 | }; 212 | 213 | 214 | // Start actually building the menu item. 215 | const children = dbusmenuItem.get_children(); 216 | if (children.length && !deep) { 217 | // Make a submenu. 218 | item = new PopupMenu.PopupSubMenuMenuItem(label, wantIcon); 219 | const updateChildren = () => { 220 | const itemChildren = dbusmenuItem.get_children(); 221 | if (!itemChildren.length) { 222 | recreateItem(); 223 | return; 224 | } 225 | 226 | item.menu.removeAll(); 227 | itemChildren.forEach(remoteChild => 228 | item.menu.addMenuItem(makePopupMenuItem(remoteChild, true))); 229 | }; 230 | updateChildren(); 231 | signalsHandler.add( 232 | [dbusmenuItem, DBusMenu.MENUITEM_SIGNAL_CHILD_ADDED, updateChildren], 233 | [dbusmenuItem, DBusMenu.MENUITEM_SIGNAL_CHILD_MOVED, updateChildren], 234 | [dbusmenuItem, DBusMenu.MENUITEM_SIGNAL_CHILD_REMOVED, updateChildren]); 235 | } else { 236 | // Don't make a submenu. 237 | if (!deep) { 238 | // We only have the potential to get a submenu if we aren't deep. 239 | signalsHandler.add( 240 | [dbusmenuItem, DBusMenu.MENUITEM_SIGNAL_CHILD_ADDED, recreateItem], 241 | [dbusmenuItem, DBusMenu.MENUITEM_SIGNAL_CHILD_MOVED, recreateItem], 242 | [dbusmenuItem, DBusMenu.MENUITEM_SIGNAL_CHILD_REMOVED, recreateItem]); 243 | } 244 | 245 | if (itemType === DBusMenu.CLIENT_TYPES_SEPARATOR) { 246 | item = new PopupMenu.PopupSeparatorMenuItem(); 247 | } else if (wantIcon) { 248 | item = new PopupMenu.PopupImageMenuItem(label, null); 249 | item.icon = item._icon; 250 | } else { 251 | item = new PopupMenu.PopupMenuItem(label); 252 | } 253 | } 254 | 255 | // Set common initial properties. 256 | item.actor.visible = visible; 257 | item.setSensitive(enabled); 258 | if (accessibleDesc) 259 | item.actor.get_accessible().accessible_description = accessibleDesc; 260 | 261 | updateDisposition(); 262 | updateIcon(); 263 | updateOrnament(); 264 | 265 | // Prevent an initial resize flicker. 266 | if (wantIcon) 267 | item.icon.icon_size = 16; 268 | 269 | 270 | signalsHandler.add(dbusmenuItem, DBusMenu.MENUITEM_SIGNAL_PROPERTY_CHANGED, onPropertyChanged); 271 | 272 | // Connections on item will be lost when item is disposed; there's no need 273 | // to add them to signalsHandler. 274 | item.connect('activate', () => 275 | dbusmenuItem.handle_event(DBusMenu.MENUITEM_EVENT_ACTIVATED, 276 | new GLib.Variant('i', 0), Math.floor(Date.now() / 1000))); 277 | item.connect('destroy', () => signalsHandler.destroy()); 278 | 279 | return item; 280 | } 281 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | with import {}; 2 | stdenv.mkDerivation { 3 | name = "dash-to-dock"; 4 | buildInputs = [ gnumake glib sassc ]; 5 | } 6 | -------------------------------------------------------------------------------- /dependencies/gi.js: -------------------------------------------------------------------------------- 1 | export {default as Atk} from 'gi://Atk'; 2 | export {default as Clutter} from 'gi://Clutter'; 3 | export {default as Cogl} from 'gi://Cogl'; 4 | export {default as GLib} from 'gi://GLib'; 5 | export {default as GObject} from 'gi://GObject'; 6 | export {default as GdkPixbuf} from 'gi://GdkPixbuf'; 7 | export {default as Gio} from 'gi://Gio'; 8 | export {default as Meta} from 'gi://Meta'; 9 | export {default as Mtk} from 'gi://Mtk'; 10 | export {default as Pango} from 'gi://Pango'; 11 | export {default as Shell} from 'gi://Shell'; 12 | export {default as St} from 'gi://St'; 13 | 14 | -------------------------------------------------------------------------------- /dependencies/shell/extensions/extension.js: -------------------------------------------------------------------------------- 1 | export * as Extension from 'resource:///org/gnome/shell/extensions/extension.js'; 2 | -------------------------------------------------------------------------------- /dependencies/shell/misc.js: -------------------------------------------------------------------------------- 1 | export * as AnimationUtils from 'resource:///org/gnome/shell/misc/animationUtils.js'; 2 | export * as Config from 'resource:///org/gnome/shell/misc/config.js'; 3 | export * as ExtensionUtils from 'resource:///org/gnome/shell/misc/extensionUtils.js'; 4 | export * as ParentalControlsManager from 'resource:///org/gnome/shell/misc/parentalControlsManager.js'; 5 | export * as Util from 'resource:///org/gnome/shell/misc/util.js'; 6 | -------------------------------------------------------------------------------- /dependencies/shell/ui.js: -------------------------------------------------------------------------------- 1 | export * as AppDisplay from 'resource:///org/gnome/shell/ui/appDisplay.js'; 2 | export * as AppMenu from 'resource:///org/gnome/shell/ui/appMenu.js'; 3 | export * as AppFavorites from 'resource:///org/gnome/shell/ui/appFavorites.js'; 4 | export * as BoxPointer from 'resource:///org/gnome/shell/ui/boxpointer.js'; 5 | export * as DND from 'resource:///org/gnome/shell/ui/dnd.js'; 6 | export * as Dash from 'resource:///org/gnome/shell/ui/dash.js'; 7 | export * as Layout from 'resource:///org/gnome/shell/ui/layout.js'; 8 | export * as Main from 'resource:///org/gnome/shell/ui/main.js'; 9 | export * as Overview from 'resource:///org/gnome/shell/ui/overview.js'; 10 | export * as OverviewControls from 'resource:///org/gnome/shell/ui/overviewControls.js'; 11 | export * as PointerWatcher from 'resource:///org/gnome/shell/ui/pointerWatcher.js'; 12 | export * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js'; 13 | export * as SearchController from 'resource:///org/gnome/shell/ui/searchController.js'; 14 | export * as ShellMountOperation from 'resource:///org/gnome/shell/ui/shellMountOperation.js'; 15 | export * as Workspace from 'resource:///org/gnome/shell/ui/workspace.js'; 16 | export * as WorkspaceSwitcherPopup from 'resource:///org/gnome/shell/ui/workspaceSwitcherPopup.js'; 17 | export * as WorkspaceThumbnail from 'resource:///org/gnome/shell/ui/workspaceThumbnail.js'; 18 | export * as WorkspacesView from 'resource:///org/gnome/shell/ui/workspacesView.js'; 19 | -------------------------------------------------------------------------------- /desktopIconsIntegration.js: -------------------------------------------------------------------------------- 1 | /* 2 | * The code in this file is distributed under a "1-clause BSD license", 3 | * which makes it compatible with GPLv2 and GPLv3 too, and others. 4 | * 5 | * License text: 6 | * 7 | * Copyright (C) 2021 Sergio Costas (rastersoft@gmail.com) 8 | * 9 | * Redistribution and use in source and binary forms, with or without modification, 10 | * are permitted provided that the following conditions are met: 11 | * 12 | * 1. Redistributions of source code must retain the above copyright notice, 13 | * this list of conditions and the following disclaimer. 14 | * 15 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 19 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 | * POSSIBILITY OF SUCH DAMAGE. 26 | */ 27 | 28 | /** 29 | * Integration class 30 | * 31 | * This class must be added to other extensions in order to integrate 32 | * them with Desktop Icons NG. It allows an extension to notify how much margin 33 | * it uses in each side of each monitor. 34 | * 35 | * DON'T SEND PATCHES TO THIS FILE TO THE EXTENSION MAINTAINER. SEND THEM TO 36 | * DESKTOP ICONS NG MAINTAINER: https://gitlab.com/rastersoft/desktop-icons-ng 37 | * 38 | * In the *enable()* function, create a *DesktopIconsUsableAreaClass()* 39 | * object with 40 | * 41 | * new DesktopIconsIntegration.DesktopIconsUsableAreaClass(object); 42 | * 43 | * Now, in the *disable()* function just call to the *destroy()* method before 44 | * nullifying the pointer. You must create a new object in enable() the next 45 | * time the extension is enabled. 46 | * 47 | * In your code, every time you change the margins, you should call first to 48 | * *resetMargins()* method to clear the current margins, and then call to 49 | * *setMargins(...)* method as many times as you need to set the margins in each 50 | * monitor. You don't need to call it for all the monitors, only for those where 51 | * you are painting something. If you don't set values for a monitor, they will 52 | * be considered zero. 53 | * 54 | * The margins values are relative to the monitor border. 55 | * 56 | *******************************************************************************/ 57 | 58 | import GLib from 'gi://GLib'; 59 | import * as Main from 'resource:///org/gnome/shell/ui/main.js'; 60 | import * as ExtensionUtils from 'resource:///org/gnome/shell/misc/extensionUtils.js'; 61 | import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js'; 62 | 63 | const IDENTIFIER_UUID = '130cbc66-235c-4bd6-8571-98d2d8bba5e2'; 64 | 65 | export class DesktopIconsUsableAreaClass { 66 | _checkIfExtensionIsEnabled(extension) { 67 | return (extension?.state === ExtensionUtils.ExtensionState.ENABLED) || 68 | (extension?.state === ExtensionUtils.ExtensionState.ACTIVE); 69 | } 70 | 71 | constructor() { 72 | const Me = Extension.lookupByURL(import.meta.url); 73 | this._UUID = Me.uuid; 74 | this._extensionManager = Main.extensionManager; 75 | this._timedMarginsID = 0; 76 | this._margins = {}; 77 | this._emID = this._extensionManager.connect('extension-state-changed', (_obj, extension) => { 78 | if (!extension) 79 | return; 80 | 81 | // If an extension is being enabled and lacks the 82 | // DesktopIconsUsableArea object, we can avoid launching a refresh 83 | if (this._checkIfExtensionIsEnabled(extension)) { 84 | this._sendMarginsToExtension(extension); 85 | return; 86 | } 87 | // if the extension is being disabled, we must do a full refresh, 88 | // because if there were other extensions originally 89 | // loaded after that extension, those extensions will be disabled 90 | // and enabled again without notification 91 | this._changedMargins(); 92 | }); 93 | } 94 | 95 | /** 96 | * Sets or updates the top, bottom, left and right margins for a 97 | * monitor. Values are measured from the monitor border (and NOT from 98 | * the workspace border). 99 | * 100 | * @param {int} monitor Monitor number to which set the margins. 101 | * A negative value means "the primary monitor". 102 | * @param {int} top Top margin in pixels 103 | * @param {int} bottom Bottom margin in pixels 104 | * @param {int} left Left margin in pixels 105 | * @param {int} right Right margin in pixels 106 | */ 107 | setMargins(monitor, top, bottom, left, right) { 108 | this._margins[monitor] = { 109 | top, 110 | bottom, 111 | left, 112 | right, 113 | }; 114 | this._changedMargins(); 115 | } 116 | 117 | /** 118 | * Clears the current margins. Must be called before configuring the monitors 119 | * margins with setMargins(). 120 | */ 121 | resetMargins() { 122 | this._margins = {}; 123 | this._changedMargins(); 124 | } 125 | 126 | /** 127 | * Disconnects all the signals and removes the margins. 128 | */ 129 | destroy() { 130 | if (this._emID) { 131 | this._extensionManager.disconnect(this._emID); 132 | this._emID = 0; 133 | } 134 | if (this._timedMarginsID) { 135 | GLib.source_remove(this._timedMarginsID); 136 | this._timedMarginsID = 0; 137 | } 138 | this._margins = null; 139 | this._changedMargins(); 140 | } 141 | 142 | _changedMargins() { 143 | if (this._timedMarginsID) 144 | GLib.source_remove(this._timedMarginsID); 145 | 146 | this._timedMarginsID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => { 147 | this._sendMarginsToAll(); 148 | this._timedMarginsID = 0; 149 | return GLib.SOURCE_REMOVE; 150 | }); 151 | } 152 | 153 | _sendMarginsToAll() { 154 | this._extensionManager.getUuids().forEach(uuid => 155 | this._sendMarginsToExtension(this._extensionManager.lookup(uuid))); 156 | } 157 | 158 | _sendMarginsToExtension(extension) { 159 | // check that the extension is an extension that has the logic to accept 160 | // working margins 161 | if (!this._checkIfExtensionIsEnabled(extension)) 162 | return; 163 | 164 | const usableArea = extension?.stateObj?.DesktopIconsUsableArea; 165 | if (usableArea?.uuid === IDENTIFIER_UUID) { 166 | usableArea.setMarginsForExtension( 167 | this._UUID, this._margins); 168 | } 169 | } 170 | } 171 | -------------------------------------------------------------------------------- /extension.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | import {DockManager} from './docking.js'; 4 | import {Extension} from './dependencies/shell/extensions/extension.js'; 5 | 6 | // We export this so it can be accessed by other extensions 7 | export let dockManager; 8 | 9 | export default class DashToDockExtension extends Extension.Extension { 10 | enable() { 11 | dockManager = new DockManager(this); 12 | } 13 | 14 | disable() { 15 | dockManager?.destroy(); 16 | dockManager = null; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /fileManager1API.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | import {GLib, Gio} from './dependencies/gi.js'; 4 | const {signals: Signals} = imports; 5 | 6 | import {Utils} from './imports.js'; 7 | 8 | const FileManager1Iface = '\ 9 | \ 10 | '; 11 | 12 | const FileManager1Proxy = Gio.DBusProxy.makeProxyWrapper(FileManager1Iface); 13 | 14 | const Labels = Object.freeze({ 15 | WINDOWS: Symbol('windows'), 16 | }); 17 | 18 | /** 19 | * This class implements a client for the org.freedesktop.FileManager1 dbus 20 | * interface, and specifically for the OpenWindowsWithLocations property 21 | * which is published by Nautilus, but is not an official part of the interface. 22 | * 23 | * The property is a map from window identifiers to a list of locations open in 24 | * the window. 25 | */ 26 | export class FileManager1Client { 27 | constructor() { 28 | this._signalsHandler = new Utils.GlobalSignalsHandler(); 29 | this._cancellable = new Gio.Cancellable(); 30 | 31 | this._windowsByPath = new Map(); 32 | this._windowsByLocation = new Map(); 33 | this._proxy = new FileManager1Proxy(Gio.DBus.session, 34 | 'org.freedesktop.FileManager1', 35 | '/org/freedesktop/FileManager1', 36 | (initable, error) => { 37 | // Use async construction to avoid blocking on errors. 38 | if (error) { 39 | if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) 40 | global.log(error); 41 | } else { 42 | this._updateWindows(); 43 | this._updateLocationMap(); 44 | } 45 | }, this._cancellable); 46 | 47 | this._signalsHandler.add([ 48 | this._proxy, 49 | 'g-properties-changed', 50 | this._onPropertyChanged.bind(this), 51 | ], [ 52 | // We must additionally listen for Screen events to know when to 53 | // rebuild our location map when the set of available windows changes. 54 | global.workspaceManager, 55 | 'workspace-added', 56 | () => this._onWindowsChanged(), 57 | ], [ 58 | global.workspaceManager, 59 | 'workspace-removed', 60 | () => this._onWindowsChanged(), 61 | ], [ 62 | global.display, 63 | 'window-entered-monitor', 64 | () => this._onWindowsChanged(), 65 | ], [ 66 | global.display, 67 | 'window-left-monitor', 68 | () => this._onWindowsChanged(), 69 | ]); 70 | } 71 | 72 | destroy() { 73 | if (this._windowsUpdateIdle) { 74 | GLib.source_remove(this._windowsUpdateIdle); 75 | delete this._windowsUpdateIdle; 76 | } 77 | this._cancellable.cancel(); 78 | this._signalsHandler.destroy(); 79 | this._windowsByLocation.clear(); 80 | this._windowsByPath.clear(); 81 | this._proxy = null; 82 | } 83 | 84 | /** 85 | * Return an array of windows that are showing a location or 86 | * sub-directories of that location. 87 | * 88 | * @param location 89 | */ 90 | getWindows(location) { 91 | if (!location) 92 | return []; 93 | 94 | location += location.endsWith('/') ? '' : '/'; 95 | const windows = []; 96 | this._windowsByLocation.forEach((wins, l) => { 97 | if (l.startsWith(location)) 98 | windows.push(...wins); 99 | }); 100 | return [...new Set(windows)]; 101 | } 102 | 103 | _onPropertyChanged(proxy, changed, _invalidated) { 104 | const property = changed.unpack(); 105 | if (property && 106 | ('OpenWindowsWithLocations' in property)) 107 | this._updateLocationMap(); 108 | } 109 | 110 | _updateWindows() { 111 | const oldSize = this._windowsByPath.size; 112 | const oldPaths = this._windowsByPath.keys(); 113 | this._windowsByPath = Utils.getWindowsByObjectPath(); 114 | 115 | if (oldSize !== this._windowsByPath.size) 116 | return true; 117 | 118 | return [...oldPaths].some(path => !this._windowsByPath.has(path)); 119 | } 120 | 121 | _onWindowsChanged() { 122 | if (this._windowsUpdateIdle) 123 | return; 124 | 125 | this._windowsUpdateIdle = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { 126 | if (this._updateWindows()) 127 | this._updateLocationMap(); 128 | 129 | delete this._windowsUpdateIdle; 130 | return GLib.SOURCE_REMOVE; 131 | }); 132 | } 133 | 134 | _updateLocationMap() { 135 | const properties = this._proxy.get_cached_property_names(); 136 | if (!properties) { 137 | // Nothing to check yet. 138 | return; 139 | } 140 | 141 | if (properties.includes('OpenWindowsWithLocations')) 142 | this._updateFromPaths(); 143 | } 144 | 145 | _locationMapsEquals(mapA, mapB) { 146 | if (mapA.size !== mapB.size) 147 | return false; 148 | 149 | const setsEquals = (a, b) => a.size === b.size && 150 | [...a].every(value => b.has(value)); 151 | 152 | for (const [key, val] of mapA) { 153 | const windowsSet = mapB.get(key); 154 | if (!windowsSet || !setsEquals(windowsSet, val)) 155 | return false; 156 | } 157 | return true; 158 | } 159 | 160 | _updateFromPaths() { 161 | const locationsByWindowsPath = this._proxy.OpenWindowsWithLocations; 162 | 163 | const windowsByLocation = new Map(); 164 | this._signalsHandler.removeWithLabel(Labels.WINDOWS); 165 | 166 | Object.entries(locationsByWindowsPath).forEach(([windowPath, locations]) => { 167 | locations.forEach(location => { 168 | const win = this._windowsByPath.get(windowPath); 169 | const windowGroup = win ? [win] : []; 170 | 171 | win?.foreach_transient(w => windowGroup.push(w) || true); 172 | 173 | windowGroup.forEach(window => { 174 | location += location.endsWith('/') ? '' : '/'; 175 | // Use a set to deduplicate when a window has a 176 | // location open in multiple tabs. 177 | const windows = windowsByLocation.get(location) || new Set(); 178 | windows.add(window); 179 | 180 | if (windows.size === 1) 181 | windowsByLocation.set(location, windows); 182 | 183 | this._signalsHandler.addWithLabel(Labels.WINDOWS, window, 184 | 'unmanaged', () => { 185 | const wins = this._windowsByLocation.get(location); 186 | wins.delete(window); 187 | if (!wins.size) 188 | this._windowsByLocation.delete(location); 189 | this.emit('windows-changed'); 190 | }); 191 | }); 192 | }); 193 | }); 194 | 195 | if (!this._locationMapsEquals(this._windowsByLocation, windowsByLocation)) { 196 | this._windowsByLocation = windowsByLocation; 197 | this.emit('windows-changed'); 198 | } 199 | } 200 | } 201 | Signals.addSignalMethods(FileManager1Client.prototype); 202 | -------------------------------------------------------------------------------- /imports.js: -------------------------------------------------------------------------------- 1 | export * as AppIconIndicators from './appIconIndicators.js'; 2 | export * as AppIcons from './appIcons.js'; 3 | export * as AppIconsDecorator from './appIconsDecorator.js'; 4 | export * as AppSpread from './appSpread.js'; 5 | export * as DockDash from './dash.js'; 6 | export * as DBusMenuUtils from './dbusmenuUtils.js'; 7 | export * as DesktopIconsIntegration from './desktopIconsIntegration.js'; 8 | export * as Docking from './docking.js'; 9 | export * as Extension from './extension.js'; 10 | export * as FileManager1API from './fileManager1API.js'; 11 | export * as Intellihide from './intellihide.js'; 12 | export * as LauncherAPI from './launcherAPI.js'; 13 | export * as Locations from './locations.js'; 14 | export * as NotificationsMonitor from './notificationsMonitor.js'; 15 | export * as Theming from './theming.js'; 16 | export * as Utils from './utils.js'; 17 | export * as WindowPreview from './windowPreview.js'; 18 | -------------------------------------------------------------------------------- /intellihide.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | import { 4 | GLib, 5 | Meta, 6 | Shell, 7 | } from './dependencies/gi.js'; 8 | 9 | import { 10 | Docking, 11 | Utils, 12 | } from './imports.js'; 13 | 14 | const {signals: Signals} = imports; 15 | 16 | // A good compromise between reactivity and efficiency; to be tuned. 17 | const INTELLIHIDE_CHECK_INTERVAL = 100; 18 | 19 | const OverlapStatus = Object.freeze({ 20 | UNDEFINED: -1, 21 | FALSE: 0, 22 | TRUE: 1, 23 | }); 24 | 25 | const IntellihideMode = Object.freeze({ 26 | ALL_WINDOWS: 0, 27 | FOCUS_APPLICATION_WINDOWS: 1, 28 | MAXIMIZED_WINDOWS: 2, 29 | ALWAYS_ON_TOP: 3, 30 | }); 31 | 32 | // List of windows type taken into account. Order is important (keep the original 33 | // enum order). 34 | const handledWindowTypes = [ 35 | Meta.WindowType.NORMAL, 36 | Meta.WindowType.DOCK, 37 | Meta.WindowType.DIALOG, 38 | Meta.WindowType.MODAL_DIALOG, 39 | Meta.WindowType.TOOLBAR, 40 | Meta.WindowType.MENU, 41 | Meta.WindowType.UTILITY, 42 | Meta.WindowType.SPLASHSCREEN, 43 | Meta.WindowType.DROPDOWN_MENU, 44 | ]; 45 | 46 | // List of applications, ignore windows of these applications in considering intellihide 47 | const ignoreApps = ['com.rastersoft.ding', 'com.desktop.ding']; 48 | 49 | /** 50 | * A rough and ugly implementation of the intellihide behaviour. 51 | * Intallihide object: emit 'status-changed' signal when the overlap of windows 52 | * with the provided targetBoxClutter.ActorBox changes; 53 | */ 54 | export class Intellihide { 55 | constructor(monitorIndex) { 56 | // Load settings 57 | this._monitorIndex = monitorIndex; 58 | 59 | this._signalsHandler = new Utils.GlobalSignalsHandler(); 60 | this._tracker = Shell.WindowTracker.get_default(); 61 | this._focusApp = null; // The application whose window is focused. 62 | this._topApp = null; // The application whose window is on top on the monitor with the dock. 63 | 64 | this._isEnabled = false; 65 | this.status = OverlapStatus.UNDEFINED; 66 | this._targetBox = null; 67 | 68 | this._checkOverlapTimeoutContinue = false; 69 | this._checkOverlapTimeoutId = 0; 70 | 71 | this._trackedWindows = new Map(); 72 | 73 | // Connect global signals 74 | this._signalsHandler.add([ 75 | // Add signals on windows created from now on 76 | global.display, 77 | 'window-created', 78 | this._windowCreated.bind(this), 79 | ], [ 80 | // triggered for instance when the window list order changes, 81 | // included when the workspace is switched 82 | global.display, 83 | 'restacked', 84 | this._checkOverlap.bind(this), 85 | ], [ 86 | // when windows are alwasy on top, the focus window can change 87 | // without the windows being restacked. Thus monitor window focus change. 88 | this._tracker, 89 | 'notify::focus-app', 90 | this._checkOverlap.bind(this), 91 | ], [ 92 | // update wne monitor changes, for instance in multimonitor when monitor are attached 93 | Utils.getMonitorManager(), 94 | 'monitors-changed', 95 | this._checkOverlap.bind(this), 96 | ]); 97 | } 98 | 99 | destroy() { 100 | // Disconnect global signals 101 | this._signalsHandler.destroy(); 102 | 103 | // Remove residual windows signals 104 | this.disable(); 105 | } 106 | 107 | enable() { 108 | this._isEnabled = true; 109 | this._status = OverlapStatus.UNDEFINED; 110 | global.get_window_actors().forEach(function (wa) { 111 | this._addWindowSignals(wa); 112 | }, this); 113 | this._doCheckOverlap(); 114 | } 115 | 116 | disable() { 117 | this._isEnabled = false; 118 | 119 | for (const wa of this._trackedWindows.keys()) 120 | this._removeWindowSignals(wa); 121 | 122 | this._trackedWindows.clear(); 123 | 124 | if (this._checkOverlapTimeoutId > 0) { 125 | GLib.source_remove(this._checkOverlapTimeoutId); 126 | this._checkOverlapTimeoutId = 0; 127 | } 128 | } 129 | 130 | _windowCreated(display, metaWindow) { 131 | this._addWindowSignals(metaWindow.get_compositor_private()); 132 | this._doCheckOverlap(); 133 | } 134 | 135 | _addWindowSignals(wa) { 136 | if (!this._handledWindow(wa)) 137 | return; 138 | const signalId = wa.connect('notify::allocation', this._checkOverlap.bind(this)); 139 | this._trackedWindows.set(wa, signalId); 140 | wa.connect('destroy', this._removeWindowSignals.bind(this)); 141 | } 142 | 143 | _removeWindowSignals(wa) { 144 | if (this._trackedWindows.get(wa)) { 145 | wa.disconnect(this._trackedWindows.get(wa)); 146 | this._trackedWindows.delete(wa); 147 | } 148 | } 149 | 150 | updateTargetBox(box) { 151 | this._targetBox = box; 152 | this._checkOverlap(); 153 | } 154 | 155 | forceUpdate() { 156 | this._status = OverlapStatus.UNDEFINED; 157 | this._doCheckOverlap(); 158 | } 159 | 160 | getOverlapStatus() { 161 | return this._status === OverlapStatus.TRUE; 162 | } 163 | 164 | _checkOverlap() { 165 | if (!this._isEnabled || !this._targetBox) 166 | return; 167 | 168 | /* Limit the number of calls to the doCheckOverlap function */ 169 | if (this._checkOverlapTimeoutId) { 170 | this._checkOverlapTimeoutContinue = true; 171 | return; 172 | } 173 | 174 | this._doCheckOverlap(); 175 | 176 | this._checkOverlapTimeoutId = GLib.timeout_add( 177 | GLib.PRIORITY_DEFAULT, INTELLIHIDE_CHECK_INTERVAL, () => { 178 | this._doCheckOverlap(); 179 | if (this._checkOverlapTimeoutContinue) { 180 | this._checkOverlapTimeoutContinue = false; 181 | return GLib.SOURCE_CONTINUE; 182 | } else { 183 | this._checkOverlapTimeoutId = 0; 184 | return GLib.SOURCE_REMOVE; 185 | } 186 | }); 187 | } 188 | 189 | _doCheckOverlap() { 190 | if (!this._isEnabled || !this._targetBox) 191 | return; 192 | 193 | let overlaps = OverlapStatus.FALSE; 194 | let windows = global.get_window_actors().filter(wa => this._handledWindow(wa)); 195 | 196 | if (windows.length > 0) { 197 | /* 198 | * Get the top window on the monitor where the dock is placed. 199 | * The idea is that we dont want to overlap with the windows of the topmost application, 200 | * event is it's not the focused app -- for instance because in multimonitor the user 201 | * select a window in the secondary monitor. 202 | */ 203 | 204 | let topWindow = null; 205 | for (let i = windows.length - 1; i >= 0; i--) { 206 | const metaWin = windows[i].get_meta_window(); 207 | if (metaWin.get_monitor() === this._monitorIndex) { 208 | topWindow = metaWin; 209 | break; 210 | } 211 | } 212 | 213 | if (topWindow) { 214 | this._topApp = this._tracker.get_window_app(topWindow); 215 | // If there isn't a focused app, use that of the window on top 216 | this._focusApp = this._tracker.focus_app || this._topApp; 217 | 218 | windows = windows.filter(this._intellihideFilterInteresting, this); 219 | 220 | for (let i = 0; i < windows.length; i++) { 221 | const win = windows[i].get_meta_window(); 222 | 223 | if (win) { 224 | const rect = win.get_frame_rect(); 225 | 226 | const test = (rect.x < this._targetBox.x2) && 227 | (rect.x + rect.width > this._targetBox.x1) && 228 | (rect.y < this._targetBox.y2) && 229 | (rect.y + rect.height > this._targetBox.y1); 230 | 231 | if (test) { 232 | overlaps = OverlapStatus.TRUE; 233 | break; 234 | } 235 | } 236 | } 237 | } 238 | } 239 | 240 | if (this._status !== overlaps) { 241 | this._status = overlaps; 242 | this.emit('status-changed', this._status); 243 | } 244 | } 245 | 246 | // Filter interesting windows to be considered for intellihide. 247 | // Consider all windows visible on the current workspace. 248 | // Optionally skip windows of other applications 249 | _intellihideFilterInteresting(wa) { 250 | const metaWin = wa.get_meta_window(); 251 | const currentWorkspace = global.workspace_manager.get_active_workspace_index(); 252 | const workspace = metaWin.get_workspace(); 253 | const workspaceIndex = workspace.index(); 254 | 255 | // Depending on the intellihide mode, exclude non-relevent windows 256 | switch (Docking.DockManager.settings.intellihideMode) { 257 | case IntellihideMode.ALL_WINDOWS: 258 | // Do nothing 259 | break; 260 | 261 | case IntellihideMode.FOCUS_APPLICATION_WINDOWS: 262 | // Skip windows of other apps 263 | if (this._focusApp) { 264 | // The DropDownTerminal extension is not an application per se 265 | // so we match its window by wm class instead 266 | if (metaWin.get_wm_class() === 'DropDownTerminalWindow') 267 | return true; 268 | 269 | const currentApp = this._tracker.get_window_app(metaWin); 270 | const focusWindow = global.display.get_focus_window(); 271 | 272 | // Consider half maximized windows side by side 273 | // and windows which are alwayson top 274 | if (currentApp !== this._focusApp && currentApp !== this._topApp && 275 | !((focusWindow && focusWindow.maximized_vertically && 276 | !focusWindow.maximized_horizontally) && 277 | (metaWin.maximized_vertically && !metaWin.maximized_horizontally) && 278 | metaWin.get_monitor() === focusWindow.get_monitor()) && 279 | !metaWin.is_above()) 280 | return false; 281 | } 282 | break; 283 | 284 | case IntellihideMode.MAXIMIZED_WINDOWS: 285 | // Skip unmaximized windows 286 | if (!metaWin.maximized_vertically && !metaWin.maximized_horizontally && !metaWin.fullscreen) 287 | return false; 288 | break; 289 | 290 | case IntellihideMode.ALWAYS_ON_TOP: 291 | // Always on top, except for fullscreen windows 292 | if (this._focusApp) { 293 | const {focusWindow} = global.display; 294 | if (!focusWindow?.fullscreen) 295 | return false; 296 | } 297 | break; 298 | } 299 | 300 | if (workspaceIndex === currentWorkspace && metaWin.showing_on_its_workspace()) 301 | return true; 302 | else 303 | return false; 304 | } 305 | 306 | // Filter windows by type 307 | // inspired by Opacify@gnome-shell.localdomain.pl 308 | _handledWindow(wa) { 309 | const metaWindow = wa.get_meta_window(); 310 | 311 | if (!metaWindow) 312 | return false; 313 | 314 | // The DING extension desktop window needs to be excluded 315 | // so we match its window by application id and window property. 316 | const wmApp = metaWindow.get_gtk_application_id(); 317 | if (ignoreApps.includes(wmApp) && metaWindow.is_skip_taskbar()) 318 | return false; 319 | 320 | // The DropDownTerminal extension uses the POPUP_MENU window type hint 321 | // so we match its window by wm class instead 322 | if (metaWindow.get_wm_class() === 'DropDownTerminalWindow') 323 | return true; 324 | 325 | const wtype = metaWindow.get_window_type(); 326 | for (let i = 0; i < handledWindowTypes.length; i++) { 327 | const hwtype = handledWindowTypes[i]; 328 | if (hwtype === wtype) 329 | return true; 330 | else if (hwtype > wtype) 331 | return false; 332 | } 333 | return false; 334 | } 335 | } 336 | 337 | Signals.addSignalMethods(Intellihide.prototype); 338 | -------------------------------------------------------------------------------- /launcherAPI.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | import {Gio} from './dependencies/gi.js'; 4 | import {DBusMenuUtils} from './imports.js'; 5 | 6 | const DBusMenu = await DBusMenuUtils.haveDBusMenu(); 7 | 8 | export class LauncherEntryRemoteModel { 9 | constructor() { 10 | this._entrySourceStacks = new Map(); 11 | this._remoteMaps = new Map(); 12 | 13 | this._launcher_entry_dbus_signal_id = 14 | Gio.DBus.session.signal_subscribe(null, // sender 15 | 'com.canonical.Unity.LauncherEntry', // iface 16 | 'Update', // member 17 | null, // path 18 | null, // arg0 19 | Gio.DBusSignalFlags.NONE, 20 | (_connection, senderName, _objectPath, _interfaceName, _signalName, parameters) => 21 | this._onUpdate(senderName, ...parameters.deep_unpack())); 22 | 23 | this._dbus_name_owner_changed_signal_id = 24 | Gio.DBus.session.signal_subscribe('org.freedesktop.DBus', // sender 25 | 'org.freedesktop.DBus', // interface 26 | 'NameOwnerChanged', // member 27 | '/org/freedesktop/DBus', // path 28 | null, // arg0 29 | Gio.DBusSignalFlags.NONE, 30 | (connection, _senderName, _objectPath, _interfaceName, _signalName, parameters) => 31 | this._onDBusNameChange(...parameters.deep_unpack().slice(1))); 32 | 33 | this._acquireUnityDBus(); 34 | } 35 | 36 | destroy() { 37 | if (this._launcher_entry_dbus_signal_id) 38 | Gio.DBus.session.signal_unsubscribe(this._launcher_entry_dbus_signal_id); 39 | 40 | 41 | if (this._dbus_name_owner_changed_signal_id) 42 | Gio.DBus.session.signal_unsubscribe(this._dbus_name_owner_changed_signal_id); 43 | 44 | 45 | this._releaseUnityDBus(); 46 | } 47 | 48 | _lookupStackById(appId) { 49 | let sourceStack = this._entrySourceStacks.get(appId); 50 | if (!sourceStack) { 51 | sourceStack = new PropertySourceStack(new LauncherEntry(), 52 | launcherEntryDefaults); 53 | this._entrySourceStacks.set(appId, sourceStack); 54 | } 55 | 56 | return sourceStack; 57 | } 58 | 59 | lookupById(appId) { 60 | return this._lookupStackById(appId).target; 61 | } 62 | 63 | _acquireUnityDBus() { 64 | if (!this._unity_bus_id) { 65 | this._unity_bus_id = Gio.DBus.session.own_name('com.canonical.Unity', 66 | Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT | Gio.BusNameOwnerFlags.REPLACE, 67 | null, () => (this._unity_bus_id = 0)); 68 | } 69 | } 70 | 71 | _releaseUnityDBus() { 72 | if (this._unity_bus_id) { 73 | Gio.DBus.session.unown_name(this._unity_bus_id); 74 | this._unity_bus_id = 0; 75 | } 76 | } 77 | 78 | _onDBusNameChange(before, after) { 79 | if (!before || !this._remoteMaps.size) 80 | return; 81 | 82 | const remoteMap = this._remoteMaps.get(before); 83 | if (!remoteMap) 84 | return; 85 | 86 | this._remoteMaps.delete(before); 87 | if (after && !this._remoteMaps.has(after)) { 88 | this._remoteMaps.set(after, remoteMap); 89 | } else { 90 | for (const [appId, remote] of remoteMap) { 91 | const sourceStack = this._entrySourceStacks.get(appId); 92 | const changed = sourceStack.remove(remote); 93 | if (changed) 94 | sourceStack.target._emitChangedEvents(changed); 95 | } 96 | } 97 | } 98 | 99 | _onUpdate(senderName, appUri, properties) { 100 | if (!senderName) 101 | return; 102 | 103 | 104 | const appId = appUri.replace(/(^\w+:|^)\/\//, ''); 105 | if (!appId) 106 | return; 107 | 108 | 109 | let remoteMap = this._remoteMaps.get(senderName); 110 | if (!remoteMap) 111 | this._remoteMaps.set(senderName, remoteMap = new Map()); 112 | 113 | let remote = remoteMap.get(appId); 114 | if (!remote) 115 | remoteMap.set(appId, remote = Object.assign({}, launcherEntryDefaults)); 116 | 117 | for (const name in properties) { 118 | if (name === 'quicklist' && DBusMenu) { 119 | const quicklistPath = properties[name].unpack(); 120 | if (quicklistPath && 121 | (!remote._quicklistMenuClient || 122 | remote._quicklistMenuClient.dbus_object !== quicklistPath)) { 123 | remote.quicklist = null; 124 | let menuClient = remote._quicklistMenuClient; 125 | if (menuClient) { 126 | menuClient.dbus_object = quicklistPath; 127 | } else { 128 | // This property should not be enumerable 129 | Object.defineProperty(remote, '_quicklistMenuClient', { 130 | writable: true, 131 | value: menuClient = new DBusMenu.Client({ 132 | dbus_name: senderName, 133 | dbus_object: quicklistPath, 134 | }), 135 | }); 136 | } 137 | const handler = () => { 138 | const root = menuClient.get_root(); 139 | if (remote.quicklist !== root) { 140 | remote.quicklist = root; 141 | if (sourceStack.isTop(remote)) { 142 | sourceStack.target.quicklist = root; 143 | sourceStack.target._emitChangedEvents(['quicklist']); 144 | } 145 | } 146 | }; 147 | menuClient.connect(DBusMenu.CLIENT_SIGNAL_ROOT_CHANGED, handler); 148 | } 149 | } else { 150 | remote[name] = properties[name].unpack(); 151 | } 152 | } 153 | 154 | const sourceStack = this._lookupStackById(appId); 155 | sourceStack.target._emitChangedEvents(sourceStack.update(remote)); 156 | } 157 | } 158 | 159 | const launcherEntryDefaults = Object.freeze({ 160 | count: 0, 161 | progress: 0, 162 | urgent: false, 163 | updating: false, 164 | quicklist: null, 165 | 'count-visible': false, 166 | 'progress-visible': false, 167 | }); 168 | 169 | const LauncherEntry = class DashToDockLauncherEntry { 170 | constructor() { 171 | this._connections = new Map(); 172 | this._handlers = new Map(); 173 | this._nextId = 0; 174 | } 175 | 176 | connect(eventNames, callback) { 177 | if (typeof eventNames === 'string') 178 | eventNames = [eventNames]; 179 | 180 | callback(this, this); 181 | const id = this._nextId++; 182 | const handler = {id, callback}; 183 | eventNames.forEach(name => { 184 | let handlerList = this._handlers.get(name); 185 | if (!handlerList) 186 | this._handlers.set(name, handlerList = []); 187 | 188 | handlerList.push(handler); 189 | }); 190 | this._connections.set(id, eventNames); 191 | return id; 192 | } 193 | 194 | disconnect(id) { 195 | const eventNames = this._connections.get(id); 196 | if (!eventNames) 197 | return; 198 | 199 | this._connections.delete(id); 200 | eventNames.forEach(name => { 201 | const handlerList = this._handlers.get(name); 202 | if (handlerList) { 203 | for (let i = 0, iMax = handlerList.length; i < iMax; i++) { 204 | if (handlerList[i].id === id) { 205 | handlerList.splice(i, 1); 206 | break; 207 | } 208 | } 209 | } 210 | }); 211 | } 212 | 213 | _emitChangedEvents(propertyNames) { 214 | const handlers = new Set(); 215 | propertyNames.forEach(name => { 216 | const handlerList = this._handlers.get(`${name}-changed`); 217 | if (handlerList) { 218 | for (let i = 0, iMax = handlerList.length; i < iMax; i++) 219 | handlers.add(handlerList[i]); 220 | } 221 | }); 222 | Array.from(handlers).sort((x, y) => x.id - y.id).forEach(handler => handler.callback(this, this)); 223 | } 224 | }; 225 | 226 | for (const [name, defaultValue] of Object.entries(launcherEntryDefaults)) { 227 | const jsName = name.replaceAll('-', '_'); 228 | LauncherEntry.prototype[jsName] = defaultValue; 229 | if (jsName !== name) { 230 | Object.defineProperty(LauncherEntry.prototype, name, { 231 | get() { 232 | return this[jsName]; 233 | }, 234 | set(value) { 235 | this[jsName] = value; 236 | }, 237 | }); 238 | } 239 | } 240 | 241 | const PropertySourceStack = class DashToDockPropertySourceStack { 242 | constructor(target, bottom) { 243 | this.target = target; 244 | this._bottom = bottom; 245 | this._stack = []; 246 | } 247 | 248 | isTop(source) { 249 | return this._stack.length > 0 && this._stack[this._stack.length - 1] === source; 250 | } 251 | 252 | update(source) { 253 | if (!this.isTop(source)) { 254 | this.remove(source); 255 | this._stack.push(source); 256 | } 257 | return this._assignFrom(source); 258 | } 259 | 260 | remove(source) { 261 | const stack = this._stack; 262 | const top = stack[stack.length - 1]; 263 | if (top === source) { 264 | stack.length--; 265 | return this._assignFrom(stack.length > 0 ? stack[stack.length - 1] : this._bottom); 266 | } 267 | for (let i = 0, iMax = stack.length; i < iMax; i++) { 268 | if (stack[i] === source) { 269 | stack.splice(i, 1); 270 | break; 271 | } 272 | } 273 | 274 | return null; 275 | } 276 | 277 | _assignFrom(source) { 278 | const changedProperties = []; 279 | for (const name in source) { 280 | if (this.target[name] !== source[name]) { 281 | this.target[name] = source[name]; 282 | changedProperties.push(name); 283 | } 284 | } 285 | return changedProperties; 286 | } 287 | }; 288 | -------------------------------------------------------------------------------- /lint/eslintrc-gjs.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # SPDX-License-Identifier: MIT OR LGPL-2.0-or-later 3 | # SPDX-FileCopyrightText: 2018 Claudio André 4 | env: 5 | es2021: true 6 | extends: 'eslint:recommended' 7 | rules: 8 | array-bracket-newline: 9 | - error 10 | - consistent 11 | array-bracket-spacing: 12 | - error 13 | - never 14 | array-callback-return: error 15 | arrow-parens: 16 | - error 17 | - as-needed 18 | arrow-spacing: error 19 | block-scoped-var: error 20 | block-spacing: error 21 | brace-style: error 22 | # Waiting for this to have matured a bit in eslint 23 | # camelcase: 24 | # - error 25 | # - properties: never 26 | # allow: [^vfunc_, ^on_, _instance_init] 27 | comma-dangle: 28 | - error 29 | - arrays: always-multiline 30 | objects: always-multiline 31 | functions: never 32 | comma-spacing: 33 | - error 34 | - before: false 35 | after: true 36 | comma-style: 37 | - error 38 | - last 39 | computed-property-spacing: error 40 | curly: 41 | - error 42 | - multi-or-nest 43 | - consistent 44 | dot-location: 45 | - error 46 | - property 47 | eol-last: error 48 | eqeqeq: error 49 | func-call-spacing: error 50 | func-name-matching: error 51 | func-style: 52 | - error 53 | - declaration 54 | - allowArrowFunctions: true 55 | indent: 56 | - error 57 | - 4 58 | - ignoredNodes: 59 | # Allow not indenting the body of GObject.registerClass, since in the 60 | # future it's intended to be a decorator 61 | - 'CallExpression[callee.object.name=GObject][callee.property.name=registerClass] > ClassExpression:first-child' 62 | # Allow dedenting chained member expressions 63 | MemberExpression: 'off' 64 | key-spacing: 65 | - error 66 | - beforeColon: false 67 | afterColon: true 68 | keyword-spacing: 69 | - error 70 | - before: true 71 | after: true 72 | linebreak-style: 73 | - error 74 | - unix 75 | lines-between-class-members: 76 | - error 77 | - always 78 | - exceptAfterSingleLine: true 79 | max-nested-callbacks: error 80 | max-statements-per-line: error 81 | new-parens: error 82 | no-array-constructor: error 83 | no-await-in-loop: error 84 | no-caller: error 85 | no-constant-condition: 86 | - error 87 | - checkLoops: false 88 | no-div-regex: error 89 | no-empty: 90 | - error 91 | - allowEmptyCatch: true 92 | no-extra-bind: error 93 | no-extra-parens: 94 | - error 95 | - all 96 | - conditionalAssign: false 97 | nestedBinaryExpressions: false 98 | returnAssign: false 99 | no-implicit-coercion: 100 | - error 101 | - allow: 102 | - '!!' 103 | no-invalid-this: error 104 | no-iterator: error 105 | no-label-var: error 106 | no-lonely-if: error 107 | no-loop-func: error 108 | no-nested-ternary: error 109 | no-new-object: error 110 | no-new-wrappers: error 111 | no-octal-escape: error 112 | no-proto: error 113 | no-prototype-builtins: 'off' 114 | no-restricted-globals: [error, window] 115 | no-restricted-properties: 116 | - error 117 | - object: Lang 118 | property: copyProperties 119 | message: Use Object.assign() 120 | - object: Lang 121 | property: bind 122 | message: Use arrow notation or Function.prototype.bind() 123 | - object: Lang 124 | property: Class 125 | message: Use ES6 classes 126 | no-restricted-syntax: 127 | - error 128 | - selector: >- 129 | MethodDefinition[key.name="_init"] > 130 | FunctionExpression[params.length=1] > 131 | BlockStatement[body.length=1] 132 | CallExpression[arguments.length=1][callee.object.type="Super"][callee.property.name="_init"] > 133 | Identifier:first-child 134 | message: _init() that only calls super._init() is unnecessary 135 | - selector: >- 136 | MethodDefinition[key.name="_init"] > 137 | FunctionExpression[params.length=0] > 138 | BlockStatement[body.length=1] 139 | CallExpression[arguments.length=0][callee.object.type="Super"][callee.property.name="_init"] 140 | message: _init() that only calls super._init() is unnecessary 141 | - selector: BinaryExpression[operator="instanceof"][right.name="Array"] 142 | message: Use Array.isArray() 143 | no-return-assign: error 144 | no-return-await: error 145 | no-self-compare: error 146 | no-shadow: error 147 | no-shadow-restricted-names: error 148 | no-spaced-func: error 149 | no-tabs: error 150 | no-template-curly-in-string: error 151 | no-throw-literal: error 152 | no-trailing-spaces: error 153 | no-undef-init: error 154 | no-unneeded-ternary: error 155 | no-unused-expressions: error 156 | no-unused-vars: 157 | - error 158 | # Vars use a suffix _ instead of a prefix because of file-scope private vars 159 | - varsIgnorePattern: (^unused|_$) 160 | argsIgnorePattern: ^(unused|_) 161 | no-useless-call: error 162 | no-useless-computed-key: error 163 | no-useless-concat: error 164 | no-useless-constructor: error 165 | no-useless-rename: error 166 | no-useless-return: error 167 | no-whitespace-before-property: error 168 | no-with: error 169 | nonblock-statement-body-position: 170 | - error 171 | - below 172 | object-curly-newline: 173 | - error 174 | - consistent: true 175 | multiline: true 176 | object-curly-spacing: error 177 | object-shorthand: error 178 | operator-assignment: error 179 | operator-linebreak: error 180 | padded-blocks: 181 | - error 182 | - never 183 | # These may be a bit controversial, we can try them out and enable them later 184 | # prefer-const: error 185 | # prefer-destructuring: error 186 | prefer-numeric-literals: error 187 | prefer-promise-reject-errors: error 188 | prefer-rest-params: error 189 | prefer-spread: error 190 | prefer-template: error 191 | quotes: 192 | - error 193 | - single 194 | - avoidEscape: true 195 | require-await: error 196 | rest-spread-spacing: error 197 | semi: 198 | - error 199 | - always 200 | semi-spacing: 201 | - error 202 | - before: false 203 | after: true 204 | semi-style: error 205 | space-before-blocks: error 206 | space-before-function-paren: 207 | - error 208 | - named: never 209 | # for `function ()` and `async () =>`, preserve space around keywords 210 | anonymous: always 211 | asyncArrow: always 212 | space-in-parens: error 213 | space-infix-ops: 214 | - error 215 | - int32Hint: false 216 | space-unary-ops: error 217 | spaced-comment: error 218 | switch-colon-spacing: error 219 | symbol-description: error 220 | template-curly-spacing: error 221 | template-tag-spacing: error 222 | unicode-bom: error 223 | wrap-iife: 224 | - error 225 | - inside 226 | yield-star-spacing: error 227 | yoda: error 228 | globals: 229 | ARGV: readonly 230 | Debugger: readonly 231 | GIRepositoryGType: readonly 232 | globalThis: readonly 233 | imports: readonly 234 | Intl: readonly 235 | log: readonly 236 | logError: readonly 237 | print: readonly 238 | printerr: readonly 239 | window: readonly 240 | TextEncoder: readonly 241 | TextDecoder: readonly 242 | console: readonly 243 | setTimeout: readonly 244 | setInterval: readonly 245 | clearTimeout: readonly 246 | clearInterval: readonly 247 | parserOptions: 248 | ecmaVersion: 2022 249 | -------------------------------------------------------------------------------- /lint/eslintrc-shell.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | camelcase: 3 | - error 4 | - properties: never 5 | allow: [^vfunc_, ^on_] 6 | consistent-return: error 7 | eqeqeq: 8 | - error 9 | - smart 10 | key-spacing: 11 | - error 12 | - mode: minimum 13 | beforeColon: false 14 | afterColon: true 15 | prefer-arrow-callback: error 16 | 17 | overrides: 18 | - files: 19 | - js/** 20 | - tests/shell/** 21 | excludedFiles: 22 | - js/portalHelper/* 23 | - js/extensions/* 24 | globals: 25 | global: readonly 26 | _: readonly 27 | C_: readonly 28 | N_: readonly 29 | ngettext: readonly 30 | - files: subprojects/extensions-app/js/** 31 | globals: 32 | _: readonly 33 | C_: readonly 34 | N_: readonly 35 | -------------------------------------------------------------------------------- /locationsWorker.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env gjs 2 | 3 | import GLib from 'gi://GLib'; 4 | import Gio from 'gi://Gio'; 5 | 6 | const GJS_SUPPORTS_FILE_IFACE_PROMISES = imports.system.version >= 17101; 7 | 8 | if (GJS_SUPPORTS_FILE_IFACE_PROMISES) 9 | Gio._promisify(Gio.File.prototype, 'query_default_handler_async'); 10 | 11 | function getHandlerAppAsync(location, cancellable) { 12 | if (!location) 13 | return null; 14 | 15 | if (!GJS_SUPPORTS_FILE_IFACE_PROMISES) { 16 | Gio._promisify(location.constructor.prototype, 17 | 'query_default_handler_async', 18 | 'query_default_handler_finish'); 19 | } 20 | 21 | return location.query_default_handler_async( 22 | GLib.PRIORITY_DEFAULT, cancellable); 23 | } 24 | 25 | async function mainAsync(argv) { 26 | if (argv.length < 1) { 27 | const currentBinary = GLib.path_get_basename(new Error().fileName); 28 | printerr(`Usage: ${currentBinary} uri [ --timeout ]`); 29 | return 1; 30 | } 31 | 32 | const [action, uri] = argv; 33 | let timeout = 200; 34 | 35 | if (action !== 'handler') 36 | throw new TypeError(`Unexpected action ${action}`); 37 | 38 | for (let i = 1; i < argv.length; ++i) { 39 | if (argv[i] === '--timeout' && i < argv.length - 1) 40 | timeout = argv[++i]; 41 | } 42 | 43 | const location = Gio.File.new_for_uri(uri); 44 | const cancellable = new Gio.Cancellable(); 45 | 46 | // GVfs providers could hang when querying the file information, so we 47 | // workaround this by using the async API in a sync way, but we need to 48 | // use a timeout to avoid this to hang forever, better than hang the 49 | // shell. 50 | let launchMaxWaitId; 51 | 52 | try { 53 | const handler = await Promise.race([ 54 | getHandlerAppAsync(location, cancellable), 55 | new Promise((_resolve, reject) => { 56 | launchMaxWaitId = GLib.timeout_add( 57 | GLib.PRIORITY_DEFAULT, timeout, () => { 58 | launchMaxWaitId = 0; 59 | cancellable.cancel(); 60 | reject(new GLib.Error(Gio.IOErrorEnum, 61 | Gio.IOErrorEnum.TIMED_OUT, 62 | `Searching for ${location.get_uri()} ` + 63 | 'handler took too long')); 64 | return GLib.SOURCE_REMOVE; 65 | }); 66 | }), 67 | ]); 68 | 69 | print(handler.get_id()); 70 | } catch (e) { 71 | printerr(e.message); 72 | logError(e); 73 | return e.code ? e.code : GLib.MAXUINT8; 74 | } finally { 75 | if (launchMaxWaitId) 76 | GLib.source_remove(launchMaxWaitId); 77 | } 78 | 79 | return 0; 80 | } 81 | 82 | function main(args) { 83 | let ret; 84 | const loop = new GLib.MainLoop(null, false); 85 | mainAsync(args).then(r => (ret = r)).catch(logError).finally(() => loop.quit()); 86 | loop.run(); 87 | 88 | return ret; 89 | } 90 | 91 | imports.system.exit(main(ARGV)); 92 | -------------------------------------------------------------------------------- /media/glossy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 20 | 22 | 25 | 29 | 33 | 34 | 44 | 47 | 51 | 55 | 56 | 58 | 62 | 66 | 67 | 78 | 79 | 102 | 104 | 105 | 107 | image/svg+xml 108 | 110 | 111 | 112 | 113 | 114 | 119 | 131 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /media/highlight_stacked_bg.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 29 | 31 | 56 | 60 | 67 | 74 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /media/highlight_stacked_bg_h.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 29 | 31 | 56 | 60 | 67 | 74 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /media/screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/micheleg/dash-to-dock/816d585207c2964225b33ab944766b0b62e65de4/media/screenshot.jpg -------------------------------------------------------------------------------- /metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "shell-version": [ 3 | "45", 4 | "46", 5 | "47", 6 | "48" 7 | ], 8 | "uuid": "dash-to-dock@micxgx.gmail.com", 9 | "name": "Dash to Dock", 10 | "description": "A dock for the Gnome Shell. This extension moves the dash out of the overview transforming it in a dock for an easier launching of applications and a faster switching between windows and desktops. Side and bottom placement options are available.", 11 | "original-author": "micxgx@gmail.com", 12 | "url": "https://micheleg.github.io/dash-to-dock/", 13 | "gettext-domain": "dashtodock", 14 | "version": 100 15 | } 16 | -------------------------------------------------------------------------------- /notificationsMonitor.js: -------------------------------------------------------------------------------- 1 | // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- 2 | 3 | import {Gio} from './dependencies/gi.js'; 4 | import {Main} from './dependencies/shell/ui.js'; 5 | 6 | import { 7 | Docking, 8 | Utils, 9 | } from './imports.js'; 10 | 11 | const {signals: Signals} = imports; 12 | 13 | const Labels = Object.freeze({ 14 | SOURCES: Symbol('sources'), 15 | NOTIFICATIONS: Symbol('notifications'), 16 | }); 17 | export class NotificationsMonitor { 18 | constructor() { 19 | this._settings = new Gio.Settings({ 20 | schema_id: 'org.gnome.desktop.notifications', 21 | }); 22 | 23 | this._appNotifications = Object.create(null); 24 | this._signalsHandler = new Utils.GlobalSignalsHandler(this); 25 | 26 | const getIsEnabled = () => !this.dndMode && 27 | Docking.DockManager.settings.showIconsNotificationsCounter; 28 | 29 | this._isEnabled = getIsEnabled(); 30 | const checkIsEnabled = () => { 31 | const isEnabled = getIsEnabled(); 32 | if (isEnabled !== this._isEnabled) { 33 | this._isEnabled = isEnabled; 34 | this.emit('state-changed'); 35 | 36 | this._updateState(); 37 | } 38 | }; 39 | 40 | this._dndMode = !this._settings.get_boolean('show-banners'); 41 | this._signalsHandler.add(this._settings, 'changed::show-banners', () => { 42 | this._dndMode = !this._settings.get_boolean('show-banners'); 43 | checkIsEnabled(); 44 | }); 45 | this._signalsHandler.add(Docking.DockManager.settings, 46 | 'changed::show-icons-notifications-counter', checkIsEnabled); 47 | 48 | this._updateState(); 49 | } 50 | 51 | destroy() { 52 | this.emit('destroy'); 53 | this._signalsHandler?.destroy(); 54 | this._signalsHandler = null; 55 | this._appNotifications = null; 56 | this._settings = null; 57 | } 58 | 59 | get enabled() { 60 | return this._isEnabled; 61 | } 62 | 63 | get dndMode() { 64 | return this._dndMode; 65 | } 66 | 67 | getAppNotificationsCount(appId) { 68 | return this._appNotifications[appId] ?? 0; 69 | } 70 | 71 | _updateState() { 72 | if (this.enabled) { 73 | this._signalsHandler.addWithLabel(Labels.SOURCES, Main.messageTray, 74 | 'source-added', () => this._checkNotifications()); 75 | this._signalsHandler.addWithLabel(Labels.SOURCES, Main.messageTray, 76 | 'source-removed', () => this._checkNotifications()); 77 | } else { 78 | this._signalsHandler.removeWithLabel(Labels.SOURCES); 79 | } 80 | 81 | this._checkNotifications(); 82 | } 83 | 84 | _checkNotifications() { 85 | this._appNotifications = Object.create(null); 86 | this._signalsHandler.removeWithLabel(Labels.NOTIFICATIONS); 87 | 88 | if (this.enabled) { 89 | Main.messageTray.getSources().forEach(source => { 90 | this._signalsHandler.addWithLabel(Labels.NOTIFICATIONS, source, 91 | 'notification-added', () => this._checkNotifications()); 92 | 93 | source.notifications.forEach(notification => { 94 | const app = notification.source?.app ?? notification.source?._app; 95 | const appId = app?.id ?? app?._appId; 96 | 97 | if (appId) { 98 | if (notification.resident) { 99 | if (notification.acknowledged) 100 | return; 101 | 102 | this._signalsHandler.addWithLabel(Labels.NOTIFICATIONS, 103 | notification, 'notify::acknowledged', 104 | () => this._checkNotifications()); 105 | } 106 | 107 | this._signalsHandler.addWithLabel(Labels.NOTIFICATIONS, 108 | notification, 'destroy', () => this._checkNotifications()); 109 | 110 | this._appNotifications[appId] = 111 | (this._appNotifications[appId] ?? 0) + 1; 112 | } 113 | }); 114 | }); 115 | } 116 | 117 | this.emit('changed'); 118 | } 119 | } 120 | 121 | Signals.addSignalMethods(NotificationsMonitor.prototype); 122 | -------------------------------------------------------------------------------- /po/el.po: -------------------------------------------------------------------------------- 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 | # Δημήτριος-Ρωμανός Ησαΐας , 2017. 6 | # Vangelis Skarmoutsos , 2017. 7 | # 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: Dash to Dock\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2017-06-04 12:35+0100\n" 13 | "PO-Revision-Date: 2017-09-29 21:48+0300\n" 14 | "Last-Translator: Vangelis Skarmoutsos \n" 15 | "Language-Team:\n" 16 | "Language: el\n" 17 | "MIME-Version: 1.0\n" 18 | "Content-Type: text/plain; charset=UTF-8\n" 19 | "Content-Transfer-Encoding: 8bit\n" 20 | "X-Generator: Poedit 2.0.3\n" 21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 22 | 23 | #: prefs.js:113 24 | msgid "Primary monitor" 25 | msgstr "Κύρια οθόνη" 26 | 27 | #: prefs.js:122 prefs.js:129 28 | msgid "Secondary monitor " 29 | msgstr "Δευτερεύουσα οθόνη " 30 | 31 | #: prefs.js:154 Settings.ui.h:29 32 | msgid "Right" 33 | msgstr "Δεξιά" 34 | 35 | #: prefs.js:155 Settings.ui.h:26 36 | msgid "Left" 37 | msgstr "Αριστερά" 38 | 39 | #: prefs.js:205 40 | msgid "Intelligent autohide customization" 41 | msgstr "Προσαρμογή έξυπνης απόκρυψης" 42 | 43 | #: prefs.js:212 prefs.js:393 prefs.js:450 44 | msgid "Reset to defaults" 45 | msgstr "Επαναφορά στις προεπιλογές" 46 | 47 | #: prefs.js:386 48 | msgid "Show dock and application numbers" 49 | msgstr "Προβολή της μπάρας και της αρίθμησης εφαρμογών" 50 | 51 | #: prefs.js:443 52 | msgid "Customize middle-click behavior" 53 | msgstr "Προσαρμογή συμπεριφοράς μεσαίου κλικ" 54 | 55 | #: prefs.js:514 56 | msgid "Customize running indicators" 57 | msgstr "Προσαρμογή δεικτών τρεχόντων εφαρμογών" 58 | 59 | #: appIcons.js:804 60 | msgid "All Windows" 61 | msgstr "Όλα τα παράθυρα" 62 | 63 | #: Settings.ui.h:1 64 | msgid "Customize indicator style" 65 | msgstr "Προσαρμογή του στυλ του δείκτη" 66 | 67 | #: Settings.ui.h:2 68 | msgid "Color" 69 | msgstr "Χρώμα" 70 | 71 | #: Settings.ui.h:3 72 | msgid "Border color" 73 | msgstr "Χρώμα περιγράμματος" 74 | 75 | #: Settings.ui.h:4 76 | msgid "Border width" 77 | msgstr "Πλάτος περιγράμματος" 78 | 79 | #: Settings.ui.h:5 80 | msgid "Number overlay" 81 | msgstr "Επίστρωση αριθμού" 82 | 83 | #: Settings.ui.h:6 84 | msgid "" 85 | "Temporarily show the application numbers over the icons, corresponding to " 86 | "the shortcut." 87 | msgstr "" 88 | "Προσωρινή εμφάνιση αριθμών εφαρμογής πάνω από τα εικονίδια, που αντιστοιχούν " 89 | "στη συντόμευση πληκτρολογίου." 90 | 91 | #: Settings.ui.h:7 92 | msgid "Show the dock if it is hidden" 93 | msgstr "Προβολή της μπάρας αν είναι κρυμμένη" 94 | 95 | #: Settings.ui.h:8 96 | msgid "" 97 | "If using autohide, the dock will appear for a short time when triggering the " 98 | "shortcut." 99 | msgstr "" 100 | "Αν χρησιμοποιείται η αυτόματη απόκρυψη, η μπάρα θα εμφανίζεται για λίγο " 101 | "χρόνο όταν πατιέται η συντόμευση." 102 | 103 | #: Settings.ui.h:9 104 | msgid "Shortcut for the options above" 105 | msgstr "Συντόμευση για τις παραπάνω επιλογές" 106 | 107 | #: Settings.ui.h:10 108 | msgid "Syntax: , , , " 109 | msgstr "Σύνταξη: , , , " 110 | 111 | #: Settings.ui.h:11 112 | msgid "Hide timeout (s)" 113 | msgstr "Καθυστέρηση απόκρυψης" 114 | 115 | #: Settings.ui.h:12 116 | msgid "" 117 | "When set to minimize, double clicking minimizes all the windows of the " 118 | "application." 119 | msgstr "" 120 | "Όταν είναι ρυθμισμένο στην ελαχιστοποίηση, το διπλό κλικ ελαχιστοποιεί όλα " 121 | "τα παράθυρα της εφαρμογής." 122 | 123 | #: Settings.ui.h:13 124 | msgid "Shift+Click action" 125 | msgstr "Λειτουργία του Shift+Click" 126 | 127 | #: Settings.ui.h:14 128 | msgid "Raise window" 129 | msgstr "Ανύψωση παραθύρου" 130 | 131 | #: Settings.ui.h:15 132 | msgid "Minimize window" 133 | msgstr "Ελαχιστοποίηση παραθύρου" 134 | 135 | #: Settings.ui.h:16 136 | msgid "Launch new instance" 137 | msgstr "Εκκίνηση νέου παραθύρου" 138 | 139 | #: Settings.ui.h:17 140 | msgid "Cycle through windows" 141 | msgstr "Περιήγηση στα ανοικτά παράθυρα" 142 | 143 | #: Settings.ui.h:18 144 | msgid "Quit" 145 | msgstr "Έξοδος" 146 | 147 | #: Settings.ui.h:19 148 | msgid "Behavior for Middle-Click." 149 | msgstr "Συμπεριφορά μεσαίου κλικ." 150 | 151 | #: Settings.ui.h:20 152 | msgid "Middle-Click action" 153 | msgstr "Λειτουργία του μεσαίου κλικ" 154 | 155 | #: Settings.ui.h:21 156 | msgid "Behavior for Shift+Middle-Click." 157 | msgstr "Συμπεριφορά Shift+Μεσαίο κλικ." 158 | 159 | #: Settings.ui.h:22 160 | msgid "Shift+Middle-Click action" 161 | msgstr "Λειτουργία του Shift+Μεσαίο κλικ" 162 | 163 | #: Settings.ui.h:23 164 | msgid "Show the dock on" 165 | msgstr "Εμφάνιση της μπάρας στην" 166 | 167 | #: Settings.ui.h:24 168 | msgid "Show on all monitors" 169 | msgstr "Εμφάνιση σε όλες τις οθόνες" 170 | 171 | #: Settings.ui.h:25 172 | msgid "Position on screen" 173 | msgstr "Θέση στην οθόνη" 174 | 175 | #: Settings.ui.h:27 176 | msgid "Bottom" 177 | msgstr "Κάτω" 178 | 179 | #: Settings.ui.h:28 180 | msgid "Top" 181 | msgstr "Πάνω" 182 | 183 | #: Settings.ui.h:30 184 | msgid "" 185 | "Hide the dock when it obstructs a window of the the current application. " 186 | "More refined settings are available." 187 | msgstr "" 188 | "Απόκρυψη της μπάρας όταν εμποδίζει ένα παράθυρο της τρέχουσας εφαρμογής. Πιο " 189 | "εξειδικευμένες επιλογές είναι επίσης διαθέσιμες." 190 | 191 | #: Settings.ui.h:31 192 | msgid "Intelligent autohide" 193 | msgstr "Έξυπνη απόκρυψη" 194 | 195 | #: Settings.ui.h:32 196 | msgid "Dock size limit" 197 | msgstr "Περιορισμός μεγέθους μπάρας" 198 | 199 | #: Settings.ui.h:33 200 | msgid "Panel mode: extend to the screen edge" 201 | msgstr "Λειτουργιά πάνελ: επέκταση της μπάρας ως τις άκρες της οθόνης" 202 | 203 | #: Settings.ui.h:34 204 | msgid "Icon size limit" 205 | msgstr "Περιορισμός μεγέθους εικονιδίων" 206 | 207 | #: Settings.ui.h:35 208 | msgid "Fixed icon size: scroll to reveal other icons" 209 | msgstr "" 210 | "Σταθερό μέγεθος εικονιδίων: κύλιση για την εμφάνιση περαιτέρω εικονιδίων" 211 | 212 | #: Settings.ui.h:36 213 | msgid "Position and size" 214 | msgstr "Θέση και μέγεθος" 215 | 216 | #: Settings.ui.h:37 217 | msgid "Show favorite applications" 218 | msgstr "Εμφάνιση αγαπημένων εφαρμογών" 219 | 220 | #: Settings.ui.h:38 221 | msgid "Show running applications" 222 | msgstr "Εμφάνιση εκτελούμενων εφαρμογών" 223 | 224 | #: Settings.ui.h:39 225 | msgid "Isolate workspaces" 226 | msgstr "Απομόνωση χώρων εργασίας" 227 | 228 | #: Settings.ui.h:40 229 | msgid "Show open windows previews" 230 | msgstr "Εμφάνιση προεπισκόπησης ανοικτών παραθύρων" 231 | 232 | #: Settings.ui.h:41 233 | msgid "" 234 | "If disabled, these settings are accessible from gnome-tweak-tool or the " 235 | "extension website." 236 | msgstr "" 237 | "Αν είναι απενεργοποιημένο, αυτές οι ρυθμίσεις είναι προσβάσιμες από το " 238 | "εργαλείο μικρορυθμίσεων του GNOME ή τον ιστοτόπο επεκτάσεων." 239 | 240 | #: Settings.ui.h:42 241 | msgid "Show Applications icon" 242 | msgstr "Εμφάνιση εικονιδίου Εφαρμογές" 243 | 244 | #: Settings.ui.h:43 245 | msgid "Move the applications button at the beginning of the dock" 246 | msgstr "Μετακίνηση του πλήκτρου εφαρμογών στην αρχή της μπάρας" 247 | 248 | #: Settings.ui.h:44 249 | msgid "Animate Show Applications" 250 | msgstr "Ενεργοποίηση γραφικών κατά την Εμφάνιση Εφαρμογών" 251 | 252 | #: Settings.ui.h:45 253 | msgid "Launchers" 254 | msgstr "Εκκινητές" 255 | 256 | #: Settings.ui.h:46 257 | msgid "" 258 | "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " 259 | "together with Shift and Ctrl." 260 | msgstr "" 261 | "Ενεργοποίηση του Super+(0-9) ως συντομεύσεις για την ενεργοποίηση εφαρμογών. " 262 | "Μπορεί επίσης να χρησιμοποιηθεί με το Shift και το Ctrl." 263 | 264 | #: Settings.ui.h:47 265 | msgid "Use keyboard shortcuts to activate apps" 266 | msgstr "Χρήση συντομεύσεων πληκτρολογίου για την ενεργοποίηση εφαρμογών" 267 | 268 | #: Settings.ui.h:48 269 | msgid "Behaviour when clicking on the icon of a running application." 270 | msgstr "Συμπεριφορά κατά το κλικ σε εικονίδιο τρέχουσας εφαρμογής." 271 | 272 | #: Settings.ui.h:49 273 | msgid "Click action" 274 | msgstr "Συμπεριφορά κλικ" 275 | 276 | #: Settings.ui.h:50 277 | msgid "Minimize" 278 | msgstr "Ελαχιστοποίηση" 279 | 280 | #: Settings.ui.h:51 281 | msgid "Minimize or overview" 282 | msgstr "Ελαχιστοποίηση ή επισκόπηση" 283 | 284 | #: Settings.ui.h:52 285 | msgid "Behaviour when scrolling on the icon of an application." 286 | msgstr "Συμπεριφορά κατά την κύλιση σε εικονίδιο τρέχουσας εφαρμογής." 287 | 288 | #: Settings.ui.h:53 289 | msgid "Scroll action" 290 | msgstr "Συμπεριφορά κύλισης" 291 | 292 | #: Settings.ui.h:54 293 | msgid "Do nothing" 294 | msgstr "Καμία δράση" 295 | 296 | #: Settings.ui.h:55 297 | msgid "Switch workspace" 298 | msgstr "Αλλαγή χώρου εργασίας" 299 | 300 | #: Settings.ui.h:56 301 | msgid "Behavior" 302 | msgstr "Συμπεριφορά" 303 | 304 | #: Settings.ui.h:57 305 | msgid "" 306 | "Few customizations meant to integrate the dock with the default GNOME theme. " 307 | "Alternatively, specific options can be enabled below." 308 | msgstr "" 309 | "Μερικές προσαρμογές στοχεύουν στο να ενοποιήσουν την μπάρα με το " 310 | "προκαθορισμένο θέμα του GNOME. Εναλλακτικά, ειδικές επιλογές μπορούν να " 311 | "ενεργοποιηθούν παρακάτω." 312 | 313 | #: Settings.ui.h:58 314 | msgid "Use built-in theme" 315 | msgstr "Χρήση ενσωματωμένου θέματος" 316 | 317 | #: Settings.ui.h:59 318 | msgid "Save space reducing padding and border radius." 319 | msgstr "Εξοικονόμηση χώρου μειώνοντας τα κενά και τα περιθώρια." 320 | 321 | #: Settings.ui.h:60 322 | msgid "Shrink the dash" 323 | msgstr "Σμίκρυνση της μπάρας" 324 | 325 | #: Settings.ui.h:61 326 | msgid "Show a dot for each windows of the application." 327 | msgstr "Εμφανίζει μία τελεία για κάθε παράθυρο της εφαρμογής." 328 | 329 | #: Settings.ui.h:62 330 | msgid "Show windows counter indicators" 331 | msgstr "Εμφάνιση μετρητή παραθύρων" 332 | 333 | #: Settings.ui.h:63 334 | msgid "Set the background color for the dash." 335 | msgstr "Ορισμός χρώματος φόντου της μπάρας." 336 | 337 | #: Settings.ui.h:64 338 | msgid "Customize the dash color" 339 | msgstr "Προσαρμογή του χρώματος της μπάρας" 340 | 341 | #: Settings.ui.h:65 342 | msgid "Tune the dash background opacity." 343 | msgstr "Αλλαγή της αδιαφάνειας του φόντου της μπάρας." 344 | 345 | #: Settings.ui.h:66 346 | msgid "Customize opacity" 347 | msgstr "Προσαρμογή αδιαφάνειας" 348 | 349 | #: Settings.ui.h:67 350 | msgid "Opacity" 351 | msgstr "Αδιαφάνεια" 352 | 353 | #: Settings.ui.h:68 354 | msgid "Force straight corner\n" 355 | msgstr "Εξαναγκασμός ευθείας γωνίας\n" 356 | 357 | #: Settings.ui.h:70 358 | msgid "Appearance" 359 | msgstr "Εμφάνιση" 360 | 361 | #: Settings.ui.h:71 362 | msgid "version: " 363 | msgstr "έκδοση: " 364 | 365 | #: Settings.ui.h:72 366 | msgid "Moves the dash out of the overview transforming it in a dock" 367 | msgstr "" 368 | "Μετακινεί το ταμπλό και εκτός της προεπισκόπησης μετατρέποντάς το σε μπάρα " 369 | "εφαρμογών" 370 | 371 | #: Settings.ui.h:73 372 | msgid "Created by" 373 | msgstr "Δημιουργήθηκε από" 374 | 375 | #: Settings.ui.h:74 376 | msgid "Webpage" 377 | msgstr "Ιστοσελίδα" 378 | 379 | #: Settings.ui.h:75 380 | msgid "" 381 | "This program comes with ABSOLUTELY NO WARRANTY.\n" 382 | "See the GNU General Public License, version 2 or later for details." 384 | msgstr "" 385 | "Αυτό πρόγραμμα παρέχεται χωρίς ΑΠΟΛΥΤΩΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ.\n" 386 | "Για λεπτομέρειες δείτε την Γενική δημόσια άδεια GNU, έκδοση 2 ή νεότερη. " 389 | 390 | #: Settings.ui.h:77 391 | msgid "About" 392 | msgstr "Περί" 393 | 394 | #: Settings.ui.h:78 395 | msgid "Show the dock by mouse hover on the screen edge." 396 | msgstr "Εμφάνιση της μπάρας όταν το ποντίκι πηγαίνει στην άκρη της οθόνης." 397 | 398 | #: Settings.ui.h:79 399 | msgid "Autohide" 400 | msgstr "Αυτόματη απόκρυψη" 401 | 402 | #: Settings.ui.h:80 403 | msgid "Push to show: require pressure to show the dock" 404 | msgstr "Πίεση για εμφάνιση: απαιτείται πίεση για την εμφάνιση της μπάρας" 405 | 406 | #: Settings.ui.h:81 407 | msgid "Enable in fullscreen mode" 408 | msgstr "Ενεργοποίηση σε κατάσταση πλήρους οθόνης" 409 | 410 | #: Settings.ui.h:82 411 | msgid "Show the dock when it doesn't obstruct application windows." 412 | msgstr "Εμφάνιση της μπάρας όταν δεν εμποδίζει τα παράθυρά των εφαρμογών." 413 | 414 | #: Settings.ui.h:83 415 | msgid "Dodge windows" 416 | msgstr "Αποφυγή παραθύρων" 417 | 418 | #: Settings.ui.h:84 419 | msgid "All windows" 420 | msgstr "Όλα τα παράθυρα" 421 | 422 | #: Settings.ui.h:85 423 | msgid "Only focused application's windows" 424 | msgstr "Μόνο τα παράθυρα της εστιασμένης εφαρμογής" 425 | 426 | #: Settings.ui.h:86 427 | msgid "Only maximized windows" 428 | msgstr "Μόνο μεγιστοποιημένα παράθυρα" 429 | 430 | #: Settings.ui.h:87 431 | msgid "Animation duration (s)" 432 | msgstr "Διάρκεια κίνησης γραφικών (s)" 433 | 434 | #: Settings.ui.h:88 435 | msgid "0.000" 436 | msgstr "0.000" 437 | 438 | #: Settings.ui.h:89 439 | msgid "Show timeout (s)" 440 | msgstr "Χρονικό όριο εμφάνισης" 441 | 442 | #: Settings.ui.h:90 443 | msgid "Pressure threshold" 444 | msgstr "Ελάχιστη πίεση" 445 | -------------------------------------------------------------------------------- /po/gl.po: -------------------------------------------------------------------------------- 1 | # Dash to Dock galician translation. 2 | # This file is distributed under the same license as the Dash to Dock package. 3 | # Xosé M. Lamas , 2018. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: \n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2018-03-30 11:27-0400\n" 10 | "PO-Revision-Date: 2018-03-30 16:42-0500\n" 11 | "Last-Translator: Xosé M. Lamas \n" 12 | "Language-Team: \n" 13 | "Language: gl\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "X-Generator: Poedit 2.0.3\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | #: prefs.js:113 21 | msgid "Primary monitor" 22 | msgstr "Monitor principal" 23 | 24 | #: prefs.js:122 prefs.js:129 25 | msgid "Secondary monitor " 26 | msgstr "Monitor secundario" 27 | 28 | #: prefs.js:154 Settings.ui.h:29 29 | msgid "Right" 30 | msgstr "Dereita" 31 | 32 | #: prefs.js:155 Settings.ui.h:26 33 | msgid "Left" 34 | msgstr "Esquerda" 35 | 36 | #: prefs.js:205 37 | msgid "Intelligent autohide customization" 38 | msgstr "Personalización de agochamento intelixente" 39 | 40 | #: prefs.js:212 prefs.js:393 prefs.js:450 41 | msgid "Reset to defaults" 42 | msgstr "Restablecer aos valores por omisión" 43 | 44 | #: prefs.js:386 45 | msgid "Show dock and application numbers" 46 | msgstr "Mostrar dock e números do aplicativo" 47 | 48 | #: prefs.js:443 49 | msgid "Customize middle-click behavior" 50 | msgstr "Personalizar comportamento do botón central" 51 | 52 | #: prefs.js:514 53 | msgid "Customize running indicators" 54 | msgstr "Personalizar indicadores en execución" 55 | 56 | #: appIcons.js:804 57 | msgid "All Windows" 58 | msgstr "Todas as ventás" 59 | 60 | #: Settings.ui.h:1 61 | msgid "Customize indicator style" 62 | msgstr "Personalizar estilo do indicador" 63 | 64 | #: Settings.ui.h:2 65 | msgid "Color" 66 | msgstr "Cor" 67 | 68 | #: Settings.ui.h:3 69 | msgid "Border color" 70 | msgstr "Cor do borde" 71 | 72 | #: Settings.ui.h:4 73 | msgid "Border width" 74 | msgstr "Ancho do borde" 75 | 76 | #: Settings.ui.h:5 77 | msgid "Number overlay" 78 | msgstr "Número na vista extendida" 79 | 80 | #: Settings.ui.h:6 81 | msgid "" 82 | "Temporarily show the application numbers over the icons, corresponding to " 83 | "the shortcut." 84 | msgstr "" 85 | "Mostrar brevemente o número de aplicativo sobre a icona que corresponda " 86 | "ao atallo." 87 | 88 | #: Settings.ui.h:7 89 | msgid "Show the dock if it is hidden" 90 | msgstr "Mostrar o dock si está agochado" 91 | 92 | #: Settings.ui.h:8 93 | msgid "" 94 | "If using autohide, the dock will appear for a short time when triggering the " 95 | "shortcut." 96 | msgstr "" 97 | "Si se activa o agochamento automático, o dock aparecerá brevemente " 98 | "ao utilizar o atallo." 99 | 100 | #: Settings.ui.h:9 101 | msgid "Shortcut for the options above" 102 | msgstr "Atallo para os axustes de arriba" 103 | 104 | #: Settings.ui.h:10 105 | msgid "Syntax: , , , " 106 | msgstr "Sintaxe: , , , " 107 | 108 | #: Settings.ui.h:11 109 | msgid "Hide timeout (s)" 110 | msgstr "Tempo en agocharse (s)" 111 | 112 | #: Settings.ui.h:12 113 | msgid "" 114 | "When set to minimize, double clicking minimizes all the windows of the " 115 | "application." 116 | msgstr "" 117 | "Cando se establece minimizar, facendo duplo click minimiza todas as ventás " 118 | "do aplicativo." 119 | 120 | #: Settings.ui.h:13 121 | msgid "Shift+Click action" 122 | msgstr "Acción de Maiús + pulsación" 123 | 124 | #: Settings.ui.h:14 125 | msgid "Raise window" 126 | msgstr "Elevar ventá" 127 | 128 | #: Settings.ui.h:15 129 | msgid "Minimize window" 130 | msgstr "Minimizar ventá" 131 | 132 | #: Settings.ui.h:16 133 | msgid "Launch new instance" 134 | msgstr "Iniciar unha nova instancia" 135 | 136 | #: Settings.ui.h:17 137 | msgid "Cycle through windows" 138 | msgstr "Alternar entre ventás" 139 | 140 | #: Settings.ui.h:18 141 | msgid "Quit" 142 | msgstr "Saír" 143 | 144 | #: Settings.ui.h:19 145 | msgid "Behavior for Middle-Click." 146 | msgstr "Comportamento do botón central" 147 | 148 | #: Settings.ui.h:20 149 | msgid "Middle-Click action" 150 | msgstr "Acción do botón central" 151 | 152 | #: Settings.ui.h:21 153 | msgid "Behavior for Shift+Middle-Click." 154 | msgstr "Comportamento de Maiús + botón central" 155 | 156 | #: Settings.ui.h:22 157 | msgid "Shift+Middle-Click action" 158 | msgstr "Acción de Maiús + botón central" 159 | 160 | #: Settings.ui.h:23 161 | msgid "Show the dock on" 162 | msgstr "Mostrar o dock en" 163 | 164 | #: Settings.ui.h:24 165 | msgid "Show on all monitors" 166 | msgstr "Mostrar en todos os monitores" 167 | 168 | #: Settings.ui.h:25 169 | msgid "Position on screen" 170 | msgstr "Posición na pantalla" 171 | 172 | #: Settings.ui.h:27 173 | msgid "Bottom" 174 | msgstr "Inferior" 175 | 176 | #: Settings.ui.h:28 177 | msgid "Top" 178 | msgstr "Superior" 179 | 180 | #: Settings.ui.h:30 181 | msgid "" 182 | "Hide the dock when it obstructs a window of the current application. More " 183 | "refined settings are available." 184 | msgstr "" 185 | "Agochar o dock cando obstrúe a ventá do aplicativo actual. Dispoñibles " 186 | "máis opcións." 187 | 188 | #: Settings.ui.h:31 189 | msgid "Intelligent autohide" 190 | msgstr "Agochamento automático intelixente" 191 | 192 | #: Settings.ui.h:32 193 | msgid "Dock size limit" 194 | msgstr "Tamaño máximo do dock" 195 | 196 | #: Settings.ui.h:33 197 | msgid "Panel mode: extend to the screen edge" 198 | msgstr "Modo panel: extender ate os bordes da pantalla" 199 | 200 | #: Settings.ui.h:34 201 | msgid "Icon size limit" 202 | msgstr "Tamaño máximo das iconas" 203 | 204 | #: Settings.ui.h:35 205 | msgid "Fixed icon size: scroll to reveal other icons" 206 | msgstr "Tamaño fixo das iconas: desprazarse para mostrar outros" 207 | 208 | #: Settings.ui.h:36 209 | msgid "Position and size" 210 | msgstr "Posición e tamaño" 211 | 212 | #: Settings.ui.h:37 213 | msgid "Show favorite applications" 214 | msgstr "Mostrar aplicativos favoritos" 215 | 216 | #: Settings.ui.h:38 217 | msgid "Show running applications" 218 | msgstr "Mostrar aplicativos en execución" 219 | 220 | #: Settings.ui.h:39 221 | msgid "Isolate workspaces" 222 | msgstr "Illar os espazos de traballo" 223 | 224 | #: Settings.ui.h:40 225 | msgid "Show open windows previews" 226 | msgstr "Mostrar vista rápida de ventás" 227 | 228 | #: Settings.ui.h:41 229 | msgid "" 230 | "If disabled, these settings are accessible from gnome-tweak-tool or the " 231 | "extension website." 232 | msgstr "" 233 | "Si está deshabilitado, estas opcions están dispoñibles desde gnome-tweak-tool " 234 | "ou desde o sitio web de extensións." 235 | 236 | #: Settings.ui.h:42 237 | msgid "Show Applications icon" 238 | msgstr "Mostrar a icona Aplicativos" 239 | 240 | #: Settings.ui.h:43 241 | msgid "Move the applications button at the beginning of the dock" 242 | msgstr "Mover o botón de aplicativos ao principio do dock" 243 | 244 | #: Settings.ui.h:44 245 | msgid "Animate Show Applications" 246 | msgstr "Animar Mostrar aplicativos" 247 | 248 | #: Settings.ui.h:45 249 | msgid "Launchers" 250 | msgstr "Lanzadores" 251 | 252 | #: Settings.ui.h:46 253 | msgid "" 254 | "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " 255 | "together with Shift and Ctrl." 256 | msgstr "" 257 | "Habilitar Súper+(0-9) como atallos para activar aplicativos. Tamén puede " 258 | "ser utilizado xunto con Maiús e Ctrl." 259 | 260 | #: Settings.ui.h:47 261 | msgid "Use keyboard shortcuts to activate apps" 262 | msgstr "Usar atallos de teclado para activar aplicativos" 263 | 264 | #: Settings.ui.h:48 265 | msgid "Behaviour when clicking on the icon of a running application." 266 | msgstr "Comportamiento ao pulsar na icona de un aplicativo en execución." 267 | 268 | #: Settings.ui.h:49 269 | msgid "Click action" 270 | msgstr "Acción de pulsación" 271 | 272 | #: Settings.ui.h:50 273 | msgid "Minimize" 274 | msgstr "Minimizar" 275 | 276 | #: Settings.ui.h:51 277 | msgid "Minimize or overview" 278 | msgstr "Minimizar ou vista de actividades" 279 | 280 | #: Settings.ui.h:52 281 | msgid "Behaviour when scrolling on the icon of an application." 282 | msgstr "Comportamiento ao utilizar a roda sobre a icona de un aplicativo." 283 | 284 | #: Settings.ui.h:53 285 | msgid "Scroll action" 286 | msgstr "Acción de desprazamento" 287 | 288 | #: Settings.ui.h:54 289 | msgid "Do nothing" 290 | msgstr "Non facer nada" 291 | 292 | #: Settings.ui.h:55 293 | msgid "Switch workspace" 294 | msgstr "Cambiar de espazo de traballo." 295 | 296 | #: Settings.ui.h:56 297 | msgid "Behavior" 298 | msgstr "Comportamento" 299 | 300 | #: Settings.ui.h:57 301 | msgid "" 302 | "Few customizations meant to integrate the dock with the default GNOME theme. " 303 | "Alternatively, specific options can be enabled below." 304 | msgstr "" 305 | "Utilizar o decorado predeterminado de GNOME. De xeito alternativo, poden habilitarse " 306 | "certos axustes aquí abaixo." 307 | 308 | #: Settings.ui.h:58 309 | msgid "Use built-in theme" 310 | msgstr "Utilizar o decorado incorporado" 311 | 312 | #: Settings.ui.h:59 313 | msgid "Save space reducing padding and border radius." 314 | msgstr "Reducir as marxes para gañar espazo." 315 | 316 | #: Settings.ui.h:60 317 | msgid "Shrink the dash" 318 | msgstr "Comprimir o taboleiro" 319 | 320 | #: Settings.ui.h:61 321 | msgid "Show a dot for each windows of the application." 322 | msgstr "Mostrar un punto por cada ventá do aplicativo." 323 | 324 | #: Settings.ui.h:62 325 | msgid "Show windows counter indicators" 326 | msgstr "Mostrar contador de ventás" 327 | 328 | #: Settings.ui.h:63 329 | msgid "Set the background color for the dash." 330 | msgstr "Escoller a cor de fondo do taboleiro." 331 | 332 | #: Settings.ui.h:64 333 | msgid "Customize the dash color" 334 | msgstr "Personalizar a cor do dock" 335 | 336 | #: Settings.ui.h:65 337 | msgid "Tune the dash background opacity." 338 | msgstr "Axustar a opacidade do fondo." 339 | 340 | #: Settings.ui.h:66 341 | msgid "Customize opacity" 342 | msgstr "Personalizar opacidade" 343 | 344 | #: Settings.ui.h:67 345 | msgid "Opacity" 346 | msgstr "Opacidade" 347 | 348 | #: Settings.ui.h:68 349 | msgid "Force straight corner\n" 350 | msgstr "Forzar esquinas rectas\n" 351 | 352 | #: Settings.ui.h:70 353 | msgid "Appearance" 354 | msgstr "Aparencia" 355 | 356 | #: Settings.ui.h:71 357 | msgid "version: " 358 | msgstr "versión: " 359 | 360 | #: Settings.ui.h:72 361 | msgid "Moves the dash out of the overview transforming it in a dock" 362 | msgstr "" 363 | "Move o panel da vista de actividades transformándoo nun dock" 364 | 365 | #: Settings.ui.h:73 366 | msgid "Created by" 367 | msgstr "Creado por" 368 | 369 | #: Settings.ui.h:74 370 | msgid "Webpage" 371 | msgstr "Sitio web" 372 | 373 | #: Settings.ui.h:75 374 | msgid "" 375 | "This program comes with ABSOLUTELY NO WARRANTY.\n" 376 | "See the GNU General Public License, version 2 or later for details." 378 | msgstr "" 379 | "Este programa ven SIN GARANTÍA ALGUNHA.\n" 380 | "Consulte a Licenza Pública Xeral de GNU, versión 2 ou posterior para obter " 382 | "máis detalles." 383 | 384 | #: Settings.ui.h:77 385 | msgid "About" 386 | msgstr "Sobre o" 387 | 388 | #: Settings.ui.h:78 389 | msgid "Show the dock by mouse hover on the screen edge." 390 | msgstr "Mostrar o dock ao pasar o punteiro sobre o borde da pantalla." 391 | 392 | #: Settings.ui.h:79 393 | msgid "Autohide" 394 | msgstr "Agochar automáticamente" 395 | 396 | #: Settings.ui.h:80 397 | msgid "Push to show: require pressure to show the dock" 398 | msgstr "Empurrar para mostrasr: require facer presión para mostrar o dock" 399 | 400 | #: Settings.ui.h:81 401 | msgid "Enable in fullscreen mode" 402 | msgstr "Activar en modo de pantalla completa" 403 | 404 | #: Settings.ui.h:82 405 | msgid "Show the dock when it doesn't obstruct application windows." 406 | msgstr "Mostrar o dock cando non cubra outras ventás de aplicativos." 407 | 408 | #: Settings.ui.h:83 409 | msgid "Dodge windows" 410 | msgstr "Evitar as ventás" 411 | 412 | #: Settings.ui.h:84 413 | msgid "All windows" 414 | msgstr "Todas as ventás" 415 | 416 | #: Settings.ui.h:85 417 | msgid "Only focused application's windows" 418 | msgstr "Só as ventás do aplicativo activo" 419 | 420 | #: Settings.ui.h:86 421 | msgid "Only maximized windows" 422 | msgstr "Só as ventás maximizadas" 423 | 424 | #: Settings.ui.h:87 425 | msgid "Animation duration (s)" 426 | msgstr "Duración da animación (s)" 427 | 428 | #: Settings.ui.h:88 429 | msgid "0.000" 430 | msgstr "0.000" 431 | 432 | #: Settings.ui.h:89 433 | msgid "Show timeout (s)" 434 | msgstr "Tempo de aparición" 435 | 436 | #: Settings.ui.h:90 437 | msgid "Pressure threshold" 438 | msgstr "Límite de presión" 439 | -------------------------------------------------------------------------------- /po/id.po: -------------------------------------------------------------------------------- 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 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: Dash-to-Dock\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-06-04 12:35+0100\n" 11 | "PO-Revision-Date: 2017-10-02 11:25+0700\n" 12 | "Last-Translator: Mahyuddin \n" 13 | "Language-Team: Mahyuddin \n" 14 | "Language: id\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | "X-Generator: Poedit 1.8.11\n" 20 | 21 | #: prefs.js:113 22 | msgid "Primary monitor" 23 | msgstr "Monitor primer" 24 | 25 | #: prefs.js:122 prefs.js:129 26 | msgid "Secondary monitor " 27 | msgstr "Monitor sekunder" 28 | 29 | #: prefs.js:154 Settings.ui.h:29 30 | msgid "Right" 31 | msgstr "Kanan" 32 | 33 | #: prefs.js:155 Settings.ui.h:26 34 | msgid "Left" 35 | msgstr "Kiri" 36 | 37 | #: prefs.js:205 38 | msgid "Intelligent autohide customization" 39 | msgstr "Kustomisasi autohide yang cerdas" 40 | 41 | #: prefs.js:212 prefs.js:393 prefs.js:450 42 | msgid "Reset to defaults" 43 | msgstr "Setel ulang ke bawaan" 44 | 45 | #: prefs.js:386 46 | msgid "Show dock and application numbers" 47 | msgstr "Tampilkan dock dan nomor aplikasi" 48 | 49 | #: prefs.js:443 50 | msgid "Customize middle-click behavior" 51 | msgstr "Sesuaikan perilaku klik menengah" 52 | 53 | #: prefs.js:514 54 | msgid "Customize running indicators" 55 | msgstr "Sesuaikan indikator yang sedang berjalan" 56 | 57 | #: appIcons.js:804 58 | msgid "All Windows" 59 | msgstr "Semua Jendela" 60 | 61 | #: Settings.ui.h:1 62 | msgid "Customize indicator style" 63 | msgstr "Sesuaikan gaya indikator" 64 | 65 | #: Settings.ui.h:2 66 | msgid "Color" 67 | msgstr "Warna" 68 | 69 | #: Settings.ui.h:3 70 | msgid "Border color" 71 | msgstr "Warna border" 72 | 73 | #: Settings.ui.h:4 74 | msgid "Border width" 75 | msgstr "Lebar border" 76 | 77 | #: Settings.ui.h:5 78 | msgid "Number overlay" 79 | msgstr "Nomor overlay" 80 | 81 | #: Settings.ui.h:6 82 | msgid "" 83 | "Temporarily show the application numbers over the icons, corresponding to " 84 | "the shortcut." 85 | msgstr "" 86 | "Untuk sementara menunjukkan nomor aplikasi di atas ikon, sesuai dengan " 87 | "pintasan." 88 | 89 | #: Settings.ui.h:7 90 | msgid "Show the dock if it is hidden" 91 | msgstr "Tunjukkan dock jika tersembunyi" 92 | 93 | #: Settings.ui.h:8 94 | msgid "" 95 | "If using autohide, the dock will appear for a short time when triggering the " 96 | "shortcut." 97 | msgstr "" 98 | "Jika menggunakan autohide, dock akan muncul dalam waktu singkat saat memicu " 99 | "pintasan." 100 | 101 | #: Settings.ui.h:9 102 | msgid "Shortcut for the options above" 103 | msgstr "Pintasan untuk opsi di atas" 104 | 105 | #: Settings.ui.h:10 106 | msgid "Syntax: , , , " 107 | msgstr "Sintaks: , , , " 108 | 109 | #: Settings.ui.h:11 110 | msgid "Hide timeout (s)" 111 | msgstr "Sembunyikan batas waktu (s)" 112 | 113 | #: Settings.ui.h:12 114 | msgid "" 115 | "When set to minimize, double clicking minimizes all the windows of the " 116 | "application." 117 | msgstr "" 118 | "Bila disetel untuk meminimalkan, klik ganda meminimalkan semua jendela " 119 | "aplikasi." 120 | 121 | #: Settings.ui.h:13 122 | msgid "Shift+Click action" 123 | msgstr "Tindakan Shift+Klik" 124 | 125 | #: Settings.ui.h:14 126 | msgid "Raise window" 127 | msgstr "Menaikkan jendela" 128 | 129 | #: Settings.ui.h:15 130 | msgid "Minimize window" 131 | msgstr "Minimalkan jendela" 132 | 133 | #: Settings.ui.h:16 134 | msgid "Launch new instance" 135 | msgstr "Luncurkan contoh baru" 136 | 137 | #: Settings.ui.h:17 138 | msgid "Cycle through windows" 139 | msgstr "Siklus melalui jendela" 140 | 141 | #: Settings.ui.h:18 142 | msgid "Quit" 143 | msgstr "Berhenti" 144 | 145 | #: Settings.ui.h:19 146 | msgid "Behavior for Middle-Click." 147 | msgstr "Perilaku untuk Klik-Tengah." 148 | 149 | #: Settings.ui.h:20 150 | msgid "Middle-Click action" 151 | msgstr "Tindakan Klik-Tengah" 152 | 153 | #: Settings.ui.h:21 154 | msgid "Behavior for Shift+Middle-Click." 155 | msgstr "Perilaku untuk Shift+Klik-Tengah." 156 | 157 | #: Settings.ui.h:22 158 | msgid "Shift+Middle-Click action" 159 | msgstr "Tindakan Shift+Klik-Tengah" 160 | 161 | #: Settings.ui.h:23 162 | msgid "Show the dock on" 163 | msgstr "Tunjukkan dock pada" 164 | 165 | #: Settings.ui.h:24 166 | msgid "Show on all monitors" 167 | msgstr "Tunjukkan pada semua monitor" 168 | 169 | #: Settings.ui.h:25 170 | msgid "Position on screen" 171 | msgstr "Posisi pada layar" 172 | 173 | #: Settings.ui.h:27 174 | msgid "Bottom" 175 | msgstr "Bawah" 176 | 177 | #: Settings.ui.h:28 178 | msgid "Top" 179 | msgstr "Atas" 180 | 181 | #: Settings.ui.h:30 182 | msgid "" 183 | "Hide the dock when it obstructs a window of the current application. More " 184 | "refined settings are available." 185 | msgstr "" 186 | "Sembunyikan dock saat menghalangi jendela aplikasi saat ini. Setelan yang " 187 | "lebih halus juga tersedia." 188 | 189 | #: Settings.ui.h:31 190 | msgid "Intelligent autohide" 191 | msgstr "Autohide cerdas" 192 | 193 | #: Settings.ui.h:32 194 | msgid "Dock size limit" 195 | msgstr "Batas ukuran dock" 196 | 197 | #: Settings.ui.h:33 198 | msgid "Panel mode: extend to the screen edge" 199 | msgstr "Mode panel: meluas ke tepi layar" 200 | 201 | #: Settings.ui.h:34 202 | msgid "Icon size limit" 203 | msgstr "Batas ukuran ikon" 204 | 205 | #: Settings.ui.h:35 206 | msgid "Fixed icon size: scroll to reveal other icons" 207 | msgstr "Ukuran ikon tetap: gulir untuk menampilkan ikon lain" 208 | 209 | #: Settings.ui.h:36 210 | msgid "Position and size" 211 | msgstr "Posisi dan ukuran" 212 | 213 | #: Settings.ui.h:37 214 | msgid "Show favorite applications" 215 | msgstr "Tampilkan aplikasi favorit" 216 | 217 | #: Settings.ui.h:38 218 | msgid "Show running applications" 219 | msgstr "Tampilkan aplikasi yang sedang berjalan" 220 | 221 | #: Settings.ui.h:39 222 | msgid "Isolate workspaces" 223 | msgstr "Isolasi ruang kerja" 224 | 225 | #: Settings.ui.h:40 226 | msgid "Show open windows previews" 227 | msgstr "Tampilkan pratinjau windows yang terbuka" 228 | 229 | #: Settings.ui.h:41 230 | msgid "" 231 | "If disabled, these settings are accessible from gnome-tweak-tool or the " 232 | "extension website." 233 | msgstr "" 234 | "Jika dinonaktifkan, setelan ini dapat diakses dari gnome-tweak-tool atau " 235 | "situs ekstensi." 236 | 237 | #: Settings.ui.h:42 238 | msgid "Show Applications icon" 239 | msgstr "Tampilkan ikon Aplikasi" 240 | 241 | #: Settings.ui.h:43 242 | msgid "Move the applications button at the beginning of the dock" 243 | msgstr "Pindahkan tombol aplikasi di awal dock" 244 | 245 | #: Settings.ui.h:44 246 | msgid "Animate Show Applications" 247 | msgstr "Animasi Tampilkan Aplikasi" 248 | 249 | #: Settings.ui.h:45 250 | msgid "Launchers" 251 | msgstr "Peluncur" 252 | 253 | #: Settings.ui.h:46 254 | msgid "" 255 | "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " 256 | "together with Shift and Ctrl." 257 | msgstr "" 258 | "Aktifkan Super+(0-9) sebagai cara pintas untuk mengaktifkan aplikasi. Ini " 259 | "juga bisa digunakan bersamaan dengan Shift dan Ctrl." 260 | 261 | #: Settings.ui.h:47 262 | msgid "Use keyboard shortcuts to activate apps" 263 | msgstr "Gunakan pintasan papan tik untuk mengaktifkan aplikasi" 264 | 265 | #: Settings.ui.h:48 266 | msgid "Behaviour when clicking on the icon of a running application." 267 | msgstr "Perilaku saat mengklik ikon aplikasi yang sedang berjalan." 268 | 269 | #: Settings.ui.h:49 270 | msgid "Click action" 271 | msgstr "Klik tindakan" 272 | 273 | #: Settings.ui.h:50 274 | msgid "Minimize" 275 | msgstr "Minimalkan" 276 | 277 | #: Settings.ui.h:51 278 | msgid "Minimize or overview" 279 | msgstr "Minimalkan atau ikhtisar" 280 | 281 | #: Settings.ui.h:52 282 | msgid "Behaviour when scrolling on the icon of an application." 283 | msgstr "Perilaku saat menggulir pada ikon aplikasi." 284 | 285 | #: Settings.ui.h:53 286 | msgid "Scroll action" 287 | msgstr "Gulir tindakan" 288 | 289 | #: Settings.ui.h:54 290 | msgid "Do nothing" 291 | msgstr "Tidak melakukan apapun" 292 | 293 | #: Settings.ui.h:55 294 | msgid "Switch workspace" 295 | msgstr "Beralih ruang kerja" 296 | 297 | #: Settings.ui.h:56 298 | msgid "Behavior" 299 | msgstr "Perilaku" 300 | 301 | #: Settings.ui.h:57 302 | msgid "" 303 | "Few customizations meant to integrate the dock with the default GNOME theme. " 304 | "Alternatively, specific options can be enabled below." 305 | msgstr "" 306 | "Beberapa penyesuaian dimaksudkan untuk mengintegrasikan dock dengan tema " 307 | "GNOME bawaan. Sebagai alternatif, pilihan spesifik dapat diaktifkan di bawah " 308 | "ini." 309 | 310 | #: Settings.ui.h:58 311 | msgid "Use built-in theme" 312 | msgstr "Gunakan tema bawaan" 313 | 314 | #: Settings.ui.h:59 315 | msgid "Save space reducing padding and border radius." 316 | msgstr "Hemat ruang padding mengurangi dan radius border." 317 | 318 | #: Settings.ui.h:60 319 | msgid "Shrink the dash" 320 | msgstr "Penyusutan dash" 321 | 322 | #: Settings.ui.h:61 323 | msgid "Show a dot for each windows of the application." 324 | msgstr "Tampilkan titik untuk setiap jendela aplikasi." 325 | 326 | #: Settings.ui.h:62 327 | msgid "Show windows counter indicators" 328 | msgstr "Tampilkan indikator counter jendela" 329 | 330 | #: Settings.ui.h:63 331 | msgid "Set the background color for the dash." 332 | msgstr "Atur warna latar belakang untuk dash." 333 | 334 | #: Settings.ui.h:64 335 | msgid "Customize the dash color" 336 | msgstr "Sesuaikan warna dash." 337 | 338 | #: Settings.ui.h:65 339 | msgid "Tune the dash background opacity." 340 | msgstr "Cocokkan opacity latar belakang." 341 | 342 | #: Settings.ui.h:66 343 | msgid "Customize opacity" 344 | msgstr "Menyesuaikan opacity" 345 | 346 | #: Settings.ui.h:67 347 | msgid "Opacity" 348 | msgstr "Opacity" 349 | 350 | #: Settings.ui.h:68 351 | msgid "Force straight corner\n" 352 | msgstr "Paksa sudut lurus\n" 353 | 354 | #: Settings.ui.h:70 355 | msgid "Appearance" 356 | msgstr "Penampilan" 357 | 358 | #: Settings.ui.h:71 359 | msgid "version: " 360 | msgstr "versi: " 361 | 362 | #: Settings.ui.h:72 363 | msgid "Moves the dash out of the overview transforming it in a dock" 364 | msgstr "Memindahkan dash keluar dari ikhtisar yang mengubahnya di dock" 365 | 366 | #: Settings.ui.h:73 367 | msgid "Created by" 368 | msgstr "Dibuat oleh" 369 | 370 | #: Settings.ui.h:74 371 | msgid "Webpage" 372 | msgstr "Halaman web" 373 | 374 | #: Settings.ui.h:75 375 | msgid "" 376 | "This program comes with ABSOLUTELY NO WARRANTY.\n" 377 | "See the GNU General Public License, version 2 or later for details." 379 | msgstr "" 380 | "Program ini hadir dengan TIDAK ADA JAMINAN TIDAK " 381 | "BENAR.\n" 382 | "Lihat " 383 | "GNU General Public License, versi 2 atau yang lebih baru untuk " 384 | "detailnya. " 385 | 386 | #: Settings.ui.h:77 387 | msgid "About" 388 | msgstr "Tentang" 389 | 390 | #: Settings.ui.h:78 391 | msgid "Show the dock by mouse hover on the screen edge." 392 | msgstr "Tunjukkan dock dengan mouse hover di tepi layar." 393 | 394 | #: Settings.ui.h:79 395 | msgid "Autohide" 396 | msgstr "Autohide" 397 | 398 | #: Settings.ui.h:80 399 | msgid "Push to show: require pressure to show the dock" 400 | msgstr "Tekan untuk tampilkan: butuh tekanan untuk menunjukkan dock" 401 | 402 | #: Settings.ui.h:81 403 | msgid "Enable in fullscreen mode" 404 | msgstr "Aktifkan dalam mode layar penuh" 405 | 406 | #: Settings.ui.h:82 407 | msgid "Show the dock when it doesn't obstruct application windows." 408 | msgstr "Tunjukkan dokk bila tidak menghalangi jendela aplikasi." 409 | 410 | #: Settings.ui.h:83 411 | msgid "Dodge windows" 412 | msgstr "Dodge jendela" 413 | 414 | #: Settings.ui.h:84 415 | msgid "All windows" 416 | msgstr "Semua jendela" 417 | 418 | #: Settings.ui.h:85 419 | msgid "Only focused application's windows" 420 | msgstr "Hanya fokus aplikasi jendela" 421 | 422 | #: Settings.ui.h:86 423 | msgid "Only maximized windows" 424 | msgstr "Hanya jendela yang maksimal" 425 | 426 | #: Settings.ui.h:87 427 | msgid "Animation duration (s)" 428 | msgstr "Durasi animasi (s)" 429 | 430 | #: Settings.ui.h:88 431 | msgid "0.000" 432 | msgstr "0.000" 433 | 434 | #: Settings.ui.h:89 435 | msgid "Show timeout (s)" 436 | msgstr "Tampilkan batas waktu (s)" 437 | 438 | #: Settings.ui.h:90 439 | msgid "Pressure threshold" 440 | msgstr "Ambang tekanan" 441 | 442 | #~ msgid "" 443 | #~ "With fixed icon size, only the edge of the dock and the Show " 444 | #~ "Applications icon are active." 445 | #~ msgstr "" 446 | #~ "Con la dimensione fissa delle icone, solo il bordo della dock e l'icona " 447 | #~ " Mostra Applicazioni sono attive." 448 | 449 | #~ msgid "Switch workspace by scrolling on the dock" 450 | #~ msgstr "Cambia spazio di lavoro scorrendo sulla dock" 451 | -------------------------------------------------------------------------------- /po/ja.po: -------------------------------------------------------------------------------- 1 | # Dash to Dock master ja.po 2 | # Copyright (C) 2013-2017, 2019-2020 THE dash-to-dock'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the dash-to-dock package. 4 | # Jiro Matsuzawa , 2013. 5 | # Debonne Hooties , 2014-2017. 6 | # sicklylife , 2019-2020. 7 | # Ryo Nakano , 2019. 8 | # 9 | msgid "" 10 | msgstr "" 11 | "Project-Id-Version: dash-to-dock master\n" 12 | "Report-Msgid-Bugs-To: \n" 13 | "POT-Creation-Date: 2020-06-14 23:00+0900\n" 14 | "PO-Revision-Date: 2020-06-15 07:30+0900\n" 15 | "Last-Translator: sicklylife \n" 16 | "Language-Team: Japanese <>\n" 17 | "Language: ja\n" 18 | "MIME-Version: 1.0\n" 19 | "Content-Type: text/plain; charset=UTF-8\n" 20 | "Content-Transfer-Encoding: 8bit\n" 21 | "Plural-Forms: nplurals=1; plural=0;\n" 22 | 23 | #: appIcons.js:797 24 | msgid "All Windows" 25 | msgstr "ウィンドウプレビューの表示" 26 | 27 | #: appIcons.js:808 28 | msgid "New Window" 29 | msgstr "新しいウィンドウ" 30 | 31 | #: appIcons.js:823 32 | msgid "Launch using Dedicated Graphics Card" 33 | msgstr "専用のグラフィックカードを使用して起動" 34 | 35 | #: appIcons.js:851 36 | msgid "Remove from Favorites" 37 | msgstr "お気に入りから削除" 38 | 39 | #: appIcons.js:857 40 | msgid "Add to Favorites" 41 | msgstr "お気に入りに追加" 42 | 43 | #: appIcons.js:868 44 | msgid "Show Details" 45 | msgstr "詳細を表示" 46 | 47 | # ここの翻訳は GNOME Shell の訳が優先される様子 48 | #: appIcons.js:896 appIcons.js:914 Settings.ui.h:11 49 | msgid "Quit" 50 | msgstr "終了" 51 | 52 | # ここの「Quit」は GNOME Shell の訳に合わせた方が良さげ 53 | #: appIcons.js:916 54 | #, javascript-format 55 | msgid "Quit %d Windows" 56 | msgstr "%d 個のウィンドウを終了" 57 | 58 | #. Translators: %s is "Settings", which is automatically translated. You 59 | #. can also translate the full message if this fits better your language. 60 | #: appIcons.js:1134 61 | #, javascript-format 62 | msgid "Dash to Dock %s" 63 | msgstr "Dash to Dock の%s" 64 | 65 | #: appIcons.js:1134 66 | msgid "Settings" 67 | msgstr "設定" 68 | 69 | #: docking.js:1188 70 | msgid "Dash" 71 | msgstr "Dash" 72 | 73 | #: locations.js:65 74 | msgid "Trash" 75 | msgstr "ゴミ箱" 76 | 77 | #: locations.js:74 78 | msgid "Empty Trash" 79 | msgstr "ゴミ箱を空にする" 80 | 81 | #: locations.js:192 82 | msgid "Mount" 83 | msgstr "マウント" 84 | 85 | #: locations.js:235 86 | msgid "Eject" 87 | msgstr "取り出す" 88 | 89 | #: locations.js:240 90 | msgid "Unmount" 91 | msgstr "アンマウント" 92 | 93 | #: prefs.js:268 94 | msgid "Primary monitor" 95 | msgstr "プライマリーモニター" 96 | 97 | #: prefs.js:277 prefs.js:284 98 | msgid "Secondary monitor " 99 | msgstr "セカンダリーモニター" 100 | 101 | #: prefs.js:309 Settings.ui.h:28 102 | msgid "Right" 103 | msgstr "右" 104 | 105 | #: prefs.js:310 Settings.ui.h:25 106 | msgid "Left" 107 | msgstr "左" 108 | 109 | #: prefs.js:360 110 | msgid "Intelligent autohide customization" 111 | msgstr "インテリジェント表示の設定" 112 | 113 | #: prefs.js:367 prefs.js:560 prefs.js:616 114 | msgid "Reset to defaults" 115 | msgstr "既定値にリセット" 116 | 117 | #: prefs.js:553 118 | msgid "Show dock and application numbers" 119 | msgstr "ドック表示とアプリケーション番号" 120 | 121 | #: prefs.js:609 122 | msgid "Customize middle-click behavior" 123 | msgstr "中ボタンクリック時のアクション" 124 | 125 | #: prefs.js:692 126 | msgid "Customize running indicators" 127 | msgstr "インジケーターの表示設定" 128 | 129 | #: prefs.js:804 Settings.ui.h:74 130 | msgid "Customize opacity" 131 | msgstr "不透明度の調整" 132 | 133 | #: Settings.ui.h:1 134 | msgid "" 135 | "When set to minimize, double clicking minimizes all the windows of the " 136 | "application." 137 | msgstr "" 138 | "[ウィンドウの最小化] に設定したときは、アイコンをダブルクリックするとそのアプ" 139 | "リケーションのウィンドウをすべて最小化します。" 140 | 141 | #: Settings.ui.h:2 142 | msgid "Shift+Click action" 143 | msgstr "Shift + クリック時のアクション" 144 | 145 | #: Settings.ui.h:3 146 | msgid "Raise window" 147 | msgstr "ウィンドウの再表示" 148 | 149 | #: Settings.ui.h:4 150 | msgid "Minimize window" 151 | msgstr "ウィンドウの最小化" 152 | 153 | #: Settings.ui.h:5 154 | msgid "Launch new instance" 155 | msgstr "新しいウィンドウを開く" 156 | 157 | #: Settings.ui.h:6 158 | msgid "Cycle through windows" 159 | msgstr "ウィンドウの切り替え" 160 | 161 | #: Settings.ui.h:7 162 | msgid "Minimize or overview" 163 | msgstr "ウィンドウの最小化またはオーバービュー" 164 | 165 | #: Settings.ui.h:8 166 | msgid "Show window previews" 167 | msgstr "ウィンドウのプレビュー表示" 168 | 169 | #: Settings.ui.h:9 170 | msgid "Minimize or show previews" 171 | msgstr "ウィンドウの最小化またはプレビュー表示" 172 | 173 | #: Settings.ui.h:10 174 | msgid "Focus or show previews" 175 | msgstr "フォーカスまたはプレビュー表示" 176 | 177 | #: Settings.ui.h:12 178 | msgid "Behavior for Middle-Click." 179 | msgstr "中ボタンをクリックしたときの動作を設定します。" 180 | 181 | #: Settings.ui.h:13 182 | msgid "Middle-Click action" 183 | msgstr "中ボタンクリック時のアクション" 184 | 185 | #: Settings.ui.h:14 186 | msgid "Behavior for Shift+Middle-Click." 187 | msgstr "Shift を押しながら中ボタンをクリックしたときの動作を設定します。" 188 | 189 | #: Settings.ui.h:15 190 | msgid "Shift+Middle-Click action" 191 | msgstr "Shift + 中ボタンクリック時のアクション" 192 | 193 | #: Settings.ui.h:16 194 | msgid "Enable Unity7 like glossy backlit items" 195 | msgstr "Unity7 のような色付きのアイテム背景" 196 | 197 | #: Settings.ui.h:17 198 | msgid "Use dominant color" 199 | msgstr "ドミナントカラーを使用" 200 | 201 | #: Settings.ui.h:18 202 | msgid "Customize indicator style" 203 | msgstr "表示スタイルの設定" 204 | 205 | #: Settings.ui.h:19 206 | msgid "Color" 207 | msgstr "ボディ色" 208 | 209 | #: Settings.ui.h:20 210 | msgid "Border color" 211 | msgstr "縁取り色" 212 | 213 | #: Settings.ui.h:21 214 | msgid "Border width" 215 | msgstr "縁取り幅" 216 | 217 | #: Settings.ui.h:22 218 | msgid "Show the dock on" 219 | msgstr "ドックを表示するモニター" 220 | 221 | #: Settings.ui.h:23 222 | msgid "Show on all monitors" 223 | msgstr "すべてのモニターで表示" 224 | 225 | #: Settings.ui.h:24 226 | msgid "Position on screen" 227 | msgstr "表示位置" 228 | 229 | #: Settings.ui.h:26 230 | msgid "Bottom" 231 | msgstr "下" 232 | 233 | #: Settings.ui.h:27 234 | msgid "Top" 235 | msgstr "上" 236 | 237 | #: Settings.ui.h:29 238 | msgid "" 239 | "Hide the dock when it obstructs a window of the current application. More " 240 | "refined settings are available." 241 | msgstr "" 242 | "開いているウィンドウの邪魔にならないようドックの表示/非表示を自動的に切り替え" 243 | "ます。より洗練された表示設定も可能です。" 244 | 245 | #: Settings.ui.h:30 246 | msgid "Intelligent autohide" 247 | msgstr "インテリジェント表示" 248 | 249 | #: Settings.ui.h:31 250 | msgid "Dock size limit" 251 | msgstr "ドックサイズの上限" 252 | 253 | #: Settings.ui.h:32 254 | msgid "Panel mode: extend to the screen edge" 255 | msgstr "パネルモード (画面の端までドックを拡張)" 256 | 257 | #: Settings.ui.h:33 258 | msgid "Icon size limit" 259 | msgstr "アイコンサイズの上限" 260 | 261 | #: Settings.ui.h:34 262 | msgid "Fixed icon size: scroll to reveal other icons" 263 | msgstr "アイコンサイズの固定 (隠れたアイコンはスクロールで表示)" 264 | 265 | #: Settings.ui.h:35 266 | msgid "Position and size" 267 | msgstr "位置とサイズ" 268 | 269 | #: Settings.ui.h:36 270 | msgid "Show favorite applications" 271 | msgstr "お気に入りアプリケーションの表示" 272 | 273 | #: Settings.ui.h:37 274 | msgid "Show running applications" 275 | msgstr "実行中アプリケーションの表示" 276 | 277 | #: Settings.ui.h:38 278 | msgid "Isolate workspaces" 279 | msgstr "現在のワークスペースのみ表示" 280 | 281 | #: Settings.ui.h:39 282 | msgid "Isolate monitors" 283 | msgstr "現在のモニターのみ表示" 284 | 285 | #: Settings.ui.h:40 286 | msgid "Show open windows previews" 287 | msgstr "ウィンドウのプレビューを右クリックで表示可能にする" 288 | 289 | #: Settings.ui.h:41 290 | msgid "" 291 | "If disabled, these settings are accessible from gnome-tweak-tool or the " 292 | "extension website." 293 | msgstr "" 294 | "オフにしたときは gnome-tweak-tool または拡張機能ウェブサイトを経由してこの設" 295 | "定ダイアログにアクセスします。" 296 | 297 | #: Settings.ui.h:42 298 | msgid "Show Applications icon" 299 | msgstr "[アプリケーションを表示する] アイコンの表示" 300 | 301 | #: Settings.ui.h:43 302 | msgid "Move the applications button at the beginning of the dock" 303 | msgstr "ドックの先頭 (最上段または左端) に表示" 304 | 305 | #: Settings.ui.h:44 306 | msgid "Animate Show Applications" 307 | msgstr "アニメーションしながらアプリケーション一覧を表示" 308 | 309 | #: Settings.ui.h:45 310 | msgid "Show trash can" 311 | msgstr "ゴミ箱を表示" 312 | 313 | #: Settings.ui.h:46 314 | msgid "Show mounted volumes and devices" 315 | msgstr "マウントしたボリュームとデバイスを表示" 316 | 317 | #: Settings.ui.h:47 318 | msgid "Launchers" 319 | msgstr "ランチャー" 320 | 321 | #: Settings.ui.h:48 322 | msgid "" 323 | "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " 324 | "together with Shift and Ctrl." 325 | msgstr "" 326 | "Super キーと番号 (0-9) を同時に押すことでアプリケーションのアクティブ化を可" 327 | "能にします。\n" 328 | "Shift キーまたは Ctrl キーを Super キーとともに押しても機能します。" 329 | 330 | #: Settings.ui.h:49 331 | msgid "Use keyboard shortcuts to activate apps" 332 | msgstr "アプリのアクティブ化にキーボードショートカットを使用" 333 | 334 | #: Settings.ui.h:50 335 | msgid "Behaviour when clicking on the icon of a running application." 336 | msgstr "実行中アプリケーションのアイコンをクリックしたときの動作を設定します。" 337 | 338 | #: Settings.ui.h:51 339 | msgid "Click action" 340 | msgstr "クリック時のアクション" 341 | 342 | #: Settings.ui.h:52 343 | msgid "Minimize" 344 | msgstr "ウィンドウの最小化" 345 | 346 | #: Settings.ui.h:53 347 | msgid "Behaviour when scrolling on the icon of an application." 348 | msgstr "" 349 | "実行中アプリケーションのアイコン上でスクロールしたときの動作を設定します。" 350 | 351 | #: Settings.ui.h:54 352 | msgid "Scroll action" 353 | msgstr "スクロール時のアクション" 354 | 355 | #: Settings.ui.h:55 356 | msgid "Do nothing" 357 | msgstr "何もしない" 358 | 359 | #: Settings.ui.h:56 360 | msgid "Switch workspace" 361 | msgstr "ワークスペースの切り替え" 362 | 363 | #: Settings.ui.h:57 364 | msgid "Behavior" 365 | msgstr "動作" 366 | 367 | #: Settings.ui.h:58 368 | msgid "" 369 | "Few customizations meant to integrate the dock with the default GNOME theme. " 370 | "Alternatively, specific options can be enabled below." 371 | msgstr "" 372 | "この設定がオンのときは、お使いの GNOME テーマとの調和を図るためカスタマイズは" 373 | "無効になります。オフのときには以下のカスタマイズが可能です。" 374 | 375 | #: Settings.ui.h:59 376 | msgid "Use built-in theme" 377 | msgstr "ビルトインテーマの使用" 378 | 379 | #: Settings.ui.h:60 380 | msgid "Save space reducing padding and border radius." 381 | msgstr "境界線の太さとパディングを減らして表示域を小さくします。" 382 | 383 | #: Settings.ui.h:61 384 | msgid "Shrink the dash" 385 | msgstr "Dash の縮小表示" 386 | 387 | #: Settings.ui.h:62 388 | msgid "Customize windows counter indicators" 389 | msgstr "ウィンドウ数インジケーターの設定" 390 | 391 | #: Settings.ui.h:63 392 | msgid "Default" 393 | msgstr "デフォルト" 394 | 395 | #: Settings.ui.h:64 396 | msgid "Dots" 397 | msgstr "" 398 | 399 | #: Settings.ui.h:65 400 | msgid "Squares" 401 | msgstr "" 402 | 403 | #: Settings.ui.h:66 404 | msgid "Dashes" 405 | msgstr "" 406 | 407 | #: Settings.ui.h:67 408 | msgid "Segmented" 409 | msgstr "" 410 | 411 | #: Settings.ui.h:68 412 | msgid "Solid" 413 | msgstr "" 414 | 415 | #: Settings.ui.h:69 416 | msgid "Ciliora" 417 | msgstr "" 418 | 419 | #: Settings.ui.h:70 420 | msgid "Metro" 421 | msgstr "" 422 | 423 | #: Settings.ui.h:71 424 | msgid "Set the background color for the dash." 425 | msgstr "Dash の背景色を設定します" 426 | 427 | #: Settings.ui.h:72 428 | msgid "Customize the dash color" 429 | msgstr "Dash 背景色の設定" 430 | 431 | #: Settings.ui.h:73 432 | msgid "Tune the dash background opacity." 433 | msgstr "Dash 背景の不透明度を調整します。" 434 | 435 | #: Settings.ui.h:75 436 | msgid "Fixed" 437 | msgstr "固定" 438 | 439 | #: Settings.ui.h:76 440 | msgid "Dynamic" 441 | msgstr "動的" 442 | 443 | #: Settings.ui.h:77 444 | msgid "Opacity" 445 | msgstr "不透明度" 446 | 447 | #: Settings.ui.h:78 448 | msgid "Force straight corner" 449 | msgstr "角を丸めない" 450 | 451 | #: Settings.ui.h:79 452 | msgid "Appearance" 453 | msgstr "外観" 454 | 455 | #: Settings.ui.h:80 456 | msgid "version: " 457 | msgstr "バージョン: " 458 | 459 | #: Settings.ui.h:81 460 | msgid "Moves the dash out of the overview transforming it in a dock" 461 | msgstr "" 462 | "Dash をドック化してアクティビティ画面以外でも Dash 操作を可能にします。" 463 | 464 | #: Settings.ui.h:82 465 | msgid "Created by" 466 | msgstr "作者:" 467 | 468 | #: Settings.ui.h:83 469 | msgid "Webpage" 470 | msgstr "ウェブページ" 471 | 472 | #: Settings.ui.h:84 473 | msgid "" 474 | "This program comes with ABSOLUTELY NO WARRANTY.\n" 475 | "See the GNU General Public License, version 2 or later for details." 477 | msgstr "" 478 | "このプログラムに保証は一切ありません。\n" 479 | "詳しくは GNU 一般公衆ライセンス (GPL) バージョン 2 またはそれ以降のバージョン" 481 | "をご覧ください。" 482 | 483 | #: Settings.ui.h:86 484 | msgid "About" 485 | msgstr "情報" 486 | 487 | #: Settings.ui.h:87 488 | msgid "Customize minimum and maximum opacity values" 489 | msgstr "不透明度の最小値と最大値の設定" 490 | 491 | #: Settings.ui.h:88 492 | msgid "Minimum opacity" 493 | msgstr "最小不透明度" 494 | 495 | #: Settings.ui.h:89 496 | msgid "Maximum opacity" 497 | msgstr "最大不透明度" 498 | 499 | #: Settings.ui.h:90 500 | msgid "Number overlay" 501 | msgstr "番号の表示" 502 | 503 | #: Settings.ui.h:91 504 | msgid "" 505 | "Temporarily show the application numbers over the icons, corresponding to " 506 | "the shortcut." 507 | msgstr "" 508 | "ショートカットキーが押されたときに、アイコン上にアプリケーション番号を一時的" 509 | "に表示します。" 510 | 511 | #: Settings.ui.h:92 512 | msgid "Show the dock if it is hidden" 513 | msgstr "ドックが非表示なら一時的に表示" 514 | 515 | #: Settings.ui.h:93 516 | msgid "" 517 | "If using autohide, the dock will appear for a short time when triggering the " 518 | "shortcut." 519 | msgstr "" 520 | "ドックが表示されていない状態のとき、ショーカットキーで一時的にドックを表示し" 521 | "ます。" 522 | 523 | #: Settings.ui.h:94 524 | msgid "Shortcut for the options above" 525 | msgstr "上記設定のためのショートカットキー" 526 | 527 | #: Settings.ui.h:95 528 | msgid "Syntax: , , , " 529 | msgstr "表記法: , , , " 530 | 531 | #: Settings.ui.h:96 532 | msgid "Hide timeout (s)" 533 | msgstr "非表示までのタイムアウト (秒)" 534 | 535 | #: Settings.ui.h:97 536 | msgid "Show the dock by mouse hover on the screen edge." 537 | msgstr "" 538 | "ドックを表示したいとき、ポインターを画面端に移動するとドックが表示されます。" 539 | 540 | #: Settings.ui.h:98 541 | msgid "Autohide" 542 | msgstr "オンデマンド表示" 543 | 544 | #: Settings.ui.h:99 545 | msgid "Push to show: require pressure to show the dock" 546 | msgstr "" 547 | "押し込んで表示 (画面外にポインターを移動するようにマウスを動かして表示)" 548 | 549 | #: Settings.ui.h:100 550 | msgid "Enable in fullscreen mode" 551 | msgstr "フルスクリーンモード時でも表示" 552 | 553 | #: Settings.ui.h:101 554 | msgid "Show the dock when it doesn't obstruct application windows." 555 | msgstr "" 556 | "ドックを常に表示しますが、アプリケーションウィンドウと重なるときは表示しませ" 557 | "ん。" 558 | 559 | #: Settings.ui.h:102 560 | msgid "Dodge windows" 561 | msgstr "ウィンドウ重なり防止" 562 | 563 | #: Settings.ui.h:103 564 | msgid "All windows" 565 | msgstr "すべてのウィンドウが対象" 566 | 567 | #: Settings.ui.h:104 568 | msgid "Only focused application's windows" 569 | msgstr "フォーカスされたアプリケーションのウィンドウが対象" 570 | 571 | #: Settings.ui.h:105 572 | msgid "Only maximized windows" 573 | msgstr "最大化されたウィンドウが対象" 574 | 575 | #: Settings.ui.h:106 576 | msgid "Animation duration (s)" 577 | msgstr "アニメーション表示時間 (秒)" 578 | 579 | #: Settings.ui.h:107 580 | msgid "Show timeout (s)" 581 | msgstr "表示までのタイムアウト (秒)" 582 | 583 | #: Settings.ui.h:108 584 | msgid "Pressure threshold" 585 | msgstr "押し込み量 (ピクセル)" 586 | -------------------------------------------------------------------------------- /po/nb.po: -------------------------------------------------------------------------------- 1 | # Norwegian Bokmål translation for Dash to Dock. 2 | # Copyright (C) 2018 Michele 3 | # This file is distributed under the same license as the dash-to-dock package. 4 | # Harald H. , 2018. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: Dash-to-Dock\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2018-02-28 09:47+0100\n" 11 | "PO-Revision-Date: 2018-03-02 11:02+0100\n" 12 | "Language-Team: \n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "X-Generator: Poedit 1.8.7.1\n" 17 | "Last-Translator: Harald H. \n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | "Language: nb\n" 20 | 21 | #: prefs.js:131 22 | msgid "Primary monitor" 23 | msgstr "Primærskjerm" 24 | 25 | #: prefs.js:140 prefs.js:147 26 | msgid "Secondary monitor " 27 | msgstr "Sekundærskjerm" 28 | 29 | #: prefs.js:172 Settings.ui.h:26 30 | msgid "Right" 31 | msgstr "Høyre" 32 | 33 | #: prefs.js:173 Settings.ui.h:23 34 | msgid "Left" 35 | msgstr "Venstre" 36 | 37 | #: prefs.js:223 38 | msgid "Intelligent autohide customization" 39 | msgstr "Tilpass intelligent autoskjul" 40 | 41 | #: prefs.js:230 prefs.js:415 prefs.js:472 42 | msgid "Reset to defaults" 43 | msgstr "Tilbakestill til standard" 44 | 45 | #: prefs.js:408 46 | msgid "Show dock and application numbers" 47 | msgstr "Vis dokk og programnumre" 48 | 49 | #: prefs.js:465 50 | msgid "Customize middle-click behavior" 51 | msgstr "Tilpass oppførsel for mellomklikk" 52 | 53 | #: prefs.js:548 54 | msgid "Customize running indicators" 55 | msgstr "Tilpass kjørende indikatorer" 56 | 57 | #: prefs.js:662 58 | #: Settings.ui.h:70 59 | msgid "Customize opacity" 60 | msgstr "Tilpass gjennomsiktighet" 61 | 62 | #: appIcons.js:763 63 | msgid "All Windows" 64 | msgstr "Alle vinduer" 65 | 66 | #. Translators: %s is "Settings", which is automatically translated. You 67 | #. can also translate the full message if this fits better your language. 68 | #: appIcons.js:1069 69 | #, javascript-format 70 | msgid "Dash to Dock %s" 71 | msgstr "Dash to Dock %s" 72 | 73 | #: Settings.ui.h:1 74 | msgid "" 75 | "When set to minimize, double clicking minimizes all the windows of the " 76 | "application." 77 | msgstr "" 78 | "Når satt til minimer vil dobbeltklikking minimere alle åpne instanser av " 79 | "programmet." 80 | 81 | #: Settings.ui.h:2 82 | msgid "Shift+Click action" 83 | msgstr "Handling for Shift + klikk" 84 | 85 | #: Settings.ui.h:3 86 | msgid "Raise window" 87 | msgstr "Fremhev vindu" 88 | 89 | #: Settings.ui.h:4 90 | msgid "Minimize window" 91 | msgstr "Minimer vindu" 92 | 93 | #: Settings.ui.h:5 94 | msgid "Launch new instance" 95 | msgstr "Åpne ny instans" 96 | 97 | #: Settings.ui.h:6 98 | msgid "Cycle through windows" 99 | msgstr "Veksle mellom vinduer" 100 | 101 | #: Settings.ui.h:7 102 | msgid "Minimize or overview" 103 | msgstr "Minimer eller oversikt" 104 | 105 | #: Settings.ui.h:8 106 | msgid "Show window previews" 107 | msgstr "Vis forhåndsvisning" 108 | 109 | #: Settings.ui.h:9 110 | msgid "Quit" 111 | msgstr "Avslutt" 112 | 113 | #: Settings.ui.h:10 114 | msgid "Behavior for Middle-Click." 115 | msgstr "Oppførsel for mellomklikk." 116 | 117 | #: Settings.ui.h:11 118 | msgid "Middle-Click action" 119 | msgstr "Mellomklikk" 120 | 121 | #: Settings.ui.h:12 122 | msgid "Behavior for Shift+Middle-Click." 123 | msgstr "Oppførsel for Shift + mellomklikk." 124 | 125 | #: Settings.ui.h:13 126 | msgid "Shift+Middle-Click action" 127 | msgstr "Shift + mellomklikk" 128 | 129 | #: Settings.ui.h:14 130 | msgid "Enable Unity7 like glossy backlit items" 131 | msgstr "Aktiver Unity7-lignende bakgrunnsglans" 132 | 133 | #: Settings.ui.h:15 134 | msgid "Use dominant color" 135 | msgstr "Bruk dominerende farge" 136 | 137 | #: Settings.ui.h:16 138 | msgid "Customize indicator style" 139 | msgstr "Tilpass indikatorstil" 140 | 141 | #: Settings.ui.h:17 142 | msgid "Color" 143 | msgstr "Farge" 144 | 145 | #: Settings.ui.h:18 146 | msgid "Border color" 147 | msgstr "Kantfarge" 148 | 149 | #: Settings.ui.h:19 150 | msgid "Border width" 151 | msgstr "Kantbredde" 152 | 153 | #: Settings.ui.h:20 154 | msgid "Show the dock on" 155 | msgstr "Vis dokken på" 156 | 157 | #: Settings.ui.h:21 158 | msgid "Show on all monitors" 159 | msgstr "Vis på alle skjermer" 160 | 161 | #: Settings.ui.h:22 162 | msgid "Position on screen" 163 | msgstr "Skjermposisjon" 164 | 165 | #: Settings.ui.h:24 166 | msgid "Bottom" 167 | msgstr "Bunn" 168 | 169 | #: Settings.ui.h:25 170 | msgid "Top" 171 | msgstr "Topp" 172 | 173 | #: Settings.ui.h:27 174 | msgid "" 175 | "Hide the dock when it obstructs a window of the current application. More " 176 | "refined settings are available." 177 | msgstr "" 178 | "Skjul dokken når den forstyrrer et aktivt programvindu. Flere innstillinger " 179 | "er tilgjengelig." 180 | 181 | #: Settings.ui.h:28 182 | msgid "Intelligent autohide" 183 | msgstr "Intelligent autoskjul" 184 | 185 | #: Settings.ui.h:29 186 | msgid "Dock size limit" 187 | msgstr "Maks dokkstørrelse" 188 | 189 | #: Settings.ui.h:30 190 | msgid "Panel mode: extend to the screen edge" 191 | msgstr "Panelmodus: strekker seg til skjermkanten" 192 | 193 | #: Settings.ui.h:31 194 | msgid "Icon size limit" 195 | msgstr "Ikonstørrelse" 196 | 197 | #: Settings.ui.h:32 198 | msgid "Fixed icon size: scroll to reveal other icons" 199 | msgstr "Fast ikonstørrelse: rull for vise andre ikoner" 200 | 201 | #: Settings.ui.h:33 202 | msgid "Position and size" 203 | msgstr "Posisjon og størrelse" 204 | 205 | #: Settings.ui.h:34 206 | msgid "Show favorite applications" 207 | msgstr "Vis favorittprogrammer" 208 | 209 | #: Settings.ui.h:35 210 | msgid "Show running applications" 211 | msgstr "Vis kjørende programmer" 212 | 213 | #: Settings.ui.h:36 214 | msgid "Isolate workspaces" 215 | msgstr "Isoler arbeidsområder" 216 | 217 | #: Settings.ui.h:37 218 | msgid "Isolate monitors" 219 | msgstr "Isoler skjermer" 220 | 221 | #: Settings.ui.h:38 222 | msgid "Show open windows previews" 223 | msgstr "Vis forhåndsvisning av åpne vinduer" 224 | 225 | #: Settings.ui.h:39 226 | msgid "" 227 | "If disabled, these settings are accessible from gnome-tweak-tool or the " 228 | "extension website." 229 | msgstr "" 230 | "Om deaktivert er disse innstillingene tilgjengelig i gnome-tweak-tool eller " 231 | "på nettsiden for utvidelser." 232 | 233 | #: Settings.ui.h:40 234 | msgid "Show Applications icon" 235 | msgstr "Vis programmer ikon" 236 | 237 | #: Settings.ui.h:41 238 | msgid "Move the applications button at the beginning of the dock" 239 | msgstr "Flytt programmer-knappen til starten av dokken" 240 | 241 | #: Settings.ui.h:42 242 | msgid "Animate Show Applications" 243 | msgstr "Animere Vis programmer" 244 | 245 | #: Settings.ui.h:43 246 | msgid "Launchers" 247 | msgstr "Utløsere" 248 | 249 | #: Settings.ui.h:44 250 | msgid "" 251 | "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " 252 | "together with Shift and Ctrl." 253 | msgstr "" 254 | "Bruk Super+(0-9) som snarvei for å aktivere apper. Den kan også brukes i " 255 | "kombinasjon med Shift og Ctrl." 256 | 257 | #: Settings.ui.h:45 258 | msgid "Use keyboard shortcuts to activate apps" 259 | msgstr "Bruk tastatursnarveier for å åpne apper" 260 | 261 | #: Settings.ui.h:46 262 | msgid "Behaviour when clicking on the icon of a running application." 263 | msgstr "Oppførsel når du klikker på ikonet for et åpent program." 264 | 265 | #: Settings.ui.h:47 266 | msgid "Click action" 267 | msgstr "Klikkhandling" 268 | 269 | #: Settings.ui.h:48 270 | msgid "Minimize" 271 | msgstr "Minimer" 272 | 273 | #: Settings.ui.h:49 274 | msgid "Behaviour when scrolling on the icon of an application." 275 | msgstr "Oppførsel ved rulling over et programikon." 276 | 277 | #: Settings.ui.h:50 278 | msgid "Scroll action" 279 | msgstr "Rullehandling" 280 | 281 | #: Settings.ui.h:51 282 | msgid "Do nothing" 283 | msgstr "Ikke gjør noe" 284 | 285 | #: Settings.ui.h:52 286 | msgid "Switch workspace" 287 | msgstr "Bytt arbeidsområde" 288 | 289 | #: Settings.ui.h:53 290 | msgid "Behavior" 291 | msgstr "Oppførsel" 292 | 293 | #: Settings.ui.h:54 294 | msgid "" 295 | "Few customizations meant to integrate the dock with the default GNOME theme. " 296 | "Alternatively, specific options can be enabled below." 297 | msgstr "" 298 | "Enkelte tilpasninger som forsøker å integrere dokken med det standard GNOME-" 299 | "temaet. Alternativt kan bestemte valg aktiveres nedenfor." 300 | 301 | #: Settings.ui.h:55 302 | msgid "Use built-in theme" 303 | msgstr "Bruk innebygget tema" 304 | 305 | #: Settings.ui.h:56 306 | msgid "Save space reducing padding and border radius." 307 | msgstr "Spar plass ved å redusere utfylling og kant-radius." 308 | 309 | #: Settings.ui.h:57 310 | msgid "Shrink the dash" 311 | msgstr "Krymp dash" 312 | 313 | #: Settings.ui.h:58 314 | msgid "Customize windows counter indicators" 315 | msgstr "Tilpass vinduenes nummer-indikatorer" 316 | 317 | #: Settings.ui.h:59 318 | msgid "Default" 319 | msgstr "Standard" 320 | 321 | #: Settings.ui.h:60 322 | msgid "Dots" 323 | msgstr "Prikker" 324 | 325 | #: Settings.ui.h:61 326 | msgid "Squares" 327 | msgstr "Firkanter" 328 | 329 | #: Settings.ui.h:62 330 | msgid "Dashes" 331 | msgstr "Streker" 332 | 333 | #: Settings.ui.h:63 334 | msgid "Segmented" 335 | msgstr "Segmentert" 336 | 337 | #: Settings.ui.h:64 338 | msgid "Solid" 339 | msgstr "Solid" 340 | 341 | #: Settings.ui.h:65 342 | msgid "Ciliora" 343 | msgstr "Ciliora" 344 | 345 | #: Settings.ui.h:66 346 | msgid "Metro" 347 | msgstr "Metro" 348 | 349 | #: Settings.ui.h:67 350 | msgid "Set the background color for the dash." 351 | msgstr "Avgjør bakgrunnsfargen." 352 | 353 | #: Settings.ui.h:68 354 | msgid "Customize the dash color" 355 | msgstr "Tilpass fargen" 356 | 357 | #: Settings.ui.h:69 358 | msgid "Tune the dash background opacity." 359 | msgstr "Justere bakgrunnens gjennomsiktighet." 360 | 361 | #: Settings.ui.h:71 362 | msgid "Fixed" 363 | msgstr "Fast" 364 | 365 | #: Settings.ui.h:72 366 | msgid "Adaptive" 367 | msgstr "Adaptiv" 368 | 369 | #: Settings.ui.h:73 370 | msgid "Dynamic" 371 | msgstr "Dynamisk" 372 | 373 | #: Settings.ui.h:74 374 | msgid "Opacity" 375 | msgstr "Gjennomsiktighet" 376 | 377 | #: Settings.ui.h:75 378 | msgid "Force straight corner\n" 379 | msgstr "Tving rette hjørner\n" 380 | 381 | #: Settings.ui.h:77 382 | msgid "Appearance" 383 | msgstr "Utseende" 384 | 385 | #: Settings.ui.h:78 386 | msgid "version: " 387 | msgstr "versjon: " 388 | 389 | #: Settings.ui.h:79 390 | msgid "Moves the dash out of the overview transforming it in a dock" 391 | msgstr "Flytter dash ut av oversikten og omformer den til en dokk" 392 | 393 | #: Settings.ui.h:80 394 | msgid "Created by" 395 | msgstr "Laget av" 396 | 397 | #: Settings.ui.h:81 398 | msgid "Webpage" 399 | msgstr "Nettside" 400 | 401 | #: Settings.ui.h:82 402 | msgid "" 403 | "This program comes with ABSOLUTELY NO WARRANTY.\n" 404 | "See the GNU General Public License, version 2 or later for details." 406 | msgstr "" 407 | "Dette programmet leveres med ABSOLUTT INGEN GARANTI.\n" 408 | "Se GNU " 409 | "General Public License, versjon 2 eller senere for detaljer." 410 | 411 | #: Settings.ui.h:84 412 | msgid "About" 413 | msgstr "Om" 414 | 415 | #: Settings.ui.h:85 416 | msgid "Customize minimum and maximum opacity values" 417 | msgstr "Tilpass verdier for minimum og maks gjennomsiktighet" 418 | 419 | #: Settings.ui.h:86 420 | msgid "Minimum opacity" 421 | msgstr "Minimum gjennomsiktighet" 422 | 423 | #: Settings.ui.h:87 424 | msgid "Maximum opacity" 425 | msgstr "Maksimum gjennomsiktighet" 426 | 427 | #: Settings.ui.h:88 428 | msgid "Number overlay" 429 | msgstr "Nummerert overlag" 430 | 431 | #: Settings.ui.h:89 432 | msgid "" 433 | "Temporarily show the application numbers over the icons, corresponding to " 434 | "the shortcut." 435 | msgstr "Midlertidig vis programnummer over ikoner, som svarer til snarveien." 436 | 437 | #: Settings.ui.h:90 438 | msgid "Show the dock if it is hidden" 439 | msgstr "Vis dokken om den er skjult" 440 | 441 | #: Settings.ui.h:91 442 | msgid "" 443 | "If using autohide, the dock will appear for a short time when triggering the " 444 | "shortcut." 445 | msgstr "" 446 | "Om autoskjul er i bruk vil dokken vises en kort stund når snarveien utløses." 447 | 448 | #: Settings.ui.h:92 449 | msgid "Shortcut for the options above" 450 | msgstr "Snarvei for valgene ovenfor" 451 | 452 | #: Settings.ui.h:93 453 | msgid "Syntax: , , , " 454 | msgstr "Syntaks: , , , " 455 | 456 | #: Settings.ui.h:94 457 | msgid "Hide timeout (s)" 458 | msgstr "Skjuleperiode (s)" 459 | 460 | #: Settings.ui.h:95 461 | msgid "Show the dock by mouse hover on the screen edge." 462 | msgstr "Vis dokken når musepekeren holdes langs skjermkanten." 463 | 464 | #: Settings.ui.h:96 465 | msgid "Autohide" 466 | msgstr "Autoskjul" 467 | 468 | #: Settings.ui.h:97 469 | msgid "Push to show: require pressure to show the dock" 470 | msgstr "Dytt for å vise: krev et økt trykk for å vise dokken" 471 | 472 | #: Settings.ui.h:98 473 | msgid "Enable in fullscreen mode" 474 | msgstr "Aktiver i fullskjermmodus" 475 | 476 | #: Settings.ui.h:99 477 | msgid "Show the dock when it doesn't obstruct application windows." 478 | msgstr "Vis dokken når den ikke forstyrrer programvinduer." 479 | 480 | #: Settings.ui.h:100 481 | msgid "Dodge windows" 482 | msgstr "Smett unna vinduer" 483 | 484 | #: Settings.ui.h:101 485 | msgid "All windows" 486 | msgstr "Alle vinduer" 487 | 488 | #: Settings.ui.h:102 489 | msgid "Only focused application's windows" 490 | msgstr "Kun fokuserte programvinduer" 491 | 492 | #: Settings.ui.h:103 493 | msgid "Only maximized windows" 494 | msgstr "Kun maksimerte programvinduer" 495 | 496 | #: Settings.ui.h:104 497 | msgid "Animation duration (s)" 498 | msgstr "Animasjonsvarighet (s)" 499 | 500 | #: Settings.ui.h:105 501 | msgid "Show timeout (s)" 502 | msgstr "Visningslengde (s)" 503 | 504 | #: Settings.ui.h:106 505 | msgid "Pressure threshold" 506 | msgstr "Trykkterskel" 507 | -------------------------------------------------------------------------------- /po/pt.po: -------------------------------------------------------------------------------- 1 | # Dash to Dock portuguese translation. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the Dash to Dock package. 4 | # Carlos Alberto Junior Spohr Poletto , 2012. 5 | # Hugo Carvalho , 2021. 6 | # 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Dash to Dock\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2019-03-06 01:57-0600\n" 12 | "PO-Revision-Date: 2021-11-06 15:25+0000\n" 13 | "Last-Translator: Hugo Carvalho \n" 14 | "Language-Team: Portuguese\n" 15 | "Language: pt\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "X-Generator: Poedit 3.0\n" 20 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 21 | 22 | #: prefs.js:264 23 | msgid "Primary monitor" 24 | msgstr "Monitor principal" 25 | 26 | #: prefs.js:273 prefs.js:280 27 | msgid "Secondary monitor " 28 | msgstr "Monitor secundário " 29 | 30 | #: prefs.js:305 Settings.ui.h:28 31 | msgid "Right" 32 | msgstr "Direita" 33 | 34 | #: prefs.js:306 Settings.ui.h:25 35 | msgid "Left" 36 | msgstr "Esquerda" 37 | 38 | #: prefs.js:356 39 | msgid "Intelligent autohide customization" 40 | msgstr "Personalização da ocultação automática inteligente" 41 | 42 | #: prefs.js:363 prefs.js:548 prefs.js:604 43 | msgid "Reset to defaults" 44 | msgstr "Repor predefinições" 45 | 46 | #: prefs.js:541 47 | msgid "Show dock and application numbers" 48 | msgstr "Mostrar os números da dock e aplicações" 49 | 50 | #: prefs.js:597 51 | msgid "Customize middle-click behavior" 52 | msgstr "Personalizar comportamento do clique do meio" 53 | 54 | #: prefs.js:680 55 | msgid "Customize running indicators" 56 | msgstr "Personalizar indicadores de execução" 57 | 58 | #: prefs.js:792 Settings.ui.h:72 59 | msgid "Customize opacity" 60 | msgstr "Personalizar opacidade" 61 | 62 | #: appIcons.js:790 63 | msgid "All Windows" 64 | msgstr "Todas as janelas" 65 | 66 | #. Translators: %s is "Settings", which is automatically translated. You 67 | #. can also translate the full message if this fits better your language. 68 | #: appIcons.js:1092 69 | #, javascript-format 70 | msgid "Dash to Dock %s" 71 | msgstr "%s do Dash to Dock" 72 | 73 | #: Settings.ui.h:1 74 | msgid "" 75 | "When set to minimize, double clicking minimizes all the windows of the " 76 | "application." 77 | msgstr "" 78 | "Quando definido para minimizar, o duplo clique minimiza todas as janelas da " 79 | "aplicação." 80 | 81 | #: Settings.ui.h:2 82 | msgid "Shift+Click action" 83 | msgstr "Ação de Shift+Clique" 84 | 85 | #: Settings.ui.h:3 86 | msgid "Raise window" 87 | msgstr "Levantar janela" 88 | 89 | #: Settings.ui.h:4 90 | msgid "Minimize window" 91 | msgstr "Minimizar janela" 92 | 93 | #: Settings.ui.h:5 94 | msgid "Launch new instance" 95 | msgstr "Abrir nova janela" 96 | 97 | #: Settings.ui.h:6 98 | msgid "Cycle through windows" 99 | msgstr "Percorrer janelas" 100 | 101 | #: Settings.ui.h:7 102 | msgid "Minimize or overview" 103 | msgstr "Minimizar ou antever" 104 | 105 | #: Settings.ui.h:8 106 | msgid "Show window previews" 107 | msgstr "Mostrar antevisão das janelas abertas" 108 | 109 | #: Settings.ui.h:9 110 | msgid "Minimize or show previews" 111 | msgstr "Minimizar ou antever" 112 | 113 | #: Settings.ui.h:10 114 | msgid "Focus or show previews" 115 | msgstr "Focar ou antever" 116 | 117 | #: Settings.ui.h:11 118 | msgid "Quit" 119 | msgstr "Sair" 120 | 121 | #: Settings.ui.h:12 122 | msgid "Behavior for Middle-Click." 123 | msgstr "Comportamento do clique do meio." 124 | 125 | #: Settings.ui.h:13 126 | msgid "Middle-Click action" 127 | msgstr "Ação do clique do meio" 128 | 129 | #: Settings.ui.h:14 130 | msgid "Behavior for Shift+Middle-Click." 131 | msgstr "Comportamento do Shift+Clique do meio." 132 | 133 | #: Settings.ui.h:15 134 | msgid "Shift+Middle-Click action" 135 | msgstr "Ação do Shift+Clique do meio" 136 | 137 | #: Settings.ui.h:16 138 | msgid "Enable Unity7 like glossy backlit items" 139 | msgstr "Usar efeito polido no fundo (estilo Unity7)" 140 | 141 | #: Settings.ui.h:17 142 | msgid "Use dominant color" 143 | msgstr "Usar cor dominante" 144 | 145 | #: Settings.ui.h:18 146 | msgid "Customize indicator style" 147 | msgstr "Personalizar indicadores" 148 | 149 | #: Settings.ui.h:19 150 | msgid "Color" 151 | msgstr "Cor" 152 | 153 | #: Settings.ui.h:20 154 | msgid "Border color" 155 | msgstr "Cor da borda" 156 | 157 | #: Settings.ui.h:21 158 | msgid "Border width" 159 | msgstr "Largura da borda" 160 | 161 | #: Settings.ui.h:22 162 | msgid "Show the dock on" 163 | msgstr "Mostrar a dock em" 164 | 165 | #: Settings.ui.h:23 166 | msgid "Show on all monitors" 167 | msgstr "Mostrar em todos os monitores" 168 | 169 | #: Settings.ui.h:24 170 | msgid "Position on screen" 171 | msgstr "Posição no ecrã" 172 | 173 | #: Settings.ui.h:26 174 | msgid "Bottom" 175 | msgstr "Em baixo" 176 | 177 | #: Settings.ui.h:27 178 | msgid "Top" 179 | msgstr "Em cima" 180 | 181 | #: Settings.ui.h:29 182 | msgid "" 183 | "Hide the dock when it obstructs a window of the current application. More " 184 | "refined settings are available." 185 | msgstr "" 186 | "Ocultar a dock quando esta obstruir uma janela da aplicação atual. Estão " 187 | "disponíveis definições mais detalhadas." 188 | 189 | #: Settings.ui.h:30 190 | msgid "Intelligent autohide" 191 | msgstr "Ocultação inteligente" 192 | 193 | #: Settings.ui.h:31 194 | msgid "Dock size limit" 195 | msgstr "Limite do tamanho da dock" 196 | 197 | #: Settings.ui.h:32 198 | msgid "Panel mode: extend to the screen edge" 199 | msgstr "Modo painel: expandir até ao limite do ecrã" 200 | 201 | #: Settings.ui.h:33 202 | msgid "Icon size limit" 203 | msgstr "Limite do tamanho dos ícones" 204 | 205 | #: Settings.ui.h:34 206 | msgid "Fixed icon size: scroll to reveal other icons" 207 | msgstr "Tamanho fixo dos ícones: scroll para revelar outros ícones" 208 | 209 | #: Settings.ui.h:35 210 | msgid "Position and size" 211 | msgstr "Posição e dimensão" 212 | 213 | #: Settings.ui.h:36 214 | msgid "Show favorite applications" 215 | msgstr "Mostrar aplicações favoritas" 216 | 217 | #: Settings.ui.h:37 218 | msgid "Show running applications" 219 | msgstr "Mostrar aplicações em execução" 220 | 221 | #: Settings.ui.h:38 222 | msgid "Isolate workspaces" 223 | msgstr "Isolar áreas de trabalho" 224 | 225 | #: Settings.ui.h:39 226 | msgid "Isolate monitors" 227 | msgstr "Isolar monitores" 228 | 229 | #: Settings.ui.h:40 230 | msgid "Show open windows previews" 231 | msgstr "Mostrar antevisão das janelas abertas" 232 | 233 | #: Settings.ui.h:41 234 | msgid "" 235 | "If disabled, these settings are accessible from gnome-tweak-tool or the " 236 | "extension website." 237 | msgstr "" 238 | "Se desativadas, estas definições estão acessíveis através do gnome-tweak-" 239 | "tool ou no site das extensões." 240 | 241 | #: Settings.ui.h:42 242 | msgid "Show Applications icon" 243 | msgstr "Mostrar ícone das Aplicações" 244 | 245 | #: Settings.ui.h:43 246 | msgid "Move the applications button at the beginning of the dock" 247 | msgstr "Mover o botão das aplicações para o início da dock" 248 | 249 | #: Settings.ui.h:44 250 | msgid "Animate Show Applications" 251 | msgstr "Animar Mostrar aplicações" 252 | 253 | #: Settings.ui.h:45 254 | msgid "Launchers" 255 | msgstr "Lançadores" 256 | 257 | #: Settings.ui.h:46 258 | msgid "" 259 | "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " 260 | "together with Shift and Ctrl." 261 | msgstr "" 262 | "Usar Super+(0-9) como atalhos para as aplicações. Também pode ser usado com " 263 | "Shift e Ctrl." 264 | 265 | #: Settings.ui.h:47 266 | msgid "Use keyboard shortcuts to activate apps" 267 | msgstr "Usar atalhos de teclado para aplicações" 268 | 269 | #: Settings.ui.h:48 270 | msgid "Behaviour when clicking on the icon of a running application." 271 | msgstr "Comportamento do clique no ícone de uma aplicação em execução." 272 | 273 | #: Settings.ui.h:49 274 | msgid "Click action" 275 | msgstr "Ação do clique" 276 | 277 | #: Settings.ui.h:50 278 | msgid "Minimize" 279 | msgstr "Minimizar" 280 | 281 | #: Settings.ui.h:51 282 | msgid "Behaviour when scrolling on the icon of an application." 283 | msgstr "Comportamento do scroll no ícone de uma aplicação." 284 | 285 | #: Settings.ui.h:52 286 | msgid "Scroll action" 287 | msgstr "Ação do scroll" 288 | 289 | #: Settings.ui.h:53 290 | msgid "Do nothing" 291 | msgstr "Não fazer nada" 292 | 293 | #: Settings.ui.h:54 294 | msgid "Switch workspace" 295 | msgstr "Alternar espaço de trabalho" 296 | 297 | #: Settings.ui.h:55 298 | msgid "Behavior" 299 | msgstr "Comportamento" 300 | 301 | #: Settings.ui.h:56 302 | msgid "" 303 | "Few customizations meant to integrate the dock with the default GNOME theme. " 304 | "Alternatively, specific options can be enabled below." 305 | msgstr "" 306 | "Menos opções visando a integração da dock com o tema predefinido do GNOME. " 307 | "Alternativamente, opções mais detalhadas podem ser ativadas abaixo." 308 | 309 | #: Settings.ui.h:57 310 | msgid "Use built-in theme" 311 | msgstr "Usar tema embutido" 312 | 313 | #: Settings.ui.h:58 314 | msgid "Save space reducing padding and border radius." 315 | msgstr "Poupar espaço reduzindo o preenchimento e as bordas." 316 | 317 | #: Settings.ui.h:59 318 | msgid "Shrink the dash" 319 | msgstr "Encolher a dock" 320 | 321 | #: Settings.ui.h:60 322 | msgid "Customize windows counter indicators" 323 | msgstr "Mostrar indicador com contagem de janelas" 324 | 325 | #: Settings.ui.h:61 326 | msgid "Default" 327 | msgstr "Predefinição" 328 | 329 | #: Settings.ui.h:62 330 | msgid "Dots" 331 | msgstr "Pontos" 332 | 333 | #: Settings.ui.h:63 334 | msgid "Squares" 335 | msgstr "Quadrados" 336 | 337 | #: Settings.ui.h:64 338 | msgid "Dashes" 339 | msgstr "Linhas" 340 | 341 | #: Settings.ui.h:65 342 | msgid "Segmented" 343 | msgstr "Segmentado" 344 | 345 | #: Settings.ui.h:66 346 | msgid "Solid" 347 | msgstr "Sólido" 348 | 349 | #: Settings.ui.h:67 350 | msgid "Ciliora" 351 | msgstr "Ciliora" 352 | 353 | #: Settings.ui.h:68 354 | msgid "Metro" 355 | msgstr "Metro" 356 | 357 | #: Settings.ui.h:69 358 | msgid "Set the background color for the dash." 359 | msgstr "Definir a cor de fundo do painel." 360 | 361 | #: Settings.ui.h:70 362 | msgid "Customize the dash color" 363 | msgstr "Personalizar a cor do painel" 364 | 365 | #: Settings.ui.h:71 366 | msgid "Tune the dash background opacity." 367 | msgstr "Afinar a cor de fundo do painel." 368 | 369 | #: Settings.ui.h:73 370 | msgid "Fixed" 371 | msgstr "Fixo" 372 | 373 | #: Settings.ui.h:74 374 | msgid "Dynamic" 375 | msgstr "Dinâmico" 376 | 377 | #: Settings.ui.h:75 378 | msgid "Opacity" 379 | msgstr "Opacidade" 380 | 381 | #: Settings.ui.h:76 382 | msgid "Force straight corner\n" 383 | msgstr "Forçar cantos retos\n" 384 | 385 | #: Settings.ui.h:78 386 | msgid "Appearance" 387 | msgstr "Aparência" 388 | 389 | #: Settings.ui.h:79 390 | msgid "version: " 391 | msgstr "versão: " 392 | 393 | #: Settings.ui.h:80 394 | msgid "Moves the dash out of the overview transforming it in a dock" 395 | msgstr "Retira o painel da vista de Atividades, tornando-o numa dock" 396 | 397 | #: Settings.ui.h:81 398 | msgid "Created by" 399 | msgstr "Criado por" 400 | 401 | #: Settings.ui.h:82 402 | msgid "Webpage" 403 | msgstr "Página web" 404 | 405 | #: Settings.ui.h:83 406 | msgid "" 407 | "This program comes with ABSOLUTELY NO WARRANTY.\n" 408 | "See the GNU General Public License, version 2 or later for details." 410 | msgstr "" 411 | "Este programa é distribuído SEM QUALQUER GARANTIA.\n" 412 | "Veja a Licença Pública Geral GNU, versão 2 ou superior para mais detalhes." 415 | 416 | #: Settings.ui.h:85 417 | msgid "About" 418 | msgstr "Acerca" 419 | 420 | #: Settings.ui.h:86 421 | msgid "Customize minimum and maximum opacity values" 422 | msgstr "Personalizar valor mínimo e máximo da opacidade" 423 | 424 | #: Settings.ui.h:87 425 | msgid "Minimum opacity" 426 | msgstr "Opacidade mínima" 427 | 428 | #: Settings.ui.h:88 429 | msgid "Maximum opacity" 430 | msgstr "Opacidade máxima" 431 | 432 | #: Settings.ui.h:89 433 | msgid "Number overlay" 434 | msgstr "Números sobrepostos" 435 | 436 | #: Settings.ui.h:90 437 | msgid "" 438 | "Temporarily show the application numbers over the icons, corresponding to " 439 | "the shortcut." 440 | msgstr "" 441 | "Mostrar temporariamente o número das aplicações sobre os ícones, " 442 | "correspondendo os atalhos." 443 | 444 | #: Settings.ui.h:91 445 | msgid "Show the dock if it is hidden" 446 | msgstr "Mostrar a doca se estiver ocultada" 447 | 448 | #: Settings.ui.h:92 449 | msgid "" 450 | "If using autohide, the dock will appear for a short time when triggering the " 451 | "shortcut." 452 | msgstr "" 453 | "Se a ocultação inteligente estiver ativa, a dock aparecerá temporariamente " 454 | "ao utilizar o atalho." 455 | 456 | #: Settings.ui.h:93 457 | msgid "Shortcut for the options above" 458 | msgstr "Atalho para as opções acima" 459 | 460 | #: Settings.ui.h:94 461 | msgid "Syntax: , , , " 462 | msgstr "Síntaxe: , , , " 463 | 464 | #: Settings.ui.h:95 465 | msgid "Hide timeout (s)" 466 | msgstr "Tempo limite para ocultar (s)" 467 | 468 | #: Settings.ui.h:96 469 | msgid "Show the dock by mouse hover on the screen edge." 470 | msgstr "Mostrar a dock ao passar o rato na margem do ecrã." 471 | 472 | #: Settings.ui.h:97 473 | msgid "Autohide" 474 | msgstr "Ocultação inteligente" 475 | 476 | #: Settings.ui.h:98 477 | msgid "Push to show: require pressure to show the dock" 478 | msgstr "Pressionar para mostrar: requerer pressão para mostrar a dock" 479 | 480 | #: Settings.ui.h:99 481 | msgid "Enable in fullscreen mode" 482 | msgstr "Ativar no modo de ecrã inteiro" 483 | 484 | #: Settings.ui.h:100 485 | msgid "Show the dock when it doesn't obstruct application windows." 486 | msgstr "Mostrar a dock quando esta não obstrui as janelas." 487 | 488 | #: Settings.ui.h:101 489 | msgid "Dodge windows" 490 | msgstr "Esquivar as janelas" 491 | 492 | #: Settings.ui.h:102 493 | msgid "All windows" 494 | msgstr "Todas as janelas" 495 | 496 | #: Settings.ui.h:103 497 | msgid "Only focused application's windows" 498 | msgstr "Apenas janelas da aplicação focada" 499 | 500 | #: Settings.ui.h:104 501 | msgid "Only maximized windows" 502 | msgstr "Apenas janelas maximizadas" 503 | 504 | #: Settings.ui.h:105 505 | msgid "Animation duration (s)" 506 | msgstr "Tempo da animação (s)" 507 | 508 | #: Settings.ui.h:106 509 | msgid "Show timeout (s)" 510 | msgstr "Mostrar tempo limite (s)" 511 | 512 | #: Settings.ui.h:107 513 | msgid "Pressure threshold" 514 | msgstr "Limite de pressão" 515 | -------------------------------------------------------------------------------- /po/sk.po: -------------------------------------------------------------------------------- 1 | # Slovak translation of dash-to-dock. 2 | # Copyright (C) 2016 Dušan Kazik 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # Dušan Kazik , 2015, 2016. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: \n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-06-04 12:35+0100\n" 11 | "PO-Revision-Date: 2019-09-23 10:49+0200\n" 12 | "Last-Translator: Jose Riha \n" 13 | "Language-Team: \n" 14 | "Language: sk\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: Poedit 2.2.1\n" 19 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" 20 | 21 | #: prefs.js:113 22 | msgid "Primary monitor" 23 | msgstr "Hlavnom monitore" 24 | 25 | #: prefs.js:122 prefs.js:129 26 | msgid "Secondary monitor " 27 | msgstr "Vedľajšom monitore " 28 | 29 | #: prefs.js:154 Settings.ui.h:29 30 | msgid "Right" 31 | msgstr "Vpravo" 32 | 33 | #: prefs.js:155 Settings.ui.h:26 34 | msgid "Left" 35 | msgstr "Vľavo" 36 | 37 | #: prefs.js:205 38 | msgid "Intelligent autohide customization" 39 | msgstr "Prispôsobenie inteligentného automatického skrývania" 40 | 41 | #: prefs.js:212 prefs.js:393 prefs.js:450 42 | msgid "Reset to defaults" 43 | msgstr "Obnoviť pôvodné" 44 | 45 | #: prefs.js:386 46 | msgid "Show dock and application numbers" 47 | msgstr "Zobraziť dok a čísla aplikácii" 48 | 49 | #: prefs.js:443 50 | msgid "Customize middle-click behavior" 51 | msgstr "Prispôsobenie správania prostredného tlačidla" 52 | 53 | #: prefs.js:514 54 | msgid "Customize running indicators" 55 | msgstr "Prispôsobenie indikátorov spustených aplikácií" 56 | 57 | #: appIcons.js:804 58 | msgid "All Windows" 59 | msgstr "Všetky okná" 60 | 61 | #: Settings.ui.h:1 62 | msgid "Customize indicator style" 63 | msgstr "Prispôsobenie štýlu indikátorov" 64 | 65 | #: Settings.ui.h:2 66 | msgid "Color" 67 | msgstr "Farba" 68 | 69 | #: Settings.ui.h:3 70 | msgid "Border color" 71 | msgstr "Farba okraja" 72 | 73 | #: Settings.ui.h:4 74 | msgid "Border width" 75 | msgstr "Šírka okraja" 76 | 77 | #: Settings.ui.h:5 78 | msgid "Number overlay" 79 | msgstr "Čísla aplikácii" 80 | 81 | #: Settings.ui.h:6 82 | msgid "" 83 | "Temporarily show the application numbers over the icons, corresponding to " 84 | "the shortcut." 85 | msgstr "Krátko zobraziť čísla aplikácii zodpovedajúce klávesovej skratke." 86 | 87 | #: Settings.ui.h:7 88 | msgid "Show the dock if it is hidden" 89 | msgstr "Zobraziť dok, ak je skrytý" 90 | 91 | #: Settings.ui.h:8 92 | msgid "" 93 | "If using autohide, the dock will appear for a short time when triggering the " 94 | "shortcut." 95 | msgstr "" 96 | "Ak je zapnuté automatické skrývanie, stlačením klávesovej skratky sa dok na " 97 | "okamih zobrazí." 98 | 99 | #: Settings.ui.h:9 100 | msgid "Shortcut for the options above" 101 | msgstr "Klávesová skratka" 102 | 103 | #: Settings.ui.h:10 104 | msgid "Syntax: , , , " 105 | msgstr "Syntax: , , , " 106 | 107 | #: Settings.ui.h:11 108 | msgid "Hide timeout (s)" 109 | msgstr "Časový limit na skrytie (s)" 110 | 111 | #: Settings.ui.h:12 112 | msgid "" 113 | "When set to minimize, double clicking minimizes all the windows of the " 114 | "application." 115 | msgstr "" 116 | "Keď je nastavené na minimalizovanie, dvojklik minimalizuje všetky okná " 117 | "aplikácie." 118 | 119 | #: Settings.ui.h:13 120 | msgid "Shift+Click action" 121 | msgstr "Akcia Shift+Kliknutie" 122 | 123 | #: Settings.ui.h:14 124 | msgid "Raise window" 125 | msgstr "Preniesť okno do popredia" 126 | 127 | #: Settings.ui.h:15 128 | msgid "Minimize window" 129 | msgstr "Minimalizovať okno" 130 | 131 | #: Settings.ui.h:16 132 | msgid "Launch new instance" 133 | msgstr "Spustiť novú inštanciu" 134 | 135 | #: Settings.ui.h:17 136 | msgid "Cycle through windows" 137 | msgstr "Striedať okná" 138 | 139 | #: Settings.ui.h:18 140 | msgid "Quit" 141 | msgstr "Ukončiť" 142 | 143 | #: Settings.ui.h:19 144 | msgid "Behavior for Middle-Click." 145 | msgstr "Správanie stredného tlačidla myši." 146 | 147 | #: Settings.ui.h:20 148 | msgid "Middle-Click action" 149 | msgstr "Akcia po kliknutí stredným tlačidlom" 150 | 151 | #: Settings.ui.h:21 152 | msgid "Behavior for Shift+Middle-Click." 153 | msgstr "Správanie stredného tlačidla pri stlačenom Shifte." 154 | 155 | #: Settings.ui.h:22 156 | msgid "Shift+Middle-Click action" 157 | msgstr "Akcia pri Shift+Klik stredným tlačidlom myši" 158 | 159 | #: Settings.ui.h:23 160 | msgid "Show the dock on" 161 | msgstr "Zobraziť dok na" 162 | 163 | #: Settings.ui.h:24 164 | msgid "Show on all monitors" 165 | msgstr "Zobraziť na všetkých monitoroch" 166 | 167 | #: Settings.ui.h:25 168 | msgid "Position on screen" 169 | msgstr "Pozícia na obrazovke" 170 | 171 | #: Settings.ui.h:27 172 | msgid "Bottom" 173 | msgstr "Na spodku" 174 | 175 | #: Settings.ui.h:28 176 | msgid "Top" 177 | msgstr "Na vrchu" 178 | 179 | #: Settings.ui.h:30 180 | msgid "" 181 | "Hide the dock when it obstructs a window of the current application. More " 182 | "refined settings are available." 183 | msgstr "" 184 | "Skryť dok, keď zasahuje do okna aktuálnej aplikácie. Sú dostupné " 185 | "podrobnejšie nastavenia." 186 | 187 | #: Settings.ui.h:31 188 | msgid "Intelligent autohide" 189 | msgstr "Inteligentné automatické skrývanie" 190 | 191 | #: Settings.ui.h:32 192 | msgid "Dock size limit" 193 | msgstr "Limit veľkosti doku" 194 | 195 | #: Settings.ui.h:33 196 | msgid "Panel mode: extend to the screen edge" 197 | msgstr "Režim panelu: roztiahnutie ku hranám obrazovky" 198 | 199 | #: Settings.ui.h:34 200 | msgid "Icon size limit" 201 | msgstr "Limit veľkosti ikon" 202 | 203 | #: Settings.ui.h:35 204 | msgid "Fixed icon size: scroll to reveal other icons" 205 | msgstr "Pevná veľkosť ikon: rolovaním odhalíte ostatné ikony" 206 | 207 | #: Settings.ui.h:36 208 | msgid "Position and size" 209 | msgstr "Pozícia a veľkosť" 210 | 211 | #: Settings.ui.h:37 212 | msgid "Show favorite applications" 213 | msgstr "Zobraziť obľúbené aplikácie" 214 | 215 | #: Settings.ui.h:38 216 | msgid "Show running applications" 217 | msgstr "Zobraziť spustené aplikácie" 218 | 219 | #: Settings.ui.h:39 220 | msgid "Isolate workspaces" 221 | msgstr "Oddelené pracovné priestory" 222 | 223 | #: Settings.ui.h:40 224 | msgid "Show open windows previews" 225 | msgstr "Zobraziť náhľady otvorených okien" 226 | 227 | #: Settings.ui.h:41 228 | msgid "" 229 | "If disabled, these settings are accessible from gnome-tweak-tool or the " 230 | "extension website." 231 | msgstr "" 232 | "Ak je voľba zakázaná, tieto nastavenia sú dostupné z nástroja Vyladenie " 233 | "alebo webovej stránky rozšírenia." 234 | 235 | #: Settings.ui.h:42 236 | msgid "Show Applications icon" 237 | msgstr "Zobraziť ikonu Aplikácie" 238 | 239 | #: Settings.ui.h:43 240 | msgid "Move the applications button at the beginning of the dock" 241 | msgstr "Premiestni tlačidlo aplikácií na začiatok doku" 242 | 243 | #: Settings.ui.h:44 244 | msgid "Animate Show Applications" 245 | msgstr "Animovať položku Zobraziť aplikácie" 246 | 247 | #: Settings.ui.h:45 248 | msgid "Launchers" 249 | msgstr "Spúšťače" 250 | 251 | #: Settings.ui.h:46 252 | msgid "" 253 | "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " 254 | "together with Shift and Ctrl." 255 | msgstr "" 256 | "Povoliť aktiváciu aplikácií klávesovými skratkami Super+(0+9). Túto skratku " 257 | "je možné tiež použiť so stlačeným Shiftom a Ctrl." 258 | 259 | #: Settings.ui.h:47 260 | msgid "Use keyboard shortcuts to activate apps" 261 | msgstr "Použiť klávesovú skratku na aktiváciu aplikácií" 262 | 263 | #: Settings.ui.h:48 264 | msgid "Behaviour when clicking on the icon of a running application." 265 | msgstr "Správanie pri kliknutí na ikonu spustenej aplikácie." 266 | 267 | #: Settings.ui.h:49 268 | msgid "Click action" 269 | msgstr "Akcia po kliknutí" 270 | 271 | #: Settings.ui.h:50 272 | msgid "Minimize" 273 | msgstr "Minimalizovať" 274 | 275 | #: Settings.ui.h:51 276 | msgid "Minimize or overview" 277 | msgstr "Minimalizovať okno alebo zobraziť prehľad" 278 | 279 | #: Settings.ui.h:52 280 | msgid "Behaviour when scrolling on the icon of an application." 281 | msgstr "Správanie pri použití kolieska myši na ikone aplikácie." 282 | 283 | #: Settings.ui.h:53 284 | msgid "Scroll action" 285 | msgstr "Akcia pri použití kolieska myši" 286 | 287 | #: Settings.ui.h:54 288 | msgid "Do nothing" 289 | msgstr "Nevykonať nič" 290 | 291 | #: Settings.ui.h:55 292 | msgid "Switch workspace" 293 | msgstr "Prepnúť pracovnú plochu" 294 | 295 | #: Settings.ui.h:56 296 | msgid "Behavior" 297 | msgstr "Správanie" 298 | 299 | #: Settings.ui.h:57 300 | msgid "" 301 | "Few customizations meant to integrate the dock with the default GNOME theme. " 302 | "Alternatively, specific options can be enabled below." 303 | msgstr "" 304 | "Niekoľko úprav na integrovanie doku s predvolenou témou prostredia GNOME. " 305 | "Alternatívne môžu byť povolené špecifické voľby nižšie." 306 | 307 | #: Settings.ui.h:58 308 | msgid "Use built-in theme" 309 | msgstr "Použiť zabudovanú tému" 310 | 311 | #: Settings.ui.h:59 312 | msgid "Save space reducing padding and border radius." 313 | msgstr "Ušetrí miesto zmenšením rádiusu odsadenia a okrajov." 314 | 315 | #: Settings.ui.h:60 316 | msgid "Shrink the dash" 317 | msgstr "Zmenšiť panel" 318 | 319 | #: Settings.ui.h:61 320 | msgid "Show a dot for each windows of the application." 321 | msgstr "Zobrazí bodku za každé okno aplikácie." 322 | 323 | #: Settings.ui.h:62 324 | msgid "Show windows counter indicators" 325 | msgstr "Zobraziť indikátory počítadiel okien" 326 | 327 | #: Settings.ui.h:63 328 | msgid "Set the background color for the dash." 329 | msgstr "Nastaví farbu pozadia panelu." 330 | 331 | #: Settings.ui.h:64 332 | msgid "Customize the dash color" 333 | msgstr "Prispôsobenie farby panelu" 334 | 335 | #: Settings.ui.h:65 336 | msgid "Tune the dash background opacity." 337 | msgstr "Vyladí krytie pozadia panelu." 338 | 339 | #: Settings.ui.h:66 340 | msgid "Customize opacity" 341 | msgstr "Prispôsobenie krytia" 342 | 343 | #: Settings.ui.h:67 344 | msgid "Opacity" 345 | msgstr "Krytie" 346 | 347 | #: Settings.ui.h:68 348 | msgid "Force straight corner\n" 349 | msgstr "Zakázať zaoblené rohy\n" 350 | 351 | #: Settings.ui.h:70 352 | msgid "Appearance" 353 | msgstr "Vzhľad" 354 | 355 | #: Settings.ui.h:71 356 | msgid "version: " 357 | msgstr "verzia: " 358 | 359 | #: Settings.ui.h:72 360 | msgid "Moves the dash out of the overview transforming it in a dock" 361 | msgstr "Presunie panel z prehľadu transformovaním do doku" 362 | 363 | #: Settings.ui.h:73 364 | msgid "Created by" 365 | msgstr "Vytvoril" 366 | 367 | #: Settings.ui.h:74 368 | msgid "Webpage" 369 | msgstr "Webová stránka" 370 | 371 | #: Settings.ui.h:75 372 | msgid "" 373 | "This program comes with ABSOLUTELY NO WARRANTY.\n" 374 | "See the GNU General Public License, version 2 or later for details." 376 | msgstr "" 377 | "Tento program je ABSOLÚTNE BEZ ZÁRUKY.\n" 378 | "Pre viac podrobností si pozrite Licenciu GNU General Public, verzie 2 alebo novšiu." 381 | 382 | #: Settings.ui.h:77 383 | msgid "About" 384 | msgstr "O rozšírení" 385 | 386 | #: Settings.ui.h:78 387 | msgid "Show the dock by mouse hover on the screen edge." 388 | msgstr "Zobrazí dok prejdením myši na hranu obrazovky." 389 | 390 | #: Settings.ui.h:79 391 | msgid "Autohide" 392 | msgstr "Automatické skrytie" 393 | 394 | #: Settings.ui.h:80 395 | msgid "Push to show: require pressure to show the dock" 396 | msgstr "Zobraziť dok až po zatlačení na okraj obrazovky" 397 | 398 | #: Settings.ui.h:81 399 | msgid "Enable in fullscreen mode" 400 | msgstr "Povoliť v režime na celú obrazovku" 401 | 402 | #: Settings.ui.h:82 403 | msgid "Show the dock when it doesn't obstruct application windows." 404 | msgstr "Zobrazí dok, keď nebude zasahovať do okien aplikácií." 405 | 406 | #: Settings.ui.h:83 407 | msgid "Dodge windows" 408 | msgstr "Vyhýbať sa oknám" 409 | 410 | #: Settings.ui.h:84 411 | msgid "All windows" 412 | msgstr "Všetky okná" 413 | 414 | #: Settings.ui.h:85 415 | msgid "Only focused application's windows" 416 | msgstr "Iba zamerané okná aplikácií" 417 | 418 | #: Settings.ui.h:86 419 | msgid "Only maximized windows" 420 | msgstr "Iba maximalizované okná" 421 | 422 | #: Settings.ui.h:87 423 | msgid "Animation duration (s)" 424 | msgstr "Trvanie animácie (s)" 425 | 426 | #: Settings.ui.h:88 427 | msgid "0.000" 428 | msgstr "0.000" 429 | 430 | #: Settings.ui.h:89 431 | msgid "Show timeout (s)" 432 | msgstr "Zobraziť časový limit (s)" 433 | 434 | #: Settings.ui.h:90 435 | msgid "Pressure threshold" 436 | msgstr "Medza tlaku" 437 | 438 | #~ msgid "" 439 | #~ "With fixed icon size, only the edge of the dock and the Show " 440 | #~ "Applications icon are active." 441 | #~ msgstr "" 442 | #~ "S pevnou veľkosťou ikon je aktívna iba hrana doku a ikona Zobraziť " 443 | #~ "aplikácie." 444 | 445 | #~ msgid "Switch workspace by scrolling on the dock" 446 | #~ msgstr "Prepínať pracovné priestory rolovaním na doku" 447 | -------------------------------------------------------------------------------- /po/sr.po: -------------------------------------------------------------------------------- 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 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: \n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-09-16 13:45+0200\n" 11 | "PO-Revision-Date: 2017-09-20 18:59+0200\n" 12 | "Last-Translator: Слободан Терзић \n" 13 | "Language-Team: \n" 14 | "Language: sr\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: Poedit 2.0.3\n" 19 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" 20 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 21 | 22 | #: prefs.js:113 23 | msgid "Primary monitor" 24 | msgstr "примарном монитору" 25 | 26 | #: prefs.js:122 prefs.js:129 27 | msgid "Secondary monitor " 28 | msgstr "секундарном монитору" 29 | 30 | #: prefs.js:154 Settings.ui.h:31 31 | msgid "Right" 32 | msgstr "десно" 33 | 34 | #: prefs.js:155 Settings.ui.h:28 35 | msgid "Left" 36 | msgstr "лево" 37 | 38 | #: prefs.js:205 39 | msgid "Intelligent autohide customization" 40 | msgstr "Поставке интелигентног аутоматског сакривања" 41 | 42 | #: prefs.js:212 prefs.js:397 prefs.js:454 43 | msgid "Reset to defaults" 44 | msgstr "Поврати основно" 45 | 46 | #: prefs.js:390 47 | msgid "Show dock and application numbers" 48 | msgstr "Прикажи док и бројеве програма" 49 | 50 | #: prefs.js:447 51 | msgid "Customize middle-click behavior" 52 | msgstr "Прилагоћавање понашања средњег клика" 53 | 54 | #: prefs.js:518 55 | msgid "Customize running indicators" 56 | msgstr "Прилагођавање индикатора покренутих" 57 | 58 | #: appIcons.js:1144 59 | msgid "All Windows" 60 | msgstr "Сви прозори" 61 | 62 | #. Translators: %s is "Settings", which is automatically translated. You 63 | #. can also translate the full message if this fits better your language. 64 | #: appIcons.js:1450 65 | #, javascript-format 66 | msgid "Dash to Dock %s" 67 | msgstr "%s плоче/панела" 68 | 69 | #: Settings.ui.h:1 70 | msgid "Customize indicator style" 71 | msgstr "Прилагоћавање стила индикатора" 72 | 73 | #: Settings.ui.h:2 74 | msgid "Color" 75 | msgstr "Боја" 76 | 77 | #: Settings.ui.h:3 78 | msgid "Border color" 79 | msgstr "Боја ивице" 80 | 81 | #: Settings.ui.h:4 82 | msgid "Border width" 83 | msgstr "Ширина ивице" 84 | 85 | #: Settings.ui.h:5 86 | msgid "Number overlay" 87 | msgstr "Бројне налепнице" 88 | 89 | #: Settings.ui.h:6 90 | msgid "" 91 | "Temporarily show the application numbers over the icons, corresponding to " 92 | "the shortcut." 93 | msgstr "" 94 | "Привремено прикажи бројеве програма изнад иконица, према припадајућој " 95 | "пречици." 96 | 97 | #: Settings.ui.h:7 98 | msgid "Show the dock if it is hidden" 99 | msgstr "Прикажи док уколико је сакривен" 100 | 101 | #: Settings.ui.h:8 102 | msgid "" 103 | "If using autohide, the dock will appear for a short time when triggering the " 104 | "shortcut." 105 | msgstr "" 106 | "Уколико се користи аутоматско сакривање, док ће се приказати на тренутак при " 107 | "окидању пречице." 108 | 109 | #: Settings.ui.h:9 110 | msgid "Shortcut for the options above" 111 | msgstr "Пречица за горе наведене опције" 112 | 113 | #: Settings.ui.h:10 114 | msgid "Syntax: , , , " 115 | msgstr "Синтакса: , , , " 116 | 117 | #: Settings.ui.h:11 118 | msgid "Hide timeout (s)" 119 | msgstr "Застој скривања" 120 | 121 | #: Settings.ui.h:12 122 | msgid "" 123 | "When set to minimize, double clicking minimizes all the windows of the " 124 | "application." 125 | msgstr "" 126 | "Кад је постављено на минимизовање, дупли клик минимизује све прозоре " 127 | "програма." 128 | 129 | #: Settings.ui.h:13 130 | msgid "Shift+Click action" 131 | msgstr "Радња шифт+клика" 132 | 133 | #: Settings.ui.h:14 134 | msgid "Raise window" 135 | msgstr "издигни прозор" 136 | 137 | #: Settings.ui.h:15 138 | msgid "Minimize window" 139 | msgstr "минимизуј прозор" 140 | 141 | #: Settings.ui.h:16 142 | msgid "Launch new instance" 143 | msgstr "покрени нови примерак" 144 | 145 | #: Settings.ui.h:17 146 | msgid "Cycle through windows" 147 | msgstr "кружење кроз прозоре" 148 | 149 | #: Settings.ui.h:18 150 | msgid "Minimize or overview" 151 | msgstr "минимиуј или преглед" 152 | 153 | #: Settings.ui.h:19 154 | msgid "Show window previews" 155 | msgstr "прикажи сличице прозора" 156 | 157 | #: Settings.ui.h:20 158 | msgid "Quit" 159 | msgstr "напусти" 160 | 161 | #: Settings.ui.h:21 162 | msgid "Behavior for Middle-Click." 163 | msgstr "Понашање средњег клика." 164 | 165 | #: Settings.ui.h:22 166 | msgid "Middle-Click action" 167 | msgstr "Радња средњег клика" 168 | 169 | #: Settings.ui.h:23 170 | msgid "Behavior for Shift+Middle-Click." 171 | msgstr "Пoнашање шифт+средњег клика." 172 | 173 | #: Settings.ui.h:24 174 | msgid "Shift+Middle-Click action" 175 | msgstr "Радња шифт+средњегклика" 176 | 177 | #: Settings.ui.h:25 178 | msgid "Show the dock on" 179 | msgstr "Прикажи док на" 180 | 181 | #: Settings.ui.h:26 182 | msgid "Show on all monitors" 183 | msgstr "Прикажи на свим мониторима" 184 | 185 | #: Settings.ui.h:27 186 | msgid "Position on screen" 187 | msgstr "Позиција на екрану" 188 | 189 | #: Settings.ui.h:29 190 | msgid "Bottom" 191 | msgstr "дно" 192 | 193 | #: Settings.ui.h:30 194 | msgid "Top" 195 | msgstr "врх" 196 | 197 | #: Settings.ui.h:32 198 | msgid "" 199 | "Hide the dock when it obstructs a window of the current application. More " 200 | "refined settings are available." 201 | msgstr "" 202 | "Сакриј док када је на путу прозора тренутног програма. Доступне су финије " 203 | "поставке." 204 | 205 | #: Settings.ui.h:33 206 | msgid "Intelligent autohide" 207 | msgstr "Интелигентно аутоматско сакривање" 208 | 209 | #: Settings.ui.h:34 210 | msgid "Dock size limit" 211 | msgstr "Ограничење величине дока" 212 | 213 | #: Settings.ui.h:35 214 | msgid "Panel mode: extend to the screen edge" 215 | msgstr "Режим панела: проширен до ивица екрана" 216 | 217 | #: Settings.ui.h:36 218 | msgid "Icon size limit" 219 | msgstr "Ограничење величине иконица" 220 | 221 | #: Settings.ui.h:37 222 | msgid "Fixed icon size: scroll to reveal other icons" 223 | msgstr "Устаљена величина иконица: клизајте за друге иконе" 224 | 225 | #: Settings.ui.h:38 226 | msgid "Position and size" 227 | msgstr "Позиција и величина" 228 | 229 | #: Settings.ui.h:39 230 | msgid "Show favorite applications" 231 | msgstr "Приказ омиљених програма" 232 | 233 | #: Settings.ui.h:40 234 | msgid "Show running applications" 235 | msgstr "Приказ покренутих програма" 236 | 237 | #: Settings.ui.h:41 238 | msgid "Isolate workspaces" 239 | msgstr "Изолуј радне просторе" 240 | 241 | #: Settings.ui.h:42 242 | msgid "Isolate monitors" 243 | msgstr "Изолуј мониторе" 244 | 245 | #: Settings.ui.h:43 246 | msgid "Show open windows previews" 247 | msgstr "Прикажи сличице отворених прозора" 248 | 249 | #: Settings.ui.h:44 250 | msgid "" 251 | "If disabled, these settings are accessible from gnome-tweak-tool or the " 252 | "extension website." 253 | msgstr "" 254 | "Уколико је онемогућено, ове поставке су доступне кроз алатку за лицкање или " 255 | "веб сајт проширења." 256 | 257 | #: Settings.ui.h:45 258 | msgid "Show Applications icon" 259 | msgstr "Приказ иконице Прикажи програме" 260 | 261 | #: Settings.ui.h:46 262 | msgid "Move the applications button at the beginning of the dock" 263 | msgstr "Помери дугме програма на почетак дока" 264 | 265 | #: Settings.ui.h:47 266 | msgid "Animate Show Applications" 267 | msgstr "Анимирај приказ програма" 268 | 269 | #: Settings.ui.h:48 270 | msgid "Launchers" 271 | msgstr "Покретачи" 272 | 273 | #: Settings.ui.h:49 274 | msgid "" 275 | "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " 276 | "together with Shift and Ctrl." 277 | msgstr "" 278 | "Укључује Супер+(0-9) као пречице за активацију програма. Такође је могуће " 279 | "користити уз shift и ctrl." 280 | 281 | #: Settings.ui.h:50 282 | msgid "Use keyboard shortcuts to activate apps" 283 | msgstr "Активирај програме пречицама тастатуре" 284 | 285 | #: Settings.ui.h:51 286 | msgid "Behaviour when clicking on the icon of a running application." 287 | msgstr "Понашање при клику на покренути програм." 288 | 289 | #: Settings.ui.h:52 290 | msgid "Click action" 291 | msgstr "Радња клика" 292 | 293 | #: Settings.ui.h:53 294 | msgid "Minimize" 295 | msgstr "минимизуј" 296 | 297 | #: Settings.ui.h:54 298 | msgid "Behaviour when scrolling on the icon of an application." 299 | msgstr "Понашање при клизању на иконицу покренутог програма." 300 | 301 | #: Settings.ui.h:55 302 | msgid "Scroll action" 303 | msgstr "Радња клизања на иконицу" 304 | 305 | #: Settings.ui.h:56 306 | msgid "Do nothing" 307 | msgstr "ништа" 308 | 309 | #: Settings.ui.h:57 310 | msgid "Switch workspace" 311 | msgstr "пребаци радни простор" 312 | 313 | #: Settings.ui.h:58 314 | msgid "Behavior" 315 | msgstr "Понашање" 316 | 317 | #: Settings.ui.h:59 318 | msgid "" 319 | "Few customizations meant to integrate the dock with the default GNOME theme. " 320 | "Alternatively, specific options can be enabled below." 321 | msgstr "" 322 | "Неколико поставки намењених уграђивању дока у основну тему Гнома. " 323 | "Алтернативно, посебне поставке се могу уредити испод." 324 | 325 | #: Settings.ui.h:60 326 | msgid "Use built-in theme" 327 | msgstr "Користи уграђену тему" 328 | 329 | #: Settings.ui.h:61 330 | msgid "Save space reducing padding and border radius." 331 | msgstr "Чува простор сужавањем попуне и опсега ивица." 332 | 333 | #: Settings.ui.h:62 334 | msgid "Shrink the dash" 335 | msgstr "Скупи плочу" 336 | 337 | #: Settings.ui.h:63 338 | msgid "Show a dot for each windows of the application." 339 | msgstr "Приказује тачку за сваки прозор програма." 340 | 341 | #: Settings.ui.h:64 342 | msgid "Show windows counter indicators" 343 | msgstr "Приказ индикаторa бројача прозора." 344 | 345 | #: Settings.ui.h:65 346 | msgid "Set the background color for the dash." 347 | msgstr "Постави позадинску боју плоче." 348 | 349 | #: Settings.ui.h:66 350 | msgid "Customize the dash color" 351 | msgstr "Прилагоди боју плоче" 352 | 353 | #: Settings.ui.h:67 354 | msgid "Tune the dash background opacity." 355 | msgstr "Прилагоди прозирност позадине плоче." 356 | 357 | #: Settings.ui.h:68 358 | msgid "Customize opacity" 359 | msgstr "Прилагоћавање прозирности" 360 | 361 | #: Settings.ui.h:69 362 | msgid "Opacity" 363 | msgstr "Прозирност" 364 | 365 | #: Settings.ui.h:70 366 | msgid "Enable Unity7 like glossy backlit items" 367 | msgstr "Укључи позадинске ефекте попут Unity7" 368 | 369 | #: Settings.ui.h:71 370 | msgid "Force straight corner\n" 371 | msgstr "Наметни равне углове\n" 372 | 373 | #: Settings.ui.h:73 374 | msgid "Appearance" 375 | msgstr "Изглед" 376 | 377 | #: Settings.ui.h:74 378 | msgid "version: " 379 | msgstr "верзија: " 380 | 381 | #: Settings.ui.h:75 382 | msgid "Moves the dash out of the overview transforming it in a dock" 383 | msgstr "Помера плочу из глобалног приказа, претварајући је у док" 384 | 385 | #: Settings.ui.h:76 386 | msgid "Created by" 387 | msgstr "Направи" 388 | 389 | #: Settings.ui.h:77 390 | msgid "Webpage" 391 | msgstr "Веб страница" 392 | 393 | #: Settings.ui.h:78 394 | msgid "" 395 | "This program comes with ABSOLUTELY NO WARRANTY.\n" 396 | "See the GNU General Public License, version 2 or later for details." 398 | msgstr "" 399 | "Овај програм се доставља БЕЗ ИКАКВИХ ГАРАНЦИЈА.\n" 400 | "Погледајте ГНУову Општу Јавну лиценцу, верзија 2 или каснија, за детаље." 402 | 403 | #: Settings.ui.h:80 404 | msgid "About" 405 | msgstr "О програму" 406 | 407 | #: Settings.ui.h:81 408 | msgid "Show the dock by mouse hover on the screen edge." 409 | msgstr "Прикажи док прелазом миша пеко ивице екрана." 410 | 411 | #: Settings.ui.h:82 412 | msgid "Autohide" 413 | msgstr "Аутоматско сакривање" 414 | 415 | #: Settings.ui.h:83 416 | msgid "Push to show: require pressure to show the dock" 417 | msgstr "Приказ притиском: захтева притисак за приказ дока" 418 | 419 | #: Settings.ui.h:84 420 | msgid "Enable in fullscreen mode" 421 | msgstr "Омогући у целоекранском режиму" 422 | 423 | #: Settings.ui.h:85 424 | msgid "Show the dock when it doesn't obstruct application windows." 425 | msgstr "Приказује док када није на путу прозорима програма." 426 | 427 | #: Settings.ui.h:86 428 | msgid "Dodge windows" 429 | msgstr "Избегавање розора" 430 | 431 | #: Settings.ui.h:87 432 | msgid "All windows" 433 | msgstr "Сви прозори" 434 | 435 | #: Settings.ui.h:88 436 | msgid "Only focused application's windows" 437 | msgstr "Само прозор фокусираног програма" 438 | 439 | #: Settings.ui.h:89 440 | msgid "Only maximized windows" 441 | msgstr "Само максимизовани прозори" 442 | 443 | #: Settings.ui.h:90 444 | msgid "Animation duration (s)" 445 | msgstr "Трајање(а) анимације" 446 | 447 | #: Settings.ui.h:91 448 | msgid "Show timeout (s)" 449 | msgstr "Застој приказивања" 450 | 451 | #: Settings.ui.h:92 452 | msgid "Pressure threshold" 453 | msgstr "Праг притиска" 454 | 455 | #~ msgid "0.000" 456 | #~ msgstr "0,000" 457 | 458 | #, fuzzy 459 | #~ msgid "" 460 | #~ "With fixed icon size, only the edge of the dock and the Show " 461 | #~ "Applications icon are active." 462 | #~ msgstr "" 463 | #~ "Ако се иконе преклапају на доку, приказује се само икона Прикажи " 464 | #~ "програме." 465 | 466 | #~ msgid "Switch workspace by scrolling on the dock" 467 | #~ msgstr "Промена радног простора клизањем по доку" 468 | 469 | #~ msgid "Only consider windows of the focused application" 470 | #~ msgstr "Разматрај само прозор фокусираног програма" 471 | -------------------------------------------------------------------------------- /po/sr@latin.po: -------------------------------------------------------------------------------- 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 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: \n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2017-09-16 13:45+0200\n" 11 | "PO-Revision-Date: 2017-09-20 18:56+0200\n" 12 | "Last-Translator: Slobodan Terzić \n" 13 | "Language-Team: \n" 14 | "Language: sr@latin\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: Poedit 2.0.3\n" 19 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" 20 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 21 | 22 | #: prefs.js:113 23 | msgid "Primary monitor" 24 | msgstr "primarnom monitoru" 25 | 26 | #: prefs.js:122 prefs.js:129 27 | msgid "Secondary monitor " 28 | msgstr "sekundarnom monitoru" 29 | 30 | #: prefs.js:154 Settings.ui.h:31 31 | msgid "Right" 32 | msgstr "desno" 33 | 34 | #: prefs.js:155 Settings.ui.h:28 35 | msgid "Left" 36 | msgstr "levo" 37 | 38 | #: prefs.js:205 39 | msgid "Intelligent autohide customization" 40 | msgstr "Postavke inteligentnog automatskog sakrivanja" 41 | 42 | #: prefs.js:212 prefs.js:397 prefs.js:454 43 | msgid "Reset to defaults" 44 | msgstr "Povrati osnovno" 45 | 46 | #: prefs.js:390 47 | msgid "Show dock and application numbers" 48 | msgstr "Prikaži dok i brojeve programa" 49 | 50 | #: prefs.js:447 51 | msgid "Customize middle-click behavior" 52 | msgstr "Prilagoćavanje ponašanja srednjeg klika" 53 | 54 | #: prefs.js:518 55 | msgid "Customize running indicators" 56 | msgstr "Prilagođavanje indikatora pokrenutih" 57 | 58 | #: appIcons.js:1144 59 | msgid "All Windows" 60 | msgstr "Svi prozori" 61 | 62 | #. Translators: %s is "Settings", which is automatically translated. You 63 | #. can also translate the full message if this fits better your language. 64 | #: appIcons.js:1450 65 | #, javascript-format 66 | msgid "Dash to Dock %s" 67 | msgstr "%s ploče/panela" 68 | 69 | #: Settings.ui.h:1 70 | msgid "Customize indicator style" 71 | msgstr "Prilagoćavanje stila indikatora" 72 | 73 | #: Settings.ui.h:2 74 | msgid "Color" 75 | msgstr "Boja" 76 | 77 | #: Settings.ui.h:3 78 | msgid "Border color" 79 | msgstr "Boja ivice" 80 | 81 | #: Settings.ui.h:4 82 | msgid "Border width" 83 | msgstr "Širina ivice" 84 | 85 | #: Settings.ui.h:5 86 | msgid "Number overlay" 87 | msgstr "Brojne nalepnice" 88 | 89 | #: Settings.ui.h:6 90 | msgid "" 91 | "Temporarily show the application numbers over the icons, corresponding to the " 92 | "shortcut." 93 | msgstr "" 94 | "Privremeno prikaži brojeve programa iznad ikonica, prema pripadajućoj prečici." 95 | 96 | #: Settings.ui.h:7 97 | msgid "Show the dock if it is hidden" 98 | msgstr "Prikaži dok ukoliko je sakriven" 99 | 100 | #: Settings.ui.h:8 101 | msgid "" 102 | "If using autohide, the dock will appear for a short time when triggering the " 103 | "shortcut." 104 | msgstr "" 105 | "Ukoliko se koristi automatsko sakrivanje, dok će se prikazati na trenutak pri " 106 | "okidanju prečice." 107 | 108 | #: Settings.ui.h:9 109 | msgid "Shortcut for the options above" 110 | msgstr "Prečica za gore navedene opcije" 111 | 112 | #: Settings.ui.h:10 113 | msgid "Syntax: , , , " 114 | msgstr "Sintaksa: , , , " 115 | 116 | #: Settings.ui.h:11 117 | msgid "Hide timeout (s)" 118 | msgstr "Zastoj skrivanja" 119 | 120 | #: Settings.ui.h:12 121 | msgid "" 122 | "When set to minimize, double clicking minimizes all the windows of the " 123 | "application." 124 | msgstr "" 125 | "Kad je postavljeno na minimizovanje, dupli klik minimizuje sve prozore " 126 | "programa." 127 | 128 | #: Settings.ui.h:13 129 | msgid "Shift+Click action" 130 | msgstr "Radnja šift+klika" 131 | 132 | #: Settings.ui.h:14 133 | msgid "Raise window" 134 | msgstr "izdigni prozor" 135 | 136 | #: Settings.ui.h:15 137 | msgid "Minimize window" 138 | msgstr "minimizuj prozor" 139 | 140 | #: Settings.ui.h:16 141 | msgid "Launch new instance" 142 | msgstr "pokreni novi primerak" 143 | 144 | #: Settings.ui.h:17 145 | msgid "Cycle through windows" 146 | msgstr "kruženje kroz prozore" 147 | 148 | #: Settings.ui.h:18 149 | msgid "Minimize or overview" 150 | msgstr "minimiuj ili pregled" 151 | 152 | #: Settings.ui.h:19 153 | msgid "Show window previews" 154 | msgstr "prikaži sličice prozora" 155 | 156 | #: Settings.ui.h:20 157 | msgid "Quit" 158 | msgstr "napusti" 159 | 160 | #: Settings.ui.h:21 161 | msgid "Behavior for Middle-Click." 162 | msgstr "Ponašanje srednjeg klika." 163 | 164 | #: Settings.ui.h:22 165 | msgid "Middle-Click action" 166 | msgstr "Radnja srednjeg klika" 167 | 168 | #: Settings.ui.h:23 169 | msgid "Behavior for Shift+Middle-Click." 170 | msgstr "Ponašanje šift+srednjeg klika." 171 | 172 | #: Settings.ui.h:24 173 | msgid "Shift+Middle-Click action" 174 | msgstr "Radnja šift+srednjegklika" 175 | 176 | #: Settings.ui.h:25 177 | msgid "Show the dock on" 178 | msgstr "Prikaži dok na" 179 | 180 | #: Settings.ui.h:26 181 | msgid "Show on all monitors" 182 | msgstr "Prikaži na svim monitorima" 183 | 184 | #: Settings.ui.h:27 185 | msgid "Position on screen" 186 | msgstr "Pozicija na ekranu" 187 | 188 | #: Settings.ui.h:29 189 | msgid "Bottom" 190 | msgstr "dno" 191 | 192 | #: Settings.ui.h:30 193 | msgid "Top" 194 | msgstr "vrh" 195 | 196 | #: Settings.ui.h:32 197 | msgid "" 198 | "Hide the dock when it obstructs a window of the current application. More " 199 | "refined settings are available." 200 | msgstr "" 201 | "Sakrij dok kada je na putu prozora trenutnog programa. Dostupne su finije " 202 | "postavke." 203 | 204 | #: Settings.ui.h:33 205 | msgid "Intelligent autohide" 206 | msgstr "Inteligentno automatsko sakrivanje" 207 | 208 | #: Settings.ui.h:34 209 | msgid "Dock size limit" 210 | msgstr "Ograničenje veličine doka" 211 | 212 | #: Settings.ui.h:35 213 | msgid "Panel mode: extend to the screen edge" 214 | msgstr "Režim panela: proširen do ivica ekrana" 215 | 216 | #: Settings.ui.h:36 217 | msgid "Icon size limit" 218 | msgstr "Ograničenje veličine ikonica" 219 | 220 | #: Settings.ui.h:37 221 | msgid "Fixed icon size: scroll to reveal other icons" 222 | msgstr "Ustaljena veličina ikonica: klizajte za druge ikone" 223 | 224 | #: Settings.ui.h:38 225 | msgid "Position and size" 226 | msgstr "Pozicija i veličina" 227 | 228 | #: Settings.ui.h:39 229 | msgid "Show favorite applications" 230 | msgstr "Prikaz omiljenih programa" 231 | 232 | #: Settings.ui.h:40 233 | msgid "Show running applications" 234 | msgstr "Prikaz pokrenutih programa" 235 | 236 | #: Settings.ui.h:41 237 | msgid "Isolate workspaces" 238 | msgstr "Izoluj radne prostore" 239 | 240 | #: Settings.ui.h:42 241 | msgid "Isolate monitors" 242 | msgstr "Izoluj monitore" 243 | 244 | #: Settings.ui.h:43 245 | msgid "Show open windows previews" 246 | msgstr "Prikaži sličice otvorenih prozora" 247 | 248 | #: Settings.ui.h:44 249 | msgid "" 250 | "If disabled, these settings are accessible from gnome-tweak-tool or the " 251 | "extension website." 252 | msgstr "" 253 | "Ukoliko je onemogućeno, ove postavke su dostupne kroz alatku za lickanje ili " 254 | "veb sajt proširenja." 255 | 256 | #: Settings.ui.h:45 257 | msgid "Show Applications icon" 258 | msgstr "Prikaz ikonice Prikaži programe" 259 | 260 | #: Settings.ui.h:46 261 | msgid "Move the applications button at the beginning of the dock" 262 | msgstr "Pomeri dugme programa na početak doka" 263 | 264 | #: Settings.ui.h:47 265 | msgid "Animate Show Applications" 266 | msgstr "Animiraj prikaz programa" 267 | 268 | #: Settings.ui.h:48 269 | msgid "Launchers" 270 | msgstr "Pokretači" 271 | 272 | #: Settings.ui.h:49 273 | msgid "" 274 | "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " 275 | "together with Shift and Ctrl." 276 | msgstr "" 277 | "Uključuje Super+(0-9) kao prečice za aktivaciju programa. Takođe je moguće " 278 | "koristiti uz shift i ctrl." 279 | 280 | #: Settings.ui.h:50 281 | msgid "Use keyboard shortcuts to activate apps" 282 | msgstr "Aktiviraj programe prečicama tastature" 283 | 284 | #: Settings.ui.h:51 285 | msgid "Behaviour when clicking on the icon of a running application." 286 | msgstr "Ponašanje pri kliku na pokrenuti program." 287 | 288 | #: Settings.ui.h:52 289 | msgid "Click action" 290 | msgstr "Radnja klika" 291 | 292 | #: Settings.ui.h:53 293 | msgid "Minimize" 294 | msgstr "minimizuj" 295 | 296 | #: Settings.ui.h:54 297 | msgid "Behaviour when scrolling on the icon of an application." 298 | msgstr "Ponašanje pri klizanju na ikonicu pokrenutog programa." 299 | 300 | #: Settings.ui.h:55 301 | msgid "Scroll action" 302 | msgstr "Radnja klizanja na ikonicu" 303 | 304 | #: Settings.ui.h:56 305 | msgid "Do nothing" 306 | msgstr "ništa" 307 | 308 | #: Settings.ui.h:57 309 | msgid "Switch workspace" 310 | msgstr "prebaci radni prostor" 311 | 312 | #: Settings.ui.h:58 313 | msgid "Behavior" 314 | msgstr "Ponašanje" 315 | 316 | #: Settings.ui.h:59 317 | msgid "" 318 | "Few customizations meant to integrate the dock with the default GNOME theme. " 319 | "Alternatively, specific options can be enabled below." 320 | msgstr "" 321 | "Nekoliko postavki namenjenih ugrađivanju doka u osnovnu temu Gnoma. " 322 | "Alternativno, posebne postavke se mogu urediti ispod." 323 | 324 | #: Settings.ui.h:60 325 | msgid "Use built-in theme" 326 | msgstr "Koristi ugrađenu temu" 327 | 328 | #: Settings.ui.h:61 329 | msgid "Save space reducing padding and border radius." 330 | msgstr "Čuva prostor sužavanjem popune i opsega ivica." 331 | 332 | #: Settings.ui.h:62 333 | msgid "Shrink the dash" 334 | msgstr "Skupi ploču" 335 | 336 | #: Settings.ui.h:63 337 | msgid "Show a dot for each windows of the application." 338 | msgstr "Prikazuje tačku za svaki prozor programa." 339 | 340 | #: Settings.ui.h:64 341 | msgid "Show windows counter indicators" 342 | msgstr "Prikaz indikatora brojača prozora." 343 | 344 | #: Settings.ui.h:65 345 | msgid "Set the background color for the dash." 346 | msgstr "Postavi pozadinsku boju ploče." 347 | 348 | #: Settings.ui.h:66 349 | msgid "Customize the dash color" 350 | msgstr "Prilagodi boju ploče" 351 | 352 | #: Settings.ui.h:67 353 | msgid "Tune the dash background opacity." 354 | msgstr "Prilagodi prozirnost pozadine ploče." 355 | 356 | #: Settings.ui.h:68 357 | msgid "Customize opacity" 358 | msgstr "Prilagoćavanje prozirnosti" 359 | 360 | #: Settings.ui.h:69 361 | msgid "Opacity" 362 | msgstr "Prozirnost" 363 | 364 | #: Settings.ui.h:70 365 | msgid "Enable Unity7 like glossy backlit items" 366 | msgstr "Uključi pozadinske efekte poput Unity7" 367 | 368 | #: Settings.ui.h:71 369 | msgid "Force straight corner\n" 370 | msgstr "Nametni ravne uglove\n" 371 | 372 | #: Settings.ui.h:73 373 | msgid "Appearance" 374 | msgstr "Izgled" 375 | 376 | #: Settings.ui.h:74 377 | msgid "version: " 378 | msgstr "verzija: " 379 | 380 | #: Settings.ui.h:75 381 | msgid "Moves the dash out of the overview transforming it in a dock" 382 | msgstr "Pomera ploču iz globalnog prikaza, pretvarajući je u dok" 383 | 384 | #: Settings.ui.h:76 385 | msgid "Created by" 386 | msgstr "Napravi" 387 | 388 | #: Settings.ui.h:77 389 | msgid "Webpage" 390 | msgstr "Veb stranica" 391 | 392 | #: Settings.ui.h:78 393 | msgid "" 394 | "This program comes with ABSOLUTELY NO WARRANTY.\n" 395 | "See the GNU General Public License, version 2 or later for details." 397 | msgstr "" 398 | "Ovaj program se dostavlja BEZ IKAKVIH GARANCIJA.\n" 399 | "Pogledajte GNUovu Opštu Javnu licencu, verzija 2 ili kasnija, za detalje." 401 | 402 | #: Settings.ui.h:80 403 | msgid "About" 404 | msgstr "O programu" 405 | 406 | #: Settings.ui.h:81 407 | msgid "Show the dock by mouse hover on the screen edge." 408 | msgstr "Prikaži dok prelazom miša peko ivice ekrana." 409 | 410 | #: Settings.ui.h:82 411 | msgid "Autohide" 412 | msgstr "Automatsko sakrivanje" 413 | 414 | #: Settings.ui.h:83 415 | msgid "Push to show: require pressure to show the dock" 416 | msgstr "Prikaz pritiskom: zahteva pritisak za prikaz doka" 417 | 418 | #: Settings.ui.h:84 419 | msgid "Enable in fullscreen mode" 420 | msgstr "Omogući u celoekranskom režimu" 421 | 422 | #: Settings.ui.h:85 423 | msgid "Show the dock when it doesn't obstruct application windows." 424 | msgstr "Prikazuje dok kada nije na putu prozorima programa." 425 | 426 | #: Settings.ui.h:86 427 | msgid "Dodge windows" 428 | msgstr "Izbegavanje rozora" 429 | 430 | #: Settings.ui.h:87 431 | msgid "All windows" 432 | msgstr "Svi prozori" 433 | 434 | #: Settings.ui.h:88 435 | msgid "Only focused application's windows" 436 | msgstr "Samo prozor fokusiranog programa" 437 | 438 | #: Settings.ui.h:89 439 | msgid "Only maximized windows" 440 | msgstr "Samo maksimizovani prozori" 441 | 442 | #: Settings.ui.h:90 443 | msgid "Animation duration (s)" 444 | msgstr "Trajanje(a) animacije" 445 | 446 | #: Settings.ui.h:91 447 | msgid "Show timeout (s)" 448 | msgstr "Zastoj prikazivanja" 449 | 450 | #: Settings.ui.h:92 451 | msgid "Pressure threshold" 452 | msgstr "Prag pritiska" 453 | 454 | #~ msgid "0.000" 455 | #~ msgstr "0,000" 456 | 457 | #, fuzzy 458 | #~ msgid "" 459 | #~ "With fixed icon size, only the edge of the dock and the Show " 460 | #~ "Applications icon are active." 461 | #~ msgstr "" 462 | #~ "Ako se ikone preklapaju na doku, prikazuje se samo ikona Prikaži " 463 | #~ "programe." 464 | 465 | #~ msgid "Switch workspace by scrolling on the dock" 466 | #~ msgstr "Promena radnog prostora klizanjem po doku" 467 | 468 | #~ msgid "Only consider windows of the focused application" 469 | #~ msgstr "Razmatraj samo prozor fokusiranog programa" 470 | --------------------------------------------------------------------------------