diff --git a/Makefile b/Makefile index ec51474..65a1929 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ MODULES = src/*.js src/stylesheet.css metadata.json COPYING README.md UI_MODULES = ui/*.ui IMAGES = ./* ../media/design/svg/dash-to-panel-logo-light.svg -TOLOCALIZE = src/prefs.js src/appIcons.js src/taskbar.js +TOLOCALIZE = src/extension.js src/prefs.js src/appIcons.js src/taskbar.js MSGSRC = $(wildcard po/*.po) ifeq ($(strip $(DESTDIR)),) INSTALLBASE = $(HOME)/.local/share/gnome-shell/extensions diff --git a/README.md b/README.md index e9794a4..9133239 100644 --- a/README.md +++ b/README.md @@ -180,7 +180,7 @@ Ideas for recursing child actors and assigning inline styles are based on code f - @JimBroad for grayscale icons #### Bug Fixes: -@imrvelj, @Teslator, @bil-elmoussaoui, @brandon-schumann, @sw9, @rockon999 , @lexruee, @3v1n0, @freeroot, @moqmar, @ArtyomZorin, @lkc0987, @saibotk, @vanillajonathan, @Zkdc, @leebickmtu, @l3nn4rt, @Melix19, @Aikatsui, @melix99, @kyrillzorin, @oneshadab, @CorvetteCole, @vantu5z, @spectreseven1138, @aperezdc, @smedir, @lucaxvi, @andyholmes, @vowstar, @T99Rots, @City-busz, @guoqiyi, @gcrabbe, @Anduin2017 +@imrvelj, @Teslator, @bil-elmoussaoui, @brandon-schumann, @sw9, @rockon999 , @lexruee, @3v1n0, @freeroot, @moqmar, @ArtyomZorin, @lkc0987, @saibotk, @vanillajonathan, @Zkdc, @leebickmtu, @l3nn4rt, @Melix19, @Aikatsui, @melix99, @kyrillzorin, @oneshadab, @CorvetteCole, @vantu5z, @spectreseven1138, @aperezdc, @smedir, @lucaxvi, @andyholmes, @vowstar, @T99Rots, @City-busz, @guoqiyi, @gcrabbe, @Anduin2017, @xalt7x #### Documentation Improvements: @BoQsc, @zakkak, @dandv, @elliotwutingfeng diff --git a/po/fr.po b/po/fr.po index 589dfec..709ddc1 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Dash To Panel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-30 14:13-0500\n" -"PO-Revision-Date: 2025-01-30 11:29-0500\n" +"POT-Creation-Date: 2025-02-21 17:44-0500\n" +"PO-Revision-Date: 2025-02-21 17:45-0500\n" "Last-Translator: Charles Gagnon \n" "Language-Team: French\n" "Language: fr\n" @@ -39,319 +39,327 @@ msgstr "" "X-Poedit-SearchPath-16: desktopIconsIntegration.js\n" "X-Poedit-SearchPath-17: appIcons.js\n" -#: prefs.js:263 +#: src/extension.js:88 +msgid "Dash to Panel has been updated!" +msgstr "Dash to Panel a été mis à jour!" + +#: src/extension.js:95 +msgid "See what's new" +msgstr "Voir les nouveautés" + +#: src/prefs.js:275 msgid "Show Desktop button height (px)" msgstr "Hauteur du bouton Afficher le Bureau (px)" -#: prefs.js:263 +#: src/prefs.js:276 msgid "Show Desktop button width (px)" msgstr "Longueur du bouton Afficher le Bureau (px)" -#: prefs.js:275 +#: src/prefs.js:296 msgid "Unavailable when gnome-shell top panel is present" msgstr "Indisponible quand le panneau de gnome-shell est présent" -#: prefs.js:333 ui/SettingsPosition.ui.h:13 ui/SettingsStyle.ui.h:16 +#: src/prefs.js:304 +msgid "Unavailable when the panel on the primary monitor is at the top" +msgstr "Indisponible quand le panneau sur l'écran principal est au haut" + +#: src/prefs.js:372 ui/SettingsPosition.ui.h:13 ui/SettingsStyle.ui.h:19 msgid "Left" msgstr "Gauche" -#: prefs.js:334 +#: src/prefs.js:373 msgid "Center" msgstr "Centre" -#: prefs.js:335 ui/SettingsPosition.ui.h:14 ui/SettingsStyle.ui.h:17 +#: src/prefs.js:374 ui/SettingsPosition.ui.h:14 ui/SettingsStyle.ui.h:20 msgid "Right" msgstr "Droit" -#: prefs.js:337 ui/BoxWindowPreviewOptions.ui.h:38 ui/SettingsPosition.ui.h:12 -#: ui/SettingsStyle.ui.h:15 +#: src/prefs.js:376 ui/BoxWindowPreviewOptions.ui.h:38 +#: ui/SettingsPosition.ui.h:12 ui/SettingsStyle.ui.h:18 msgid "Top" msgstr "Haut" -#: prefs.js:338 prefs.js:343 ui/SettingsPosition.ui.h:22 +#: src/prefs.js:377 src/prefs.js:382 ui/SettingsPosition.ui.h:22 msgid "Middle" msgstr "Milieu" -#: prefs.js:339 ui/BoxWindowPreviewOptions.ui.h:37 ui/SettingsPosition.ui.h:11 -#: ui/SettingsStyle.ui.h:14 +#: src/prefs.js:378 ui/BoxWindowPreviewOptions.ui.h:37 +#: ui/SettingsPosition.ui.h:11 ui/SettingsStyle.ui.h:17 msgid "Bottom" msgstr "Bas" -#: prefs.js:342 ui/SettingsPosition.ui.h:21 +#: src/prefs.js:381 ui/SettingsPosition.ui.h:21 msgid "Start" msgstr "Début" -#: prefs.js:344 ui/SettingsPosition.ui.h:23 +#: src/prefs.js:383 ui/SettingsPosition.ui.h:23 msgid "End" msgstr "Fin" -#: prefs.js:429 +#: src/prefs.js:509 msgid "Show Applications button" msgstr "Bouton Afficher les Applications" -#: prefs.js:430 +#: src/prefs.js:510 msgid "Activities button" msgstr "Bouton Activités" -#: prefs.js:431 +#: src/prefs.js:511 msgid "Taskbar" msgstr "Barre des tâches" -#: prefs.js:432 +#: src/prefs.js:512 msgid "Date menu" msgstr "Horloge" -#: prefs.js:433 +#: src/prefs.js:513 msgid "System menu" msgstr "Menu système" -#: prefs.js:434 +#: src/prefs.js:514 msgid "Left box" msgstr "Zone gauche" -#: prefs.js:435 +#: src/prefs.js:515 msgid "Center box" msgstr "Zone centre" -#: prefs.js:436 +#: src/prefs.js:516 msgid "Right box" msgstr "Zone droite" -#: prefs.js:437 +#: src/prefs.js:517 msgid "Desktop button" msgstr "Bouton Afficher le Bureau" -#: prefs.js:443 +#: src/prefs.js:527 src/prefs.js:2797 msgid "Move up" msgstr "Déplacer vers le haut" -#: prefs.js:445 +#: src/prefs.js:529 src/prefs.js:2805 msgid "Move down" msgstr "Déplacer vers le bas" -#: prefs.js:447 +#: src/prefs.js:535 msgid "Visible" msgstr "Visible" -#: prefs.js:448 +#: src/prefs.js:539 msgid "Select element position" msgstr "Sélectionner la position de l'élément" -#: prefs.js:459 +#: src/prefs.js:553 msgid "Stacked to top" msgstr "Empilé en haut" -#: prefs.js:459 +#: src/prefs.js:553 msgid "Stacked to left" msgstr "Empilé à gauche" -#: prefs.js:460 +#: src/prefs.js:557 msgid "Stacked to bottom" msgstr "Empilé en bas" -#: prefs.js:460 +#: src/prefs.js:557 msgid "Stacked to right" msgstr "Empilé à droite" -#: prefs.js:461 +#: src/prefs.js:559 msgid "Centered" msgstr "Centré" -#: prefs.js:462 +#: src/prefs.js:560 msgid "Monitor Center" msgstr "Centre de l'écran " -#: prefs.js:481 +#: src/prefs.js:587 msgid "More options" msgstr "Plus d'options" -#: prefs.js:513 +#: src/prefs.js:622 msgid "Reset to defaults" msgstr "Restaurer paramètres" -#: prefs.js:536 +#: src/prefs.js:645 msgid "Show Applications options" msgstr "Options du bouton Afficher les Applications" -#: prefs.js:546 +#: src/prefs.js:668 msgid "Open icon" msgstr "Choisir l'icône" -#: prefs.js:593 +#: src/prefs.js:733 msgid "Show Desktop options" msgstr "Options du bouton Afficher le Bureau" -#: prefs.js:677 +#: src/prefs.js:825 +msgid "Primary monitor" +msgstr "Écran principal" + +#: src/prefs.js:826 +msgid "Monitor " +msgstr "Écran " + +#: src/prefs.js:953 +msgid "Running Indicator Options" +msgstr "Options de l'indicateur d'activité" + +#: src/prefs.js:1487 +msgid "Dynamic opacity options" +msgstr "Options d'opacité dynamique" + +#: src/prefs.js:1729 +msgid "Intellihide options" +msgstr "Options du masquage intelligent" + +#: src/prefs.js:1925 +msgid "Window preview options" +msgstr "Options de la prévisualisation" + +#: src/prefs.js:2476 +msgid "Ungrouped application options" +msgstr "Options des applications dégroupées" + +#: src/prefs.js:2643 +msgid "Customize middle-click behavior" +msgstr "Modifier l'action du clic de la molette" + +#: src/prefs.js:2772 +msgid "Text" +msgstr "Texte" + +#: src/prefs.js:2781 +msgid "Command" +msgstr "Commande" + +#: src/prefs.js:2813 +msgid "Remove" +msgstr "Retirer" + +#: src/prefs.js:2841 +msgid "Customize panel scroll behavior" +msgstr "Modifier l'action du défilement de la souris sur le panneau" + +#: src/prefs.js:2887 +msgid "Customize icon scroll behavior" +msgstr "Modifier l'action du défilement de la souris sur une application" + +#: src/prefs.js:3011 +msgid "Advanced hotkeys options" +msgstr "Raccourcis avancés" + +#: src/prefs.js:3039 +msgid "Secondary Menu Options" +msgstr "Options du menu secondaire" + +#: src/prefs.js:3239 #, javascript-format msgid "%d ms" msgstr "%d ms" -#: prefs.js:682 +#: src/prefs.js:3245 #, javascript-format msgid "%d °" msgstr "%d °" -#: prefs.js:687 prefs.js:692 +#: src/prefs.js:3251 src/prefs.js:3257 #, javascript-format msgid "%d %%" msgstr "%d %%" -#: prefs.js:697 +#: src/prefs.js:3263 #, javascript-format msgid "%.1f" msgstr "%.1f" -#: prefs.js:702 +#: src/prefs.js:3269 #, javascript-format msgid "%d icon" msgid_plural "%d icons" msgstr[0] "%d icône" msgstr[1] "%d icônes" -#: prefs.js:804 -msgid "Running Indicator Options" -msgstr "Options de l'indicateur d'activité" - -#: prefs.js:950 -msgid "Primary monitor" -msgstr "Écran principal" - -#: prefs.js:950 -msgid "Monitor " -msgstr "Écran " - -#: prefs.js:1144 -msgid "Dynamic opacity options" -msgstr "Options d'opacité dynamique" - -#: prefs.js:1277 -msgid "Intellihide options" -msgstr "Options du masquage intelligent" - -#: prefs.js:1383 -msgid "Window preview options" -msgstr "Options de la prévisualisation" - -#: prefs.js:1659 -msgid "Ungrouped application options" -msgstr "Options des applications dégroupées" - -#: prefs.js:1738 -msgid "Customize middle-click behavior" -msgstr "Modifier l'action du clic de la molette" - -#: prefs.js:1788 -msgid "Customize panel scroll behavior" -msgstr "Modifier l'action du défilement de la souris sur le panneau" - -#: prefs.js:1816 -msgid "Customize icon scroll behavior" -msgstr "Modifier l'action du défilement de la souris sur une application" - -#: prefs.js:1897 -msgid "Advanced hotkeys options" -msgstr "Raccourcis avancés" - -#: prefs.js:1915 -msgid "Secondary Menu Options" -msgstr "Options du menu secondaire" - -#: prefs.js:1942 ui/SettingsFineTune.ui.h:23 -msgid "Advanced Options" -msgstr "Options avancées" - -#: prefs.js:2058 +#: src/prefs.js:3396 msgid "App icon animation options" msgstr "Options d'animation des icônes d'application" -#: prefs.js:2106 +#: src/prefs.js:3519 +msgid "App icon highlight options" +msgstr "Options d'animation du surlignement des icônes d'application" + +#: src/prefs.js:3614 msgid "Export settings" msgstr "Exporter les paramètres" -#: prefs.js:2122 +#: src/prefs.js:3635 msgid "Import settings" msgstr "Importer des paramètres" -#: appIcons.js:1502 appIcons.js:1512 ui/BoxMiddleClickOptions.ui.h:10 +#: src/appIcons.js:1919 src/appIcons.js:1930 ui/BoxMiddleClickOptions.ui.h:11 msgid "Quit" msgstr "Quitter" -#: appIcons.js:1514 +#: src/appIcons.js:1933 #, javascript-format msgid "Quit %d Window" msgid_plural "Quit %d Windows" msgstr[0] "Fermer %d fenêtre" msgstr[1] "Fermer %d fenêtres" -#: appIcons.js:1789 +#: src/appIcons.js:2240 msgid "Power options" msgstr "Options d'alimentation" -#: appIcons.js:1794 +#: src/appIcons.js:2245 msgid "Event logs" msgstr "Journaux d'évènements" -#: appIcons.js:1799 +#: src/appIcons.js:2250 msgid "System" msgstr "Système" -#: appIcons.js:1804 +#: src/appIcons.js:2255 msgid "Device Management" msgstr "Gestionnaire de périphériques" -#: appIcons.js:1809 +#: src/appIcons.js:2260 msgid "Disk Management" msgstr "Gestionnaire de disques" -#: appIcons.js:1822 -msgid "Terminal" -msgstr "Terminal" - -#: appIcons.js:1827 -msgid "System monitor" -msgstr "Moniteur système" - -#: appIcons.js:1832 -msgid "Files" -msgstr "Fichiers" - -#: appIcons.js:1837 -msgid "Extensions" -msgstr "Extensions" - -#: appIcons.js:1842 -msgid "Settings" -msgstr "Paramètres" - -#: appIcons.js:1853 +#: src/appIcons.js:2291 msgid "Unlock taskbar" msgstr "Déverrouiller la barre des tâches" -#: appIcons.js:1853 +#: src/appIcons.js:2292 msgid "Lock taskbar" msgstr "Verrouiller la barre des tâches" -#: appIcons.js:1858 +#: src/appIcons.js:2302 +msgid "Gnome Settings" +msgstr "Paramètres Gnome" + +#: src/appIcons.js:2306 msgid "Dash to Panel Settings" msgstr "Paramètres Dash to Panel" -#: appIcons.js:1863 +#: src/appIcons.js:2313 msgid "Restore Windows" msgstr "Restaurer les fenêtres" -#: appIcons.js:1863 +#: src/appIcons.js:2314 msgid "Show Desktop" msgstr "Afficher le bureau" -#: taskbar.js:64 +#: src/taskbar.js:66 msgid "Donation options" msgstr "Options de don" -#: taskbar.js:79 +#: src/taskbar.js:79 msgid "Thank you!" msgstr "Merci!" -#: taskbar.js:79 +#: src/taskbar.js:79 msgid "Please donate :)" msgstr "Merci de faire un don :)" @@ -481,7 +489,7 @@ msgid "Change opacity to (%)" msgstr "Changer l'opacité à (%)" #: ui/BoxDynamicOpacityOptions.ui.h:8 ui/BoxShowApplicationsOptions.ui.h:3 -#: ui/BoxWindowPreviewOptions.ui.h:57 ui/SettingsStyle.ui.h:32 +#: ui/BoxWindowPreviewOptions.ui.h:57 ui/SettingsStyle.ui.h:40 msgid "0" msgstr "0" @@ -555,6 +563,22 @@ msgstr "Afficher des indicateurs sur les applications an arrière-plan" msgid "Use the favorite icons as application launchers" msgstr "Utiliser les applications favorites comme lanceurs" +#: ui/BoxHighlightAppIconHoverOptions.ui.h:1 +msgid "Highlight AppIcon color" +msgstr "Couleur de surlignement" + +#: ui/BoxHighlightAppIconHoverOptions.ui.h:2 +msgid "Pressed AppIcon color" +msgstr "Couleur des icônes d'application enfoncées" + +#: ui/BoxHighlightAppIconHoverOptions.ui.h:3 +msgid "Highlight AppIcon border radius" +msgstr "Coins arrondis du surlignement des icônes" + +#: ui/BoxHighlightAppIconHoverOptions.ui.h:4 +msgid "Overrides global border radius (default is 0)" +msgstr "Remplace l'option globale des coins arrondis" + #: ui/BoxIntellihideOptions.ui.h:1 msgid "Only hide the panel when it is obstructed by windows" msgstr "Ne cacher le panneau que lorsqu'il est au-dessus d'une fenêtre" @@ -580,34 +604,38 @@ msgid "Allow the panel to be revealed while in fullscreen mode" msgstr "Permettre au panneau d'être affiché en mode plein écran" #: ui/BoxIntellihideOptions.ui.h:10 -msgid "Only hide secondary panels" -msgstr "Ne cacher que les panneaux secondaires" - -#: ui/BoxIntellihideOptions.ui.h:11 msgid "(requires multi-monitors option)" msgstr "(requiert l'option multi-écran)" -#: ui/BoxIntellihideOptions.ui.h:12 -msgid "Keyboard shortcut to reveal and hold the panel" -msgstr "Raccourci clavier pour révéler et maintenir le panneau" +#: ui/BoxIntellihideOptions.ui.h:11 +msgid "Only hide secondary panels" +msgstr "Ne cacher que les panneaux secondaires" -#: ui/BoxIntellihideOptions.ui.h:13 ui/BoxOverlayShortcut.ui.h:12 +#: ui/BoxIntellihideOptions.ui.h:12 ui/BoxOverlayShortcut.ui.h:11 msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>" msgstr "Syntaxe: <Shift>, <Ctrl>, <Alt>, <Super>" +#: ui/BoxIntellihideOptions.ui.h:13 +msgid "Keyboard shortcut to reveal and hold the panel" +msgstr "Raccourci clavier pour révéler et maintenir le panneau" + #: ui/BoxIntellihideOptions.ui.h:14 msgid "e.g. i" msgstr "e.g. i" #: ui/BoxIntellihideOptions.ui.h:15 +msgid "Persist state across restarts" +msgstr "Conserver l'état lors des redémarrages" + +#: ui/BoxIntellihideOptions.ui.h:16 msgid "Hide and reveal animation duration (ms)" msgstr "Durée des animations d'affichage (ms)" -#: ui/BoxIntellihideOptions.ui.h:16 +#: ui/BoxIntellihideOptions.ui.h:17 msgid "Delay before hiding the panel (ms)" msgstr "Délai avant le masquage du panneau (ms)" -#: ui/BoxIntellihideOptions.ui.h:17 +#: ui/BoxIntellihideOptions.ui.h:18 msgid "Delay before enabling intellihide on start (ms)" msgstr "Délai avant l'activation du masquage intelligent (ms)" @@ -623,7 +651,7 @@ msgstr "" "Quand minimiser est sélectionné, un double-clic réduit toutes les fenêtres " "de l'application." -#: ui/BoxMiddleClickOptions.ui.h:3 ui/SettingsAction.ui.h:9 +#: ui/BoxMiddleClickOptions.ui.h:3 ui/SettingsAction.ui.h:10 msgid "Raise windows" msgstr "Montrer les fenêtres" @@ -631,7 +659,7 @@ msgstr "Montrer les fenêtres" msgid "Minimize window" msgstr "Réduire la fenêtre" -#: ui/BoxMiddleClickOptions.ui.h:5 ui/SettingsAction.ui.h:10 +#: ui/BoxMiddleClickOptions.ui.h:5 ui/SettingsAction.ui.h:11 msgid "Launch new instance" msgstr "Lancer une nouvelle instance" @@ -651,30 +679,34 @@ msgstr "Prévisualisation simple / multiple" msgid "Toggle single / Cycle multiple" msgstr "Prévisualisation simple / cycle multiple" -#: ui/BoxMiddleClickOptions.ui.h:11 +#: ui/BoxMiddleClickOptions.ui.h:10 ui/SettingsAction.ui.h:8 +msgid "Toggle single / Spread multiple" +msgstr "Prévisualisation simple / diffusion de l'application" + +#: ui/BoxMiddleClickOptions.ui.h:12 msgid "Middle-Click action" msgstr "Action clic molette" -#: ui/BoxMiddleClickOptions.ui.h:12 +#: ui/BoxMiddleClickOptions.ui.h:13 msgid "Behavior for Middle-Click." msgstr "Comportement du clic molette." -#: ui/BoxMiddleClickOptions.ui.h:13 +#: ui/BoxMiddleClickOptions.ui.h:14 msgid "Shift+Middle-Click action" msgstr "Action de Maj+Clic molette" -#: ui/BoxMiddleClickOptions.ui.h:14 +#: ui/BoxMiddleClickOptions.ui.h:15 msgid "Behavior for Shift+Middle-Click." msgstr "Comportement pour Maj+Clic molette." #: ui/BoxOverlayShortcut.ui.h:1 -msgid "Hotkeys prefix" -msgstr "Préfixe raccourcis" - -#: ui/BoxOverlayShortcut.ui.h:2 msgid "Hotkeys will either be Super+Number or Super+Alt+Num" msgstr "Les raccourcis seront soit Super+Numéro soit Super+Alt+Numéro" +#: ui/BoxOverlayShortcut.ui.h:2 +msgid "Hotkeys prefix" +msgstr "Préfixe raccourcis" + #: ui/BoxOverlayShortcut.ui.h:3 msgid "Super" msgstr "Super" @@ -684,10 +716,6 @@ msgid "Super + Alt" msgstr "Super + Alt" #: ui/BoxOverlayShortcut.ui.h:5 -msgid "Number overlay" -msgstr "Superposition des nombres" - -#: ui/BoxOverlayShortcut.ui.h:6 msgid "" "Temporarily show the application numbers over the icons when using the " "hotkeys." @@ -695,6 +723,10 @@ msgstr "" "Afficher temporairement les numéros des applications par dessus les icônes " "lors de l'utilisation des raccourcis." +#: ui/BoxOverlayShortcut.ui.h:6 +msgid "Number overlay" +msgstr "Superposition des nombres" + #: ui/BoxOverlayShortcut.ui.h:7 msgid "Never" msgstr "Jamais" @@ -711,7 +743,7 @@ msgstr "Toujours visible" msgid "Hide timeout (ms)" msgstr "Délai avant de cacher (ms)" -#: ui/BoxOverlayShortcut.ui.h:11 +#: ui/BoxOverlayShortcut.ui.h:12 msgid "Shortcut to show the overlay for 2 seconds" msgstr "Raccourci pour afficher la superposition pendant 2 secondes" @@ -720,33 +752,44 @@ msgid "e.g. q" msgstr "e.g. q" #: ui/BoxOverlayShortcut.ui.h:14 -msgid "Show window previews on hotkey" -msgstr "Afficher les aperçus des fenêtres lors de l'utilisation d'un raccourci" +msgid "" +"On secondary monitors, show the overlay on icons matching the primary monitor" +msgstr "" +"Sur les panneaux secondaires, afficher la superposition sur les icônes " +"correspondantes au panneau principal" #: ui/BoxOverlayShortcut.ui.h:15 +msgid "Show the overlay on all monitors" +msgstr "Afficher la superposition sur tous les écrans" + +#: ui/BoxOverlayShortcut.ui.h:16 msgid "Show previews when the application have multiple instances" msgstr "" "Afficher les aperçus lorsque les applications possèdent plusieurs fenêtres" -#: ui/BoxOverlayShortcut.ui.h:16 -msgid "Hotkeys are activated with" -msgstr "Les raccourcis sont activés par" - #: ui/BoxOverlayShortcut.ui.h:17 +msgid "Show window previews on hotkey" +msgstr "Afficher les aperçus des fenêtres lors de l'utilisation d'un raccourci" + +#: ui/BoxOverlayShortcut.ui.h:18 msgid "Select which keyboard number keys are used to activate the hotkeys" msgstr "" "Sélectionner quelles touches numériques sont utilisées pour activer les " "raccourcis" -#: ui/BoxOverlayShortcut.ui.h:18 +#: ui/BoxOverlayShortcut.ui.h:19 +msgid "Hotkeys are activated with" +msgstr "Les raccourcis sont activés par" + +#: ui/BoxOverlayShortcut.ui.h:20 msgid "Number row" msgstr "Rangée des chiffres" -#: ui/BoxOverlayShortcut.ui.h:19 +#: ui/BoxOverlayShortcut.ui.h:21 msgid "Numeric keypad" msgstr "Pavé numérique" -#: ui/BoxOverlayShortcut.ui.h:20 +#: ui/BoxOverlayShortcut.ui.h:22 msgid "Both" msgstr "Les deux" @@ -784,7 +827,7 @@ msgstr "Bouton Afficher les Applications" #: ui/BoxShowApplicationsOptions.ui.h:2 msgid "Show Applications icon side padding (px)" -msgstr "Marge interne du bouton \"Afficher les Applications\"" +msgstr "Remplissage du bouton \"Afficher les Applications\"" #: ui/BoxShowApplicationsOptions.ui.h:4 msgid "Override escape key and return to desktop" @@ -937,7 +980,7 @@ msgstr "Ratio d'aspect des prévisualisations (hauteur)" #: ui/BoxWindowPreviewOptions.ui.h:33 msgid "Window previews padding (px)" -msgstr "Marge intérieure des prévisualisations (px)" +msgstr "Remplissage des prévisualisations (px)" #: ui/BoxWindowPreviewOptions.ui.h:34 msgid "Use custom opacity for the previews background" @@ -1042,10 +1085,6 @@ msgid "Export and Import" msgstr "Import et export" #: ui/SettingsAbout.ui.h:7 -msgid "Export and import settings" -msgstr "Import et export de paramètres" - -#: ui/SettingsAbout.ui.h:8 msgid "" "Use the buttons below to create a settings file from your current " "preferences that can be imported on a different machine." @@ -1053,6 +1092,10 @@ msgstr "" "Utiliser les boutons ci-dessous pour créer un fichier de paramètres à partir " "de vos préférences actuelles qui pourra être importé sur une autre machine." +#: ui/SettingsAbout.ui.h:8 +msgid "Export and import settings" +msgstr "Import et export de paramètres" + #: ui/SettingsAbout.ui.h:9 msgid "Export to file" msgstr "Exporter vers un fichier" @@ -1085,58 +1128,54 @@ msgstr "Action du clic" msgid "Behaviour when clicking on the icon of a running application." msgstr "Comportement lors du clic sur l'icône d'une application lancée." -#: ui/SettingsAction.ui.h:8 +#: ui/SettingsAction.ui.h:9 msgid "Toggle windows" msgstr "Basculer les fenêtres" -#: ui/SettingsAction.ui.h:11 +#: ui/SettingsAction.ui.h:12 msgid "Scroll action" msgstr "Action du défilement de la souris" -#: ui/SettingsAction.ui.h:12 -msgid "Scroll panel action" -msgstr "Action du défilement de la souris sur le panneau" - #: ui/SettingsAction.ui.h:13 msgid "Behavior when mouse scrolling over the panel." msgstr "Comportement lors du défilement de la souris sur le panneau" #: ui/SettingsAction.ui.h:14 +msgid "Scroll panel action" +msgstr "Action du défilement de la souris sur le panneau" + +#: ui/SettingsAction.ui.h:15 msgid "Do nothing" msgstr "Ne rien faire" -#: ui/SettingsAction.ui.h:15 +#: ui/SettingsAction.ui.h:16 msgid "Switch workspace" msgstr "Défiler les espaces de travail" -#: ui/SettingsAction.ui.h:16 +#: ui/SettingsAction.ui.h:17 msgid "Cycle windows" msgstr "Défiler les fenêtres" -#: ui/SettingsAction.ui.h:17 +#: ui/SettingsAction.ui.h:18 msgid "Change volume" msgstr "Changer le volume" -#: ui/SettingsAction.ui.h:18 -msgid "Scroll icon action" -msgstr "Action du défilement de la souris sur une application" - #: ui/SettingsAction.ui.h:19 msgid "Behavior when mouse scrolling over an application icon." msgstr "Comportement lors du défilement de la souris sur une application" #: ui/SettingsAction.ui.h:20 +msgid "Scroll icon action" +msgstr "Action du défilement de la souris sur une application" + +#: ui/SettingsAction.ui.h:21 msgid "Same as panel" msgstr "Comme le panneau" -#: ui/SettingsAction.ui.h:21 +#: ui/SettingsAction.ui.h:22 msgid "Hotkey overlay" msgstr "Superposition des nombres" -#: ui/SettingsAction.ui.h:22 -msgid "Use hotkeys to activate apps" -msgstr "Utiliser des raccourcis pour lancer les applications" - #: ui/SettingsAction.ui.h:23 msgid "" "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " @@ -1145,6 +1184,26 @@ msgstr "" "Activer Super+(0-9) comme raccourcis pour lancer les applications. Maj et " "Ctrl peuvent aussi être utilisés." +#: ui/SettingsAction.ui.h:24 +msgid "Use hotkeys to activate apps" +msgstr "Utiliser des raccourcis pour lancer les applications" + +#: ui/SettingsAction.ui.h:25 +msgid "(right-click menu)" +msgstr "(clic droit)" + +#: ui/SettingsAction.ui.h:26 +msgid "Secondary menu" +msgstr "Options du menu secondaire" + +#: ui/SettingsAction.ui.h:27 +msgid "Panel context menu entries" +msgstr "Entrées menu contextuel du panneau" + +#: ui/SettingsAction.ui.h:28 +msgid "Add entry" +msgstr "Ajouter entrée" + #: ui/SettingsBehavior.ui.h:1 msgid "Behavior" msgstr "Comportement" @@ -1251,36 +1310,36 @@ msgid "Font size" msgstr "Taille de la police" #: ui/SettingsFineTune.ui.h:3 -msgid "Tray Font Size" -msgstr "Taille de la police des éléments de la barre d'état" - -#: ui/SettingsFineTune.ui.h:4 msgid "(0 = theme default)" msgstr "(0 = par défaut)" +#: ui/SettingsFineTune.ui.h:4 +msgid "Tray Font Size" +msgstr "Taille de la police des éléments de la barre d'état" + #: ui/SettingsFineTune.ui.h:5 msgid "LeftBox Font Size" msgstr "Taille de la police de la zone de gauche" #: ui/SettingsFineTune.ui.h:6 msgid "Padding" -msgstr "Marge" +msgstr "Remplissage" #: ui/SettingsFineTune.ui.h:7 -msgid "Tray Item Padding" -msgstr "Marge des éléments de la barre d'état" - -#: ui/SettingsFineTune.ui.h:8 msgid "(-1 = theme default)" msgstr "(-1 = par défaut)" +#: ui/SettingsFineTune.ui.h:8 +msgid "Tray Item Padding" +msgstr "Remplissage des éléments de la barre d'état" + #: ui/SettingsFineTune.ui.h:9 msgid "Status Icon Padding" -msgstr "Marge des icônes de statut" +msgstr "Remplissage des icônes de statut" #: ui/SettingsFineTune.ui.h:10 msgid "LeftBox Padding" -msgstr "Marge de la zone de gauche" +msgstr "Remplissage de la zone de gauche" #: ui/SettingsFineTune.ui.h:11 msgid "Animate" @@ -1299,37 +1358,29 @@ msgid "Gnome functionality" msgstr "Fonctionnalités Gnome" #: ui/SettingsFineTune.ui.h:15 -msgid "Keep original gnome-shell dash" -msgstr "Garder le lanceur d'origine de gnome-shell (Activités)" - -#: ui/SettingsFineTune.ui.h:16 msgid "(overview)" msgstr "(activités)" +#: ui/SettingsFineTune.ui.h:16 +msgid "Keep original gnome-shell dash" +msgstr "Garder le lanceur d'origine de gnome-shell (Activités)" + #: ui/SettingsFineTune.ui.h:17 msgid "Keep original gnome-shell top panel" msgstr "Garder le panneau d'origine de gnome-shell" #: ui/SettingsFineTune.ui.h:18 -msgid "Activate panel menu buttons on click only" -msgstr "Activer les menus du panneau seulement au clic" - -#: ui/SettingsFineTune.ui.h:19 msgid "(e.g. date menu)" msgstr "(exemple: horloge)" +#: ui/SettingsFineTune.ui.h:19 +msgid "Activate panel menu buttons on click only" +msgstr "Activer les menus du panneau seulement au clic" + #: ui/SettingsFineTune.ui.h:20 msgid "Force Activities hot corner on primary monitor" msgstr "Forcer le coin actif des Activités sur l'écran principal" -#: ui/SettingsFineTune.ui.h:21 -msgid "App icon secondary menu" -msgstr "Menu secondaire de l'application" - -#: ui/SettingsFineTune.ui.h:22 -msgid "(right-click menu)" -msgstr "(clic droit)" - #: ui/SettingsPosition.ui.h:1 msgid "Position" msgstr "Position" @@ -1347,13 +1398,13 @@ msgid "Display panels on all monitors" msgstr "Afficher le panneau principal sur tous les écrans" #: ui/SettingsPosition.ui.h:5 -msgid "Panel Intellihide" -msgstr "Masquage intelligent du panneau" - -#: ui/SettingsPosition.ui.h:6 msgid "Hide and reveal the panel according to preferences" msgstr "Afficher/Cacher le panneau selon les préférences" +#: ui/SettingsPosition.ui.h:6 +msgid "Panel Intellihide" +msgstr "Masquage intelligent du panneau" + #: ui/SettingsPosition.ui.h:7 msgid "Order and Position on monitors" msgstr "Ordre et positions de l'écran" @@ -1371,22 +1422,25 @@ msgid "Panel screen position" msgstr "Position du panneau" #: ui/SettingsPosition.ui.h:15 -msgid "Panel thickness" -msgstr "Taille du panneau" - -#: ui/SettingsPosition.ui.h:16 msgid "(default is 48)" msgstr "(la valeur par défaut est 48)" -#: ui/SettingsPosition.ui.h:18 -#, no-c-format -msgid "Panel length (%)" -msgstr "Longueur du panneau (%)" +#: ui/SettingsPosition.ui.h:16 +msgid "Panel thickness" +msgstr "Taille du panneau" -#: ui/SettingsPosition.ui.h:19 +#: ui/SettingsPosition.ui.h:17 msgid "(default is 100)" msgstr "(la valeur par défaut est 100)" +#: ui/SettingsPosition.ui.h:18 +msgid "Panel length" +msgstr "Longueur du panneau" + +#: ui/SettingsPosition.ui.h:19 +msgid "Dynamic" +msgstr "Dynamique" + #: ui/SettingsPosition.ui.h:20 msgid "Anchor" msgstr "Ancrage" @@ -1400,128 +1454,178 @@ msgid "Style" msgstr "Style" #: ui/SettingsStyle.ui.h:2 +msgid "Global style" +msgstr "Style global" + +#: ui/SettingsStyle.ui.h:3 +msgid "Border radius" +msgstr "Coins arrondis" + +#: ui/SettingsStyle.ui.h:4 msgid "AppIcon style" msgstr "Style des icônes d'application" -#: ui/SettingsStyle.ui.h:3 -msgid "App Icon Margin" -msgstr "Marge ext. de l'icône d'application" - -#: ui/SettingsStyle.ui.h:4 +#: ui/SettingsStyle.ui.h:5 msgid "(default is 8)" msgstr "(la valeur par défaut est 8)" -#: ui/SettingsStyle.ui.h:5 -msgid "App Icon Padding" -msgstr "Marge int. de l'icône d'application" - #: ui/SettingsStyle.ui.h:6 +msgid "App Icon Margin" +msgstr "Marge de l'icône d'application" + +#: ui/SettingsStyle.ui.h:7 msgid "(default is 4)" msgstr "(la valeur par défaut est 4)" -#: ui/SettingsStyle.ui.h:7 +#: ui/SettingsStyle.ui.h:8 +msgid "App Icon Padding" +msgstr "Remplissage de l'icône d'application" + +#: ui/SettingsStyle.ui.h:9 msgid "Animate hovering app icons" msgstr "Animer le survol des icônes d'application" -#: ui/SettingsStyle.ui.h:8 +#: ui/SettingsStyle.ui.h:10 +msgid "Highlight hovering app icons" +msgstr "Animer le survol des icônes d'application" + +#: ui/SettingsStyle.ui.h:11 msgid "Icon style" msgstr "Style d'icône" -#: ui/SettingsStyle.ui.h:9 +#: ui/SettingsStyle.ui.h:12 msgid "Normal" msgstr "Normal" -#: ui/SettingsStyle.ui.h:10 +#: ui/SettingsStyle.ui.h:13 msgid "Symbolic" msgstr "Symbolique" -#: ui/SettingsStyle.ui.h:11 +#: ui/SettingsStyle.ui.h:14 msgid "Grayscale" msgstr "Niveaux de gris" -#: ui/SettingsStyle.ui.h:12 +#: ui/SettingsStyle.ui.h:15 msgid "Running indicator" msgstr "Position de l'indicateur d'activité" -#: ui/SettingsStyle.ui.h:13 +#: ui/SettingsStyle.ui.h:16 msgid "Running indicator position" msgstr "Position de l'indicateur d'activité" -#: ui/SettingsStyle.ui.h:18 +#: ui/SettingsStyle.ui.h:21 msgid "Running indicator style (Focused app)" msgstr "Style de l'indicateur d'activité (Application active)" -#: ui/SettingsStyle.ui.h:19 +#: ui/SettingsStyle.ui.h:22 msgid "Dots" msgstr "Points" -#: ui/SettingsStyle.ui.h:20 +#: ui/SettingsStyle.ui.h:23 msgid "Squares" msgstr "Carrés" -#: ui/SettingsStyle.ui.h:21 +#: ui/SettingsStyle.ui.h:24 msgid "Dashes" msgstr "Traits" -#: ui/SettingsStyle.ui.h:22 +#: ui/SettingsStyle.ui.h:25 msgid "Segmented" msgstr "Segmenté" -#: ui/SettingsStyle.ui.h:23 +#: ui/SettingsStyle.ui.h:26 msgid "Solid" msgstr "Solide" -#: ui/SettingsStyle.ui.h:24 +#: ui/SettingsStyle.ui.h:27 msgid "Ciliora" msgstr "Ciliora" -#: ui/SettingsStyle.ui.h:25 +#: ui/SettingsStyle.ui.h:28 msgid "Metro" msgstr "Metro" -#: ui/SettingsStyle.ui.h:26 +#: ui/SettingsStyle.ui.h:29 msgid "Running indicator style (Unfocused apps)" msgstr "Style de l'indicateur d'activité (Applications inactives)" -#: ui/SettingsStyle.ui.h:27 +#: ui/SettingsStyle.ui.h:30 msgid "Panel style" msgstr "Style du panneau" -#: ui/SettingsStyle.ui.h:28 +#: ui/SettingsStyle.ui.h:31 +msgid "(default is 0)" +msgstr "(la valeur par défaut est 0)" + +#: ui/SettingsStyle.ui.h:32 +msgid "Side margins" +msgstr "Marges latérales" + +#: ui/SettingsStyle.ui.h:33 +msgid "Top and bottom margins" +msgstr "Marges supérieure et inférieure" + +#: ui/SettingsStyle.ui.h:34 +msgid "Side padding" +msgstr "Remplissage latéral" + +#: ui/SettingsStyle.ui.h:35 +msgid "Top and bottom padding" +msgstr "Remplissage supérieur et inférieur" + +#: ui/SettingsStyle.ui.h:36 msgid "Override panel theme background color" msgstr "Remplacer la couleur de fond du thème du panneau" -#: ui/SettingsStyle.ui.h:29 +#: ui/SettingsStyle.ui.h:37 msgid "Override panel theme background opacity" msgstr "Remplacer l'opacité du thème du panneau" -#: ui/SettingsStyle.ui.h:31 +#: ui/SettingsStyle.ui.h:39 #, no-c-format msgid "Panel background opacity (%)" msgstr "Opacité du fond du panneau" -#: ui/SettingsStyle.ui.h:33 -msgid "Dynamic background opacity" -msgstr "Opacité de fond dynamique" - -#: ui/SettingsStyle.ui.h:34 +#: ui/SettingsStyle.ui.h:41 msgid "Change opacity when a window gets close to the panel" msgstr "Changer l'opacité lorsqu'une fenêtre s'approche du panneau" -#: ui/SettingsStyle.ui.h:35 +#: ui/SettingsStyle.ui.h:42 +msgid "Dynamic background opacity" +msgstr "Opacité de fond dynamique" + +#: ui/SettingsStyle.ui.h:43 msgid "Override panel theme gradient" msgstr "Remplacer le gradient du thème du panneau" -#: ui/SettingsStyle.ui.h:37 +#: ui/SettingsStyle.ui.h:45 #, no-c-format msgid "Gradient top color and opacity (%)" msgstr "Couleur et opacité (%) du haut du gradient" -#: ui/SettingsStyle.ui.h:39 +#: ui/SettingsStyle.ui.h:47 #, no-c-format msgid "Gradient bottom color and opacity (%)" msgstr "Couleur et opacité (%) du bas du gradient" +#~ msgid "Advanced Options" +#~ msgstr "Options avancées" + +#~ msgid "App icon secondary menu" +#~ msgstr "Menu secondaire de l'application" + +#~ msgid "Terminal" +#~ msgstr "Terminal" + +#~ msgid "System monitor" +#~ msgstr "Moniteur système" + +#~ msgid "Files" +#~ msgstr "Fichiers" + +#~ msgid "Extensions" +#~ msgstr "Extensions" + #~ msgid "Top Bar" #~ msgstr "Panneau du haut" @@ -1680,9 +1784,6 @@ msgstr "Couleur et opacité (%) du bas du gradient" #~ msgid "Display favorite applications on all monitors" #~ msgstr "Afficher les applications favorites sur tous les écrans" -#~ msgid "Display the clock on all monitors" -#~ msgstr "Afficher l'horloge sur tous les écrans" - #~ msgid "Display the status menu on all monitors" #~ msgstr "Afficher le menu système sur tous les écrans" @@ -1695,9 +1796,6 @@ msgstr "Couleur et opacité (%) du bas du gradient" #~ msgid "Show Applications icon" #~ msgstr "Afficher l'icône Applications" -#~ msgid "Highlight color" -#~ msgstr "Couleur de surlignement" - #~ msgid "Preview timeout on icon leave (ms)" #~ msgstr "Délai de l'aperçu lorsqu'on quitte l'icône (ms)" diff --git a/schemas/org.gnome.shell.extensions.dash-to-panel.gschema.xml b/schemas/org.gnome.shell.extensions.dash-to-panel.gschema.xml index 4a964d0..2ea92c1 100644 --- a/schemas/org.gnome.shell.extensions.dash-to-panel.gschema.xml +++ b/schemas/org.gnome.shell.extensions.dash-to-panel.gschema.xml @@ -391,6 +391,10 @@ Keybinding toggle intellihide Keybinding to reveal the panel while in intellihide mode + + -1 + Persisted intellihide hold status. -1 means the option is disabled + 2000 Intellihide enable start delay @@ -684,6 +688,29 @@ Action when scrolling over the panel Set the action that is executed when scrolling over the panel + + ' + [ + { + "title": "Terminal", + "cmd": "TERMINALSETTINGS" + }, + { + "title": "System monitor", + "cmd": "gnome-system-monitor" + }, + { + "title": "Files", + "cmd": "nautilus" + }, + { + "title": "Extensions", + "cmd": "gnome-extensions-app" + } + ]' + + User defined context menu entries + 0 Delay between panel mouse scroll events @@ -1327,5 +1354,9 @@ '' Unix time when the donate icon was hidden + + 65 + Installed extension version + diff --git a/src/appIcons.js b/src/appIcons.js index 9e9ba0a..ada4a51 100644 --- a/src/appIcons.js +++ b/src/appIcons.js @@ -1826,7 +1826,7 @@ export function resetRecentlyClickedApp() { recentlyClickedAppIndex = 0 recentlyClickedAppMonitorIndex = null - return false + return GLib.SOURCE_REMOVE } export function closeAllWindows(app, monitor) { @@ -2248,7 +2248,7 @@ export const MyShowAppsIconMenu = class extends PopupMenu.PopupMenu { this._appendItem({ title: _('System'), - cmd: ['gnome-control-center', 'info-overview'], + cmd: ['gnome-control-center', 'system'], }) this._appendItem({ @@ -2269,29 +2269,14 @@ export const MyShowAppsIconMenu = class extends PopupMenu.PopupMenu { this._appendSeparator() } - this._appendItem({ - title: _('Terminal'), - cmd: [TERMINALSETTINGS.get_string('exec')], - }) + JSON.parse(SETTINGS.get_string('context-menu-entries')).forEach((e) => { + if (e.cmd == 'TERMINALSETTINGS') + e.cmd = TERMINALSETTINGS.get_string('exec') - this._appendItem({ - title: _('System monitor'), - cmd: ['gnome-system-monitor'], - }) - - this._appendItem({ - title: _('Files'), - cmd: ['nautilus'], - }) - - this._appendItem({ - title: _('Extensions'), - cmd: ['gnome-extensions-app'], - }) - - this._appendItem({ - title: _('Settings'), - cmd: ['gnome-control-center'], + this._appendItem({ + title: e.title, + cmd: e.cmd.split(' '), + }) }) this._appendList( @@ -2313,6 +2298,11 @@ export const MyShowAppsIconMenu = class extends PopupMenu.PopupMenu { ) }) + this._appendItem({ + title: _('Gnome Settings'), + cmd: ['gnome-control-center'], + }) + let settingsMenuItem = this._appendMenuItem(_('Dash to Panel Settings')) settingsMenuItem.connect('activate', () => DTP_EXTENSION.openPreferences()) diff --git a/src/extension.js b/src/extension.js index 698e9a9..4bb9c6c 100644 --- a/src/extension.js +++ b/src/extension.js @@ -18,10 +18,14 @@ */ import Gio from 'gi://Gio' +import GLib from 'gi://GLib' import * as Main from 'resource:///org/gnome/shell/ui/main.js' import { EventEmitter } from 'resource:///org/gnome/shell/misc/signals.js' -import { Extension } from 'resource:///org/gnome/shell/extensions/extension.js' +import { + Extension, + gettext as _, +} from 'resource:///org/gnome/shell/extensions/extension.js' import * as PanelSettings from './panelSettings.js' import * as PanelManager from './panelManager.js' @@ -78,6 +82,28 @@ export default class DashToPanelExtension extends Extension { if (donateIconUnixtime && donateIconUnixtime < Date.now() - 10368000000) SETTINGS.set_string('hide-donate-icon-unixtime', '') + // if new version, display a notification linking to release notes + if (this.metadata.version != SETTINGS.get_int('extension-version')) { + Utils.notify( + _('Dash to Panel has been updated!'), + _(`You are now running version ${this.metadata.version}.`), + 'software-update-available-symbolic', + Gio.icon_new_for_string( + `${this.path}/img/dash-to-panel-logo-light.svg`, + ), + { + text: _(`See what's new`), + func: () => + Gio.app_info_launch_default_for_uri( + `${this.metadata.url}/releases/tag/v${this.metadata.version}`, + global.create_app_launch_context(0, -1), + ), + }, + ) + + SETTINGS.set_int('extension-version', this.metadata.version) + } + Main.layoutManager.startInOverview = !SETTINGS.get_boolean( 'hide-overview-on-startup', ) @@ -99,6 +125,8 @@ export default class DashToPanelExtension extends Extension { panelManager = new PanelManager.PanelManager() panelManager.enable() ubuntuDockDelayId = 0 + + return GLib.SOURCE_REMOVE } // disable ubuntu dock if present @@ -110,13 +138,17 @@ export default class DashToPanelExtension extends Extension { global.settings.set_strv('disabled-extensions', disabled) // wait a bit so ubuntu dock can disable itself and restore the showappsbutton - ubuntuDockDelayId = setTimeout(completeEnable, 200) + ubuntuDockDelayId = GLib.timeout_add( + GLib.PRIORITY_DEFAULT, + 200, + completeEnable, + ) } } else completeEnable() } disable() { - if (ubuntuDockDelayId) clearTimeout(ubuntuDockDelayId) + if (ubuntuDockDelayId) GLib.Source.remove(ubuntuDockDelayId) PanelSettings.disable(SETTINGS) panelManager.disable() diff --git a/src/intellihide.js b/src/intellihide.js index 3a76f5a..0790e61 100644 --- a/src/intellihide.js +++ b/src/intellihide.js @@ -40,6 +40,7 @@ const MIN_UPDATE_MS = 250 const T1 = 'checkGrabTimeout' const T2 = 'limitUpdateTimeout' const T3 = 'postAnimateTimeout' +const T4 = 'enableStartTimeout' const SIDE_CONTROLS_ANIMATION_TIME = OverviewControls.SIDE_CONTROLS_ANIMATION_TIME / @@ -105,7 +106,26 @@ export const Intellihide = class { } this._setRevealMechanism() - this._queueUpdatePanelPosition() + + let lastState = SETTINGS.get_int('intellihide-persisted-state') + + if (lastState > -1) { + this._holdStatus = lastState + + if (lastState == Hold.NONE && Main.layoutManager._startingUp) + this._signalsHandler.add([ + this._panelBox, + 'notify::mapped', + () => this._hidePanel(true), + ]) + else this._queueUpdatePanelPosition() + } else + // -1 means that the option to persist hold isn't activated, so normal start + this._timeoutsHandler.add([ + T4, + SETTINGS.get_int('intellihide-enable-start-delay'), + () => this._queueUpdatePanelPosition(), + ]) } disable(reset) { @@ -146,12 +166,14 @@ export const Intellihide = class { } this._holdStatus |= holdStatus + this._maybePersistHoldStatus() } release(holdStatus) { this._holdStatus -= holdStatus if (this.enabled && !this._holdStatus) { + this._maybePersistHoldStatus() this._queueUpdatePanelPosition() } } @@ -171,6 +193,14 @@ export const Intellihide = class { } } + _maybePersistHoldStatus() { + if (SETTINGS.get_int('intellihide-persisted-state') > -1) + SETTINGS.set_int( + 'intellihide-persisted-state', + this._holdStatus & Hold.PERMANENT ? Hold.PERMANENT : Hold.NONE, + ) + } + _bindGeneralSignals() { this._signalsHandler.add( [ diff --git a/src/overview.js b/src/overview.js index f456d28..f7e04e9 100644 --- a/src/overview.js +++ b/src/overview.js @@ -133,7 +133,7 @@ export const Overview = class { // The default overview allocation takes into account external // struts, everywhere but the bottom where the dash is usually fixed anyway. // If there is a bottom panel under the dash location, give it some space here - box.y2 -= focusedPanel.geom.h + box.y2 -= focusedPanel.geom.outerSize } originalAllocate.call(overviewControls, box) diff --git a/src/panel.js b/src/panel.js index ba5a09e..2623f07 100644 --- a/src/panel.js +++ b/src/panel.js @@ -28,6 +28,7 @@ */ import Clutter from 'gi://Clutter' +import GLib from 'gi://GLib' import GObject from 'gi://GObject' import * as AppIcons from './appIcons.js' import * as Utils from './utils.js' @@ -61,7 +62,6 @@ let tracker = Shell.WindowTracker.get_default() export const panelBoxes = ['_leftBox', '_centerBox', '_rightBox'] //timeout names -const T2 = 'startIntellihideTimeout' const T4 = 'showDesktopTimeout' const T5 = 'trackerFocusAppTimeout' const T6 = 'scrollPanelDelayTimeout' @@ -278,11 +278,7 @@ export const Panel = GObject.registerClass( 'dashtopanelMainPanel ' + this.getOrientation(), ) - this._timeoutsHandler.add([ - T2, - SETTINGS.get_int('intellihide-enable-start-delay'), - () => (this.intellihide = new Intellihide.Intellihide(this)), - ]) + this.intellihide = new Intellihide.Intellihide(this) this._signalsHandler.add( // this is to catch changes to the theme or window scale factor @@ -366,7 +362,11 @@ export const Panel = GObject.registerClass( // This saves significant CPU when repainting the screen. this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS) - if (!Main.layoutManager._startingUp) this._resetGeometry() + if (!Main.layoutManager._startingUp) + GLib.idle_add(GLib.PRIORITY_LOW, () => { + this._resetGeometry() + return GLib.SOURCE_REMOVE + }) } disable() { @@ -696,13 +696,9 @@ export const Panel = GObject.registerClass( this.taskbar.resetAppIcons(true) this.dynamicTransparency.updateExternalStyle() - if (this.intellihide && this.intellihide.enabled) { - this.intellihide.reset() - } - if (this.checkIfVertical()) { this.showAppsIconWrapper.realShowAppsIcon.toggleButton.set_width( - this.geom.w, + this.geom.innerSize, ) this._refreshVerticalAlloc() } diff --git a/src/prefs.js b/src/prefs.js index 52be36d..ed06127 100644 --- a/src/prefs.js +++ b/src/prefs.js @@ -20,6 +20,7 @@ * Some code was also adapted from the upstream Gnome Shell source code. */ +import Adw from 'gi://Adw' import GdkPixbuf from 'gi://GdkPixbuf' import Gio from 'gi://Gio' import GioUnix from 'gi://GioUnix' @@ -190,7 +191,6 @@ const Preferences = class { this._builder.add_from_file(this._path + '/ui/BoxSecondaryMenuOptions.ui') this._builder.add_from_file(this._path + '/ui/BoxScrollPanelOptions.ui') this._builder.add_from_file(this._path + '/ui/BoxScrollIconOptions.ui') - this._builder.add_from_file(this._path + '/ui/BoxAdvancedOptions.ui') // pages this._builder.add_from_file(this._path + '/ui/SettingsPosition.ui') @@ -284,17 +284,25 @@ const Preferences = class { let monitorSync = this._settings.get_boolean( 'panel-element-positions-monitors-sync', ) - let topAvailable = - !keepTopPanel || - (!monitorSync && !this.monitors[this._currentMonitorIndex].primary) - let topRadio = this._builder.get_object('position_top_button') + let isPrimary = this.monitors[this._currentMonitorIndex].primary + let topAvailable = !keepTopPanel || (!monitorSync && !isPrimary) + let topButton = this._builder.get_object('position_top_button') + let keepGsPanelAvailable = !(topButton.get_active() && isPrimary) + let keepGsPanelSwitch = this._builder.get_object('stockgs_top_panel_switch') - topRadio.set_sensitive(topAvailable) - topRadio.set_tooltip_text( + topButton.set_sensitive(topAvailable) + topButton.set_tooltip_text( !topAvailable ? _('Unavailable when gnome-shell top panel is present') : '', ) + + keepGsPanelSwitch.set_sensitive(keepGsPanelAvailable) + keepGsPanelSwitch.set_tooltip_text( + keepGsPanelAvailable + ? '' + : _('Unavailable when the panel on the primary monitor is at the top'), + ) } _getPanelPosition(monitorIndex) { @@ -312,6 +320,7 @@ const Preferences = class { PanelSettings.setPanelPosition(this._settings, monitorIndex, position) }) this._setAnchorLabels(this._currentMonitorIndex) + this._maybeDisableTopPosition() } _setPositionRadios(position) { @@ -1659,6 +1668,30 @@ const Preferences = class { setShortcut(this._settings, 'intellihide-key-toggle'), ) + let intellihidePersistStateSwitch = this._builder.get_object( + 'intellihide_persist_state_switch', + ) + let intellihideStartDelayButton = this._builder.get_object( + 'intellihide_enable_start_delay_spinbutton', + ) + + intellihidePersistStateSwitch.set_active( + this._settings.get_int('intellihide-persisted-state') > -1, + ) + + intellihideStartDelayButton.set_sensitive( + this._settings.get_int('intellihide-persisted-state') == -1, + ) + + intellihidePersistStateSwitch.connect('notify::active', (widget) => { + intellihideStartDelayButton.set_sensitive(!widget.get_active()) + + this._settings.set_int( + 'intellihide-persisted-state', + widget.get_active() ? 0 : -1, + ) + }) + this._builder .get_object('intellihide_animation_time_spinbutton') .set_value(this._settings.get_int('intellihide-animation-time')) @@ -1677,17 +1710,15 @@ const Preferences = class { this._settings.set_int('intellihide-close-delay', widget.get_value()) }) - this._builder - .get_object('intellihide_enable_start_delay_spinbutton') - .set_value(this._settings.get_int('intellihide-enable-start-delay')) - this._builder - .get_object('intellihide_enable_start_delay_spinbutton') - .connect('value-changed', (widget) => { - this._settings.set_int( - 'intellihide-enable-start-delay', - widget.get_value(), - ) - }) + intellihideStartDelayButton.set_value( + this._settings.get_int('intellihide-enable-start-delay'), + ) + intellihideStartDelayButton.connect('value-changed', (widget) => { + this._settings.set_int( + 'intellihide-enable-start-delay', + widget.get_value(), + ) + }) this._builder .get_object('intellihide_options_button') @@ -1747,6 +1778,8 @@ const Preferences = class { this._settings.get_default_value('intellihide-key-toggle-text'), ) + intellihidePersistStateSwitch.set_active(false) + this._settings.set_value( 'intellihide-animation-time', this._settings.get_default_value('intellihide-animation-time'), @@ -1769,11 +1802,9 @@ const Preferences = class { 'intellihide-enable-start-delay', ), ) - this._builder - .get_object('intellihide_enable_start_delay_spinbutton') - .set_value( - this._settings.get_int('intellihide-enable-start-delay'), - ) + intellihideStartDelayButton.set_value( + this._settings.get_int('intellihide-enable-start-delay'), + ) }, ) @@ -2691,6 +2722,115 @@ const Preferences = class { this._settings.set_string('scroll-icon-action', widget.get_active_id()) }) + let expanders = [] + let contextMenuGroup = this._builder.get_object('context_menu_group') + let contextMenuActions = JSON.parse( + this._settings.get_string('context-menu-entries'), + ) + let contextMenuAddButton = this._builder.get_object( + 'context_menu_add_button', + ) + + contextMenuAddButton.connect('clicked', () => { + contextMenuActions.push({ + title: '', + cmd: '', + }) + + createContextMenuEntries() + }) + + let createButton = (icon, tooltip_text, clicked) => { + let btn = new Gtk.Button({ tooltip_text }) + + btn.set_icon_name(icon) + btn.add_css_class('circular') + btn.set_has_frame(false) + btn.connect('clicked', clicked) + + return btn + } + let updateContextMenuEntries = (rebuild) => { + contextMenuActions = contextMenuActions.filter((a) => a.title || a.cmd) + + this._settings.set_string( + 'context-menu-entries', + JSON.stringify(contextMenuActions), + ) + + if (rebuild) createContextMenuEntries() + } + let createContextMenuEntries = () => { + expanders.forEach((e) => contextMenuGroup.remove(e)) + expanders = [] + + contextMenuActions.forEach((a, i) => { + let expander = new Adw.ExpanderRow() + let textRow = new Adw.EntryRow() + let commandRow = new Adw.EntryRow() + + textRow.set_title(_('Text')) + textRow.set_text(a.title) + textRow.set_show_apply_button(true) + textRow.connect('apply', () => { + a.title = textRow.text + expander.set_title(a.title) + updateContextMenuEntries() + }) + + commandRow.set_title(_('Command')) + commandRow.set_text(a.cmd) + commandRow.set_show_apply_button(true) + commandRow.connect('apply', () => { + a.cmd = commandRow.text + expander.set_subtitle(a.cmd) + updateContextMenuEntries() + }) + + expander.add_row(textRow) + expander.add_row(commandRow) + + expander.set_title(a.title) + expander.set_subtitle(a.cmd) + + let box = new Gtk.Box() + let upBtn = createButton('go-up-symbolic', _('Move up'), () => { + contextMenuActions.splice( + i - 1, + 0, + contextMenuActions.splice(i, 1)[0], + ) + updateContextMenuEntries(true) + }) + let downBtn = createButton('go-down-symbolic', _('Move down'), () => { + contextMenuActions.splice( + i + 1, + 0, + contextMenuActions.splice(i, 1)[0], + ) + updateContextMenuEntries(true) + }) + let deleteBtn = createButton('user-trash-symbolic', _('Remove'), () => { + contextMenuActions.splice(i, 1) + updateContextMenuEntries(true) + }) + + if (i == 0) upBtn.set_sensitive(false) + if (i == contextMenuActions.length - 1) downBtn.set_sensitive(false) + + box.append(upBtn) + box.append(downBtn) + + expander.add_suffix(deleteBtn) + expander.add_prefix(box) + + contextMenuGroup.add(expander) + expanders.push(expander) + }) + } + + createContextMenuEntries() + // Create dialog for panel scroll options this._builder .get_object('scroll_panel_options_button') @@ -2934,18 +3074,6 @@ const Preferences = class { dialog.set_default_size(480, 1) }) - // setup dialog for advanced options - this._builder - .get_object('button_advanced_options') - .connect('clicked', () => { - let box = this._builder.get_object('box_advanced_options') - - let dialog = this._createPreferencesDialog(_('Advanced Options'), box) - - dialog.show() - dialog.set_default_size(480, 1) - }) - // Fine-tune panel let scaleInfos = [ @@ -3469,12 +3597,15 @@ const Preferences = class { // About Panel - this._builder - .get_object('extension_version') - .set_label( - this._metadata.version.toString() + - (this._metadata.commit ? ' (' + this._metadata.commit + ')' : ''), - ) + let versionLinkButton = this._builder.get_object('extension_version') + + versionLinkButton.set_label( + this._metadata.version.toString() + + (this._metadata.commit ? ' (' + this._metadata.commit + ')' : ''), + ) + versionLinkButton.set_uri( + `${this._metadata.url}/${this._metadata.commit ? `commit/${this._metadata.commit}` : `releases/tag/v${this._metadata.version}`}`, + ) this._builder .get_object('importexport_export_button') @@ -3565,16 +3696,22 @@ const Preferences = class { ) this.notebook.connect('notify::visible-page', () => { - clearTimeout(revealDonateTimeout) + if (revealDonateTimeout) GLib.Source.remove(revealDonateTimeout) if ( this.notebook.visible_page_name == 'donation' && !donationRevealer.get_reveal_child() ) - revealDonateTimeout = setTimeout(() => { - donationRevealer.set_reveal_child(true) - donationSpinner.set_spinning(false) - }, 15000) + revealDonateTimeout = GLib.timeout_add( + GLib.PRIORITY_DEFAULT, + 15000, + () => { + donationRevealer.set_reveal_child(true) + donationSpinner.set_spinning(false) + + return GLib.SOURCE_REMOVE + }, + ) }) } diff --git a/src/utils.js b/src/utils.js index 7534d37..0d30578 100644 --- a/src/utils.js +++ b/src/utils.js @@ -528,16 +528,24 @@ export const getPoint = function (coords) { return new Graphene.Point(coords) } -export const notify = function (text, iconName, action, isTransient) { - let source = new MessageTray.SystemNotificationSource() - let notification = new MessageTray.Notification(source, 'Dash to Panel', text) - let notifyFunc = source.showNotification || source.notify +export const notify = function ( + title, + body, + sourceIconName, + notificationIcon, + action, + isTransient, +) { + let source = MessageTray.getSystemSource() + let notification = new MessageTray.Notification({ + source, + title, + body, + isTransient: isTransient || false, + gicon: notificationIcon || null, + }) - if (iconName) { - source.createIcon = function () { - return new St.Icon({ icon_name: iconName }) - } - } + if (sourceIconName) source.iconName = sourceIconName if (action) { if (!(action instanceof Array)) { @@ -547,10 +555,7 @@ export const notify = function (text, iconName, action, isTransient) { action.forEach((a) => notification.addAction(a.text, a.func)) } - Main.messageTray.add(source) - - notification.setTransient(isTransient) - notifyFunc.call(source, notification) + source.addNotification(notification) } /* diff --git a/src/windowPreview.js b/src/windowPreview.js index d9ee0de..221e92d 100644 --- a/src/windowPreview.js +++ b/src/windowPreview.js @@ -495,10 +495,7 @@ export const PreviewMenu = GObject.registerClass( (panelSize + previewSize) + panelBoxTheme.get_padding(St.Side.LEFT) } else if (geom.position == St.Side.TOP) { - y = - this.panel.monitor.y + - panelSize - - panelBoxTheme.get_padding(St.Side.BOTTOM) + y = geom.y + panelSize - panelBoxTheme.get_padding(St.Side.BOTTOM) } else { //St.Side.BOTTOM y = diff --git a/ui/BoxAdvancedOptions.ui b/ui/BoxAdvancedOptions.ui deleted file mode 100644 index 3007d95..0000000 --- a/ui/BoxAdvancedOptions.ui +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - vertical - 600 - 24 - 32 - 32 - 32 - 32 - - - - - - - Nothing yet! - For real... - - - - - - - - \ No newline at end of file diff --git a/ui/BoxIntellihideOptions.ui b/ui/BoxIntellihideOptions.ui index 0da3ec2..a141604 100644 --- a/ui/BoxIntellihideOptions.ui +++ b/ui/BoxIntellihideOptions.ui @@ -1,53 +1,47 @@ - + + - + 1 + 100 + 10 9990 - 10 - 100 - 1 + 100 + 10 5000 - 10 - 100 - 10 + 100 + 10 2000 - 10 - 100 - 10 + 100 + 10 4000 - 10 - 100 - + 100 + 10 10000 - 10 - 100 - - vertical - 600 - 24 - 32 32 - 32 32 - + 32 + 32 + vertical + 24 + 600 - Only hide the panel when it is obstructed by windows @@ -58,7 +52,6 @@ - The panel hides from @@ -74,13 +67,10 @@ - - - Require pressure at the edge of the screen to reveal the panel @@ -91,43 +81,38 @@ - Required pressure threshold (px) - center - 4 - 0 intellihide_pressure_threshold_adjustment True + 0 + center + 4 - Required pressure timeout (ms) - center - 4 - 0 intellihide_pressure_time_adjustment True + 0 + center + 4 - - - Allow the panel to be revealed while in fullscreen mode @@ -138,11 +123,10 @@ - - Only hide secondary panels (requires multi-monitors option) + Only hide secondary panels center @@ -150,77 +134,78 @@ - - Keyboard shortcut to reveal and hold the panel Syntax: &lt;Shift&gt;, &lt;Ctrl&gt;, &lt;Alt&gt;, &lt;Super&gt; + Keyboard shortcut to reveal and hold the panel + e.g. <Super>i + center + 12 + + + + + + + Persist state across restarts + + center - 12 - e.g. <Super>i - - - Hide and reveal animation duration (ms) - center - 4 - 0 intellihide_animation_time_adjustment True + 0 + center + 4 - Delay before hiding the panel (ms) - center - 4 - 10 intellihide_close_delay_adjustment True + 10 + center 10 + 4 - Delay before enabling intellihide on start (ms) - center - 4 - 10 intellihide_enable_hide_delay_adjustment True + 10 + center 10 + 4 - - - - \ No newline at end of file + diff --git a/ui/SettingsAbout.ui b/ui/SettingsAbout.ui index 4ab0476..9c03b25 100644 --- a/ui/SettingsAbout.ui +++ b/ui/SettingsAbout.ui @@ -1,99 +1,86 @@ - + + - + + help-about-symbolic About - help-about-symbolic - - - - - Info - - - - Version - - - ... - - - - - - - - Source - - - GitHub - True - center - https://github.com/home-sweet-gnome/dash-to-panel - - - - - - - - - - - - Export and Import - - - - Export and import settings - Use the buttons below to create a settings file from your current preferences that can be imported on a different machine. - - - - - - - - 8 - 8 - 4 - 4 - 8 - end - - - Export to file - True - - - - - Import from file - True - - - - - - - - - - - - - - - - <span size="small">This program comes with ABSOLUTELY NO WARRANTY. See the <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2 or later</a> for details.</span> - True - center - True - - - - - + + + Info + + + Version + + + + + + + + Source + + + center + GitHub + True + https://github.com/home-sweet-gnome/dash-to-panel + + + + + + + + + Export and Import + + + Use the buttons below to create a settings file from your current preferences that can be imported on a different machine. + Export and import settings + + + + + + + end + 4 + 8 + 8 + 4 + 8 + + + Export to file + True + + + + + Import from file + True + + + + + + + + + + + + + center + <span size="small">This program comes with ABSOLUTELY NO WARRANTY. +See the <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2 or later</a> for details.</span> + True + True + + + + diff --git a/ui/SettingsAction.ui b/ui/SettingsAction.ui index e1a05af..2f738c6 100644 --- a/ui/SettingsAction.ui +++ b/ui/SettingsAction.ui @@ -1,27 +1,25 @@ - + + - + + input-mouse-symbolic Action - input-mouse-symbolic - - Click action - - Click action Behaviour when clicking on the icon of a running application. + Click action - True + True center - emblem-system-symbolic + emblem-system-symbolic + + + + + + + + + Panel context menu entries + + + center + 10 + True + center + 100 + + + list-add-symbolic + Add entry + + + + + + + - \ No newline at end of file + diff --git a/ui/SettingsFineTune.ui b/ui/SettingsFineTune.ui index 562a436..d77ef53 100644 --- a/ui/SettingsFineTune.ui +++ b/ui/SettingsFineTune.ui @@ -1,274 +1,202 @@ - + + - + 0.33 + 0.1 + 0.01 1 - 0.01 - 0.1 - 0.33 + 0.1 + 0.01 1 - 0.01 - 0.1 - 0.33 + 0.1 + 0.01 1 - 0.01 - 0.1 - 0.33 + 0.1 + 0.01 1 - 0.01 - 0.1 - 0.33 + 0.1 + 0.01 1 - 0.01 - 0.1 - + preferences-other-symbolic Fine-Tune - preferences-other-symbolic - - - - - Font size - - - - Tray Font Size - (0 = theme default) - - - 300 - tray_size_adjustment - 0 - 0 - right - True - - - - - - - - LeftBox Font Size - (0 = theme default) - - - 300 - leftbox_size_adjustment - 0 - 0 - right - True - - - - - - - - - - - - Padding - - - - Tray Item Padding - (-1 = theme default) - - - 300 - tray_padding_adjustment - 0 - 0 - right - True - - - - - - - - Status Icon Padding - (-1 = theme default) - - - 300 - statusicon_padding_adjustment - 0 - 0 - right - True - - - - - - - - LeftBox Padding - (-1 = theme default) - - - 300 - leftbox_padding_adjustment - 0 - 0 - right - True - - - - - - - - - - - - Animate - - - - Animate switching applications - - - center - - - - - - - - Animate launching new windows - - - center - - - - - - - - - - - - Gnome functionality - - - - Keep original gnome-shell dash - (overview) - - - center - - - - - - - - Keep original gnome-shell top panel - - - center - - - - - - - - Activate panel menu buttons on click only - (e.g. date menu) - - - center - - - - - - - - Force Activities hot corner on primary monitor - - - center - - - - - - - - - - - - - - - App icon secondary menu - (right-click menu) - - - True - center - - - emblem-system-symbolic - - - - - - - - - - - - - - - - - - Advanced Options - False - True - end - - - - - - + + + Font size + + + (0 = theme default) + Tray Font Size + + + tray_size_adjustment + 0 + True + 0 + right + 300 + + + + + + + (0 = theme default) + LeftBox Font Size + + + leftbox_size_adjustment + 0 + True + 0 + right + 300 + + + + + + + + + Padding + + + (-1 = theme default) + Tray Item Padding + + + tray_padding_adjustment + 0 + True + 0 + right + 300 + + + + + + + (-1 = theme default) + Status Icon Padding + + + statusicon_padding_adjustment + 0 + True + 0 + right + 300 + + + + + + + (-1 = theme default) + LeftBox Padding + + + leftbox_padding_adjustment + 0 + True + 0 + right + 300 + + + + + + + + + Animate + + + Animate switching applications + + + center + + + + + + + Animate launching new windows + + + center + + + + + + + + + Gnome functionality + + + (overview) + Keep original gnome-shell dash + + + center + + + + + + + Keep original gnome-shell top panel + + + center + + + + + + + (e.g. date menu) + Activate panel menu buttons on click only + + + center + + + + + + + Force Activities hot corner on primary monitor + + + center + + + + + + - \ No newline at end of file +