Compare commits
	
		
			1 Commits
		
	
	
		
			master
			...
			fix-pkexec
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 29d14c01d1 | 
							
								
								
									
										111
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										111
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							| @ -1,114 +1,3 @@ | |||||||
| mintmenu (6.1.7) victoria; urgency=medium |  | ||||||
| 
 |  | ||||||
|   [ Michael Webster ] |  | ||||||
|   * Add our own 'all applications' icon for consistency. |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Mon, 26 Jun 2023 11:07:53 +0200 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.1.6) victoria; urgency=medium |  | ||||||
| 
 |  | ||||||
|   [ Michael Webster ] |  | ||||||
|   * Use XAppGpuOffloadHelper for gpu offloading, respect PrefersNonDefaultGPU desktop entry key. |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Mon, 05 Jun 2023 13:40:15 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.1.5) vera; urgency=medium |  | ||||||
| 
 |  | ||||||
|   [ monsta ] |  | ||||||
|   * remove mint-common dependency (#274) |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Mon, 21 Nov 2022 11:57:37 +0000 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.1.4) uma; urgency=medium |  | ||||||
| 
 |  | ||||||
|   * Recent: Fix buttons layout |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Thu, 01 Jul 2021 13:39:07 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.1.3) uma; urgency=medium |  | ||||||
| 
 |  | ||||||
|   [ Vincent Vermeulen ] |  | ||||||
|   * fix recently used documents sorting |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Fri, 25 Jun 2021 16:34:15 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.1.2) ulyssa; urgency=medium |  | ||||||
| 
 |  | ||||||
|   [ Vincent Vermeulen ] |  | ||||||
|   * fix APT search |  | ||||||
| 
 |  | ||||||
|   [ Clement Lefebvre ] |  | ||||||
|   * Favorites: Add a scrolledwindow (#263) |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Sat, 02 Jan 2021 22:21:33 +0000 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.1.1) ulyana; urgency=medium |  | ||||||
| 
 |  | ||||||
|   [ Michael Webster ] |  | ||||||
|   * applications.py: Fix dnd for re-ordering/adding favorites. |  | ||||||
|   * recentHelper.py: Don't try to modify the recent list unless recents are enabled. |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Wed, 17 Jun 2020 16:30:48 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.1.0) ulyana; urgency=medium |  | ||||||
| 
 |  | ||||||
|   [ Michael Webster ] |  | ||||||
|   * mintMenu.py: Refactor panel button construction to fix padding in different configurations. |  | ||||||
|   * gtk: Fix a couple of deprecations |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Wed, 10 Jun 2020 16:43:29 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.0.9) ulyana; urgency=medium |  | ||||||
| 
 |  | ||||||
|   * Add missing dependency |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Wed, 10 Jun 2020 11:53:29 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.0.8) ulyana; urgency=medium |  | ||||||
| 
 |  | ||||||
|   * Search: Fix searching for accentuated strings |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Wed, 10 Jun 2020 11:49:34 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.0.7) ulyana; urgency=medium |  | ||||||
| 
 |  | ||||||
|   [ Michael Webster ] |  | ||||||
|   * Support nvidia on-demand app launching. |  | ||||||
| 
 |  | ||||||
|   [ Clement Lefebvre ] |  | ||||||
|   * l10n: Update POT |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Thu, 14 May 2020 08:14:45 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.0.6) ulyana; urgency=medium |  | ||||||
| 
 |  | ||||||
|   * Switch to symbolic panel icon |  | ||||||
|   * Remove applet text by default |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Fri, 24 Apr 2020 10:17:57 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.0.5) ulyana; urgency=medium |  | ||||||
| 
 |  | ||||||
|   * Fix typo in file path |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Thu, 23 Apr 2020 11:43:51 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.0.4) ulyana; urgency=medium |  | ||||||
| 
 |  | ||||||
|   [ Michael Webster ] |  | ||||||
|   * all: Use python3 |  | ||||||
|   * Use gsettings for recent and favorite apps |  | ||||||
|   * recent.py: Allow the clear button to apply to whichever tab is currently active. |  | ||||||
|   * about dialog: Fix program name and use a license type. |  | ||||||
| 
 |  | ||||||
|   [ Clement Lefebvre ] |  | ||||||
|   * Fix launching pkexec applications (#248) |  | ||||||
| 
 |  | ||||||
|   [ Michael Webster ] |  | ||||||
|   * debian: Fix dependencies to require python3 variants. |  | ||||||
| 
 |  | ||||||
|  -- Clement Lefebvre <root@linuxmint.com>  Fri, 03 Apr 2020 12:08:41 +0100 |  | ||||||
| 
 |  | ||||||
| mintmenu (6.0.3) tricia; urgency=medium | mintmenu (6.0.3) tricia; urgency=medium | ||||||
| 
 | 
 | ||||||
|   * Prefer mozo over menulibre |   * Prefer mozo over menulibre | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								debian/control
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								debian/control
									
									
									
									
										vendored
									
									
								
							| @ -2,21 +2,22 @@ Source: mintmenu | |||||||
| Section: admin | Section: admin | ||||||
| Priority: optional | Priority: optional | ||||||
| Maintainer: Clement Lefebvre <root@linuxmint.com> | Maintainer: Clement Lefebvre <root@linuxmint.com> | ||||||
| Build-Depends: debhelper (>= 9), python3, dh-python, | Build-Depends: debhelper (>= 9), python, dh-python, | ||||||
| Standards-Version: 3.9.5 | Standards-Version: 3.9.5 | ||||||
| 
 | 
 | ||||||
| Package: mintmenu | Package: mintmenu | ||||||
| Architecture: all | Architecture: all | ||||||
| Depends: | Depends: | ||||||
|  |  ${python:Depends}, | ||||||
|  ${misc:Depends}, |  ${misc:Depends}, | ||||||
|  python3, |  mint-common, | ||||||
|  python3-apt, |  python (>= 2.4), python (<< 3), | ||||||
|  python3-configobj, |  python-apt, | ||||||
|  python3-gi-cairo, |  python-configobj, | ||||||
|  python3-setproctitle, |  python-gi-cairo, | ||||||
|  python3-unidecode, |  python-setproctitle, | ||||||
|  python3-xlib, |  python-xlib, | ||||||
|  python3-xdg, |  python-xdg, | ||||||
|  python3-xapp, |  python3-xapp, | ||||||
|  python3-xlib, |  python3-xlib, | ||||||
|  xdg-utils, |  xdg-utils, | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								debian/postinst
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								debian/postinst
									
									
									
									
										vendored
									
									
								
							| @ -19,7 +19,7 @@ set -e | |||||||
| case "$1" in | case "$1" in | ||||||
|     configure) |     configure) | ||||||
|         glib-compile-schemas /usr/share/glib-2.0/schemas |         glib-compile-schemas /usr/share/glib-2.0/schemas | ||||||
|         python3 -m compileall -qf /usr/lib/linuxmint/mintMenu/ |         python -m compileall -qf /usr/lib/linuxmint/mintMenu/ | ||||||
|     ;; |     ;; | ||||||
| 
 | 
 | ||||||
|     abort-upgrade|abort-remove|abort-deconfigure) |     abort-upgrade|abort-remove|abort-deconfigure) | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								debian/rules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								debian/rules
									
									
									
									
										vendored
									
									
								
							| @ -3,7 +3,7 @@ | |||||||
| DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ') | DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ') | ||||||
| 
 | 
 | ||||||
| %: | %: | ||||||
| 	dh ${@} --with-python3 | 	dh ${@} --with-python2 | ||||||
| 
 | 
 | ||||||
| # Inject version number in the code | # Inject version number in the code | ||||||
| override_dh_installdeb: | override_dh_installdeb: | ||||||
|  | |||||||
							
								
								
									
										105
									
								
								mintmenu.pot
									
									
									
									
									
								
							
							
						
						
									
										105
									
								
								mintmenu.pot
									
									
									
									
									
								
							| @ -8,7 +8,7 @@ msgid "" | |||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: PACKAGE VERSION\n" | "Project-Id-Version: PACKAGE VERSION\n" | ||||||
| "Report-Msgid-Bugs-To: \n" | "Report-Msgid-Bugs-To: \n" | ||||||
| "POT-Creation-Date: 2020-05-14 08:12+0100\n" | "POT-Creation-Date: 2019-11-19 14:00+0000\n" | ||||||
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | "Language-Team: LANGUAGE <LL@li.org>\n" | ||||||
| @ -49,23 +49,23 @@ msgstr "" | |||||||
| msgid "Couldn't initialize plugin" | msgid "Couldn't initialize plugin" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/mintMenu.py:587 | #: usr/lib/linuxmint/mintMenu/mintMenu.py:592 | ||||||
| msgid "Advanced MATE Menu" | msgid "Advanced MATE Menu" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/mintMenu.py:698 | #: usr/lib/linuxmint/mintMenu/mintMenu.py:703 | ||||||
| msgid "Preferences" | msgid "Preferences" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/mintMenu.py:702 | #: usr/lib/linuxmint/mintMenu/mintMenu.py:707 | ||||||
| msgid "Edit menu" | msgid "Edit menu" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/mintMenu.py:706 | #: usr/lib/linuxmint/mintMenu/mintMenu.py:711 | ||||||
| msgid "Reload plugins" | msgid "Reload plugins" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/mintMenu.py:709 | #: usr/lib/linuxmint/mintMenu/mintMenu.py:714 | ||||||
| msgid "About" | msgid "About" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| @ -374,133 +374,134 @@ msgstr "" | |||||||
| msgid "Path" | msgid "Path" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:625 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:624 | ||||||
| #, python-format | #, python-format | ||||||
| msgid "Search DuckDuckGo for %s" | msgid "Search DuckDuckGo for %s" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:627 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:626 | ||||||
| #, python-format | #, python-format | ||||||
| msgid "Search Wikipedia for %s" | msgid "Search Wikipedia for %s" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:630 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:629 | ||||||
| #, python-format | #, python-format | ||||||
| msgid "Lookup %s in Dictionary" | msgid "Lookup %s in Dictionary" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:632 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:631 | ||||||
| #, python-format | #, python-format | ||||||
| msgid "Search Computer for %s" | msgid "Search Computer for %s" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:690 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:689 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:732 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:731 | ||||||
| #, python-format | #, python-format | ||||||
| msgid "Install package '%s'" | msgid "Install package '%s'" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:836 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:835 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:911 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:906 | ||||||
| msgid "Add to desktop" | msgid "Add to desktop" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:837 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:836 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:912 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:907 | ||||||
| msgid "Add to panel" | msgid "Add to panel" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:839 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:838 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:889 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:884 | ||||||
| msgid "Insert space" | msgid "Insert space" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:840 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:839 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:890 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:885 | ||||||
| msgid "Insert separator" | msgid "Insert separator" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:842 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:841 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:915 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:910 | ||||||
| msgid "Launch when I log in" | msgid "Launch when I log in" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:844 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:843 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:917 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:912 | ||||||
| msgid "Launch" | msgid "Launch" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:845 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:844 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:918 |  | ||||||
| msgid "Run with NVIDIA GPU" |  | ||||||
| msgstr "" |  | ||||||
| 
 |  | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:846 |  | ||||||
| msgid "Remove from favorites" | msgid "Remove from favorites" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:848 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:846 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:922 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:916 | ||||||
| msgid "Edit properties" | msgid "Edit properties" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:888 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:883 | ||||||
| msgid "Remove" | msgid "Remove" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:914 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:909 | ||||||
| msgid "Show in my favorites" | msgid "Show in my favorites" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:919 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:913 | ||||||
| msgid "Uninstall" | msgid "Uninstall" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:920 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:914 | ||||||
| msgid "Delete from menu" | msgid "Delete from menu" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:988 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:979 | ||||||
| msgid "Search DuckDuckGo" | msgid "Search DuckDuckGo" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:989 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:980 | ||||||
| msgid "Search Wikipedia" | msgid "Search Wikipedia" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:991 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:982 | ||||||
| msgid "Search Dictionary" | msgid "Search Dictionary" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:992 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:983 | ||||||
| msgid "Search Computer" | msgid "Search Computer" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:994 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:985 | ||||||
| msgid "Find Software" | msgid "Find Software" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:995 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:986 | ||||||
| msgid "Find Tutorials" | msgid "Find Tutorials" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:996 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:987 | ||||||
| msgid "Find Hardware" | msgid "Find Hardware" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:997 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:988 | ||||||
| msgid "Find Ideas" | msgid "Find Ideas" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:998 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:989 | ||||||
| msgid "Find Users" | msgid "Find Users" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:1642 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:1395 | ||||||
|  | msgid "" | ||||||
|  | "Couldn't save favorites. Check if you have write access to ~/.linuxmint/" | ||||||
|  | "mintMenu" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:1617 | ||||||
| msgid "All" | msgid "All" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/applications.py:1644 | #: usr/lib/linuxmint/mintMenu/plugins/applications.py:1619 | ||||||
| msgid "Show all applications" | msgid "Show all applications" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| @ -529,11 +530,17 @@ msgstr "" | |||||||
| msgid "Empty trash" | msgid "Empty trash" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/recent.py:41 | #: usr/lib/linuxmint/mintMenu/plugins/recentHelper.py:40 | ||||||
|  | msgid "" | ||||||
|  | "Couldn't save recent apps. Check if you have write access to ~/.linuxmint/" | ||||||
|  | "mintMenu" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #: usr/lib/linuxmint/mintMenu/plugins/recent.py:39 | ||||||
| msgid "Recently used" | msgid "Recently used" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: usr/lib/linuxmint/mintMenu/plugins/recent.py:192 | #: usr/lib/linuxmint/mintMenu/plugins/recent.py:169 | ||||||
| msgid "The file or location could not be opened." | msgid "The file or location could not be opened." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,13 +1,13 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| import sys, os | import sys, os | ||||||
| 
 | 
 | ||||||
| if len(sys.argv) > 1: | if len(sys.argv) > 1: | ||||||
|     if (sys.argv[1] in ["help", "h", "-?", "--help", "-h", "?"]): |     if (sys.argv[1] in ["help", "h", "-?", "--help", "-h", "?"]): | ||||||
|         print("mintMenu - the advanced MATE menu\n") |         print "mintMenu - the advanced MATE menu\n" | ||||||
|         print("options:") |         print "options:" | ||||||
|         print("  [--]help,  [-]h                    Display this help.") |         print "  [--]help,  [-]h                    Display this help." | ||||||
|         print("  [--]clean, [--]clear, [--]reset    Restore settings to default.\n") |         print "  [--]clean, [--]clear, [--]reset    Restore settings to default.\n" | ||||||
|     elif (sys.argv[1] in ["clean", "clear", "reset", "--clean", "--clear", "--reset"]): |     elif (sys.argv[1] in ["clean", "clear", "reset", "--clean", "--clear", "--reset"]): | ||||||
|         os.system("gsettings reset-recursively com.linuxmint.mintmenu") |         os.system("gsettings reset-recursively com.linuxmint.mintmenu") | ||||||
|         os.system("gsettings reset-recursively com.linuxmint.mintmenu.plugins.places") |         os.system("gsettings reset-recursively com.linuxmint.mintmenu.plugins.places") | ||||||
| @ -15,6 +15,6 @@ if len(sys.argv) > 1: | |||||||
|         os.system("gsettings reset-recursively com.linuxmint.mintmenu.plugins.recent") |         os.system("gsettings reset-recursively com.linuxmint.mintmenu.plugins.recent") | ||||||
|         os.system("gsettings reset-recursively com.linuxmint.mintmenu.plugins.system_management") |         os.system("gsettings reset-recursively com.linuxmint.mintmenu.plugins.system_management") | ||||||
|         os.system("rm -rf ~/.linuxmint/mintMenu") |         os.system("rm -rf ~/.linuxmint/mintMenu") | ||||||
|         print("All mintMenu settings are now restored to default") |         print "All mintMenu settings are now restored to default" | ||||||
| else: | else: | ||||||
|     os.system("/usr/lib/linuxmint/mintMenu/mintMenu.py") |     os.system("/usr/lib/linuxmint/mintMenu/mintMenu.py") | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| # -*- coding: utf-8; -*- | # -*- coding: utf-8; -*- | ||||||
| # Copyright (C) 2013  Ozcan Esen <ozcanesen@gmail.com> | # Copyright (C) 2013  Ozcan Esen <ozcanesen@gmail.com> | ||||||
| @ -118,7 +118,7 @@ class GlobalKeyBinding(GObject.GObject, threading.Thread): | |||||||
|         self.grab(self.keytext) |         self.grab(self.keytext) | ||||||
| 
 | 
 | ||||||
|     def get_mask_combinations(self, mask): |     def get_mask_combinations(self, mask): | ||||||
|         return [x for x in range(mask+1) if not (x & ~mask)] |         return [x for x in xrange(mask+1) if not (x & ~mask)] | ||||||
| 
 | 
 | ||||||
|     def idle(self): |     def idle(self): | ||||||
|         self.emit("activate") |         self.emit("activate") | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| import locale | import locale | ||||||
| import gc | import gc | ||||||
| @ -10,7 +10,6 @@ import traceback | |||||||
| import gi | import gi | ||||||
| gi.require_version("Gtk", "3.0") | gi.require_version("Gtk", "3.0") | ||||||
| gi.require_version('MatePanelApplet', '4.0') | gi.require_version('MatePanelApplet', '4.0') | ||||||
| gi.require_version('XApp', '1.0') |  | ||||||
| from gi.repository import Gtk, GdkPixbuf, Gdk, GObject | from gi.repository import Gtk, GdkPixbuf, Gdk, GObject | ||||||
| from gi.repository import MatePanelApplet | from gi.repository import MatePanelApplet | ||||||
| from gi.repository import Gio | from gi.repository import Gio | ||||||
| @ -22,6 +21,8 @@ import pointerMonitor | |||||||
| import setproctitle | import setproctitle | ||||||
| from plugins.execute import Execute | from plugins.execute import Execute | ||||||
| 
 | 
 | ||||||
|  | GObject.threads_init() | ||||||
|  | 
 | ||||||
| # Rename the process | # Rename the process | ||||||
| setproctitle.setproctitle('mintmenu') | setproctitle.setproctitle('mintmenu') | ||||||
| 
 | 
 | ||||||
| @ -130,7 +131,7 @@ class MainWindow(object): | |||||||
|                 try: |                 try: | ||||||
|                     X = __import__(plugin) |                     X = __import__(plugin) | ||||||
|                     # If no parameter passed to plugin it is autonomous |                     # If no parameter passed to plugin it is autonomous | ||||||
|                     if X.pluginclass.__init__.__code__.co_argcount == 1: |                     if X.pluginclass.__init__.func_code.co_argcount == 1: | ||||||
|                         MyPlugin = X.pluginclass() |                         MyPlugin = X.pluginclass() | ||||||
|                     else: |                     else: | ||||||
|                         # pass mintMenu and togglebutton instance so that the plugin can use it |                         # pass mintMenu and togglebutton instance so that the plugin can use it | ||||||
| @ -328,11 +329,10 @@ class MenuWin(object): | |||||||
|         self.detect_desktop_environment() |         self.detect_desktop_environment() | ||||||
|         self.settings = Gio.Settings.new("com.linuxmint.mintmenu") |         self.settings = Gio.Settings.new("com.linuxmint.mintmenu") | ||||||
|         self.icon_theme = Gtk.IconTheme.get_default() |         self.icon_theme = Gtk.IconTheme.get_default() | ||||||
|         self.button_icon = Gtk.Image(no_show_all=True) |         self.button_icon = Gtk.Image() | ||||||
|         self.loadSettings() |         self.loadSettings() | ||||||
| 
 | 
 | ||||||
|         self.button_box = None |         self.createPanelButton() | ||||||
|         self.updatePanelButton() |  | ||||||
| 
 | 
 | ||||||
|         self.mate_settings = Gio.Settings.new("org.mate.interface") |         self.mate_settings = Gio.Settings.new("org.mate.interface") | ||||||
|         self.mate_settings.connect("changed::gtk-theme", self.changeTheme) |         self.mate_settings.connect("changed::gtk-theme", self.changeTheme) | ||||||
| @ -346,7 +346,7 @@ class MenuWin(object): | |||||||
| 
 | 
 | ||||||
|         self.applet.set_flags(MatePanelApplet.AppletFlags.EXPAND_MINOR) |         self.applet.set_flags(MatePanelApplet.AppletFlags.EXPAND_MINOR) | ||||||
|         self.applet.connect("button-press-event", self.showMenu) |         self.applet.connect("button-press-event", self.showMenu) | ||||||
|         self.applet.connect("change-orient", self.updatePanelButton) |         self.applet.connect("change-orient", self.changeOrientation) | ||||||
|         self.applet.connect("enter-notify-event", self.enter_notify) |         self.applet.connect("enter-notify-event", self.enter_notify) | ||||||
|         self.applet.connect("leave-notify-event", self.leave_notify) |         self.applet.connect("leave-notify-event", self.leave_notify) | ||||||
| 
 | 
 | ||||||
| @ -427,69 +427,36 @@ class MenuWin(object): | |||||||
|             else: |             else: | ||||||
|                 self.button_icon.set_from_surface(self.surface) |                 self.button_icon.set_from_surface(self.surface) | ||||||
| 
 | 
 | ||||||
|     def updatePanelButton(self): |     def createPanelButton(self): | ||||||
|         if self.button_box != None: |  | ||||||
|             self.button_box.destroy() |  | ||||||
| 
 |  | ||||||
|         self.set_applet_icon() |         self.set_applet_icon() | ||||||
|         self.systemlabel = Gtk.Label(label= "%s" % self.buttonText, no_show_all=True) |         self.systemlabel = Gtk.Label(label= "%s " % self.buttonText) | ||||||
| 
 |  | ||||||
|         if os.path.isfile("/etc/linuxmint/info"): |         if os.path.isfile("/etc/linuxmint/info"): | ||||||
|             with open("/etc/linuxmint/info") as info: |             with open("/etc/linuxmint/info") as info: | ||||||
|                 for line in info: |                 for line in info: | ||||||
|  |                     line = line.decode("utf-8") | ||||||
|                     if line.startswith("DESCRIPTION="): |                     if line.startswith("DESCRIPTION="): | ||||||
|                         tooltip = line.split("=",1)[1].strip('"\n') |                         tooltip = line.split("=",1)[1].strip('"\n') | ||||||
|                         self.systemlabel.set_tooltip_text(tooltip) |                         self.systemlabel.set_tooltip_text(tooltip) | ||||||
|                         self.button_icon.set_tooltip_text(tooltip) |                         self.button_icon.set_tooltip_text(tooltip) | ||||||
|                         break |                         break | ||||||
| 
 |  | ||||||
|         self.button_icon.props.margin = 0 |  | ||||||
|         self.systemlabel.props.margin = 0 |  | ||||||
|         self.systemlabel.props.visible = show_text = self.buttonText != "" |  | ||||||
|         self.button_icon.props.visible = self.showIcon |  | ||||||
| 
 |  | ||||||
|         if self.applet.get_orient() == MatePanelApplet.AppletOrient.UP or self.applet.get_orient() == MatePanelApplet.AppletOrient.DOWN: |         if self.applet.get_orient() == MatePanelApplet.AppletOrient.UP or self.applet.get_orient() == MatePanelApplet.AppletOrient.DOWN: | ||||||
|             self.button_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5) |             self.button_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) | ||||||
|             self.button_box.pack_start(self.button_icon, False, False, 0) |             self.button_box.pack_start(self.button_icon, False, False, 0) | ||||||
|             self.button_box.pack_start(self.systemlabel, False, False, 0) |             self.button_box.pack_start(self.systemlabel, False, False, 0) | ||||||
|             if self.showIcon and not show_text: |             self.button_icon.set_padding(5, 0) | ||||||
|                 self.button_icon.props.margin_start = 5 |  | ||||||
|                 self.button_icon.props.margin_end = 5 |  | ||||||
|             elif show_text and not self.showIcon: |  | ||||||
|                 self.systemlabel.props.margin_start = 5 |  | ||||||
|                 self.systemlabel.props.margin_end = 5 |  | ||||||
|             else: |  | ||||||
|                 self.button_icon.props.margin_start = 5 |  | ||||||
|                 self.systemlabel.props.margin_end = 5 |  | ||||||
|         # if we have a vertical panel |         # if we have a vertical panel | ||||||
|         elif self.applet.get_orient() == MatePanelApplet.AppletOrient.LEFT: |         elif self.applet.get_orient() == MatePanelApplet.AppletOrient.LEFT: | ||||||
|             self.button_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5) |             self.button_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) | ||||||
|             self.systemlabel.set_angle(270) |             self.systemlabel.set_angle(270) | ||||||
|             self.button_box.pack_start(self.button_icon , False, False, 0) |             self.button_box.pack_start(self.button_icon , False, False, 0) | ||||||
|             self.button_box.pack_start(self.systemlabel , False, False, 0) |             self.button_box.pack_start(self.systemlabel , False, False, 0) | ||||||
|             if self.showIcon and not show_text: |             self.button_icon.set_padding(0, 5) | ||||||
|                 self.button_icon.props.margin_top = 5 |  | ||||||
|                 self.button_icon.props.margin_bottom = 5 |  | ||||||
|             elif show_text and not self.showIcon: |  | ||||||
|                 self.systemlabel.props.margin_top = 5 |  | ||||||
|                 self.systemlabel.props.margin_bottom = 5 |  | ||||||
|             else: |  | ||||||
|                 self.button_icon.props.margin_top = 5 |  | ||||||
|                 self.systemlabel.props.margin_bottom = 5 |  | ||||||
|         elif self.applet.get_orient() == MatePanelApplet.AppletOrient.RIGHT: |         elif self.applet.get_orient() == MatePanelApplet.AppletOrient.RIGHT: | ||||||
|             self.button_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5) |             self.button_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) | ||||||
|             self.systemlabel.set_angle(90) |             self.systemlabel.set_angle(90) | ||||||
|             self.button_box.pack_start(self.systemlabel , False, False, 0) |             self.button_box.pack_start(self.systemlabel , False, False, 0) | ||||||
|             self.button_box.pack_start(self.button_icon , False, False, 0) |             self.button_box.pack_start(self.button_icon , False, False, 0) | ||||||
|             if self.showIcon and not show_text: |             self.button_icon.set_padding(0, 5) | ||||||
|                 self.button_icon.props.margin_top = 5 |  | ||||||
|                 self.button_icon.props.margin_bottom = 5 |  | ||||||
|             elif show_text and not self.showIcon: |  | ||||||
|                 self.systemlabel.props.margin_top = 5 |  | ||||||
|                 self.systemlabel.props.margin_bottom = 5 |  | ||||||
|             else: |  | ||||||
|                 self.button_icon.props.margin_bottom = 5 |  | ||||||
|                 self.systemlabel.props.margin_top = 5 |  | ||||||
| 
 | 
 | ||||||
|         self.button_box.set_homogeneous(False) |         self.button_box.set_homogeneous(False) | ||||||
|         self.button_box.show_all() |         self.button_box.show_all() | ||||||
| @ -545,11 +512,53 @@ class MenuWin(object): | |||||||
|             except: |             except: | ||||||
|                 style_settings.set_property("gtk-theme-name", desktop_theme) |                 style_settings.set_property("gtk-theme-name", desktop_theme) | ||||||
| 
 | 
 | ||||||
|  |     def changeOrientation(self, *args, **kargs): | ||||||
|  |         if self.applet.get_orient() == MatePanelApplet.AppletOrient.UP or self.applet.get_orient() == MatePanelApplet.AppletOrient.DOWN: | ||||||
|  |             tmpbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) | ||||||
|  |             self.systemlabel.set_angle(0) | ||||||
|  |             self.button_box.reorder_child(self.button_icon, 0) | ||||||
|  |             self.button_icon.set_padding(5, 0) | ||||||
|  |         elif self.applet.get_orient() == MatePanelApplet.AppletOrient.LEFT: | ||||||
|  |             tmpbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) | ||||||
|  |             self.systemlabel.set_angle(270) | ||||||
|  |             self.button_box.reorder_child(self.button_icon, 0) | ||||||
|  |             self.button_icon.set_padding(0, 5) | ||||||
|  |         elif self.applet.get_orient() == MatePanelApplet.AppletOrient.RIGHT: | ||||||
|  |             tmpbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) | ||||||
|  |             self.systemlabel.set_angle(90) | ||||||
|  |             self.button_box.reorder_child(self.button_icon, 1) | ||||||
|  |             self.button_icon.set_padding(0, 5) | ||||||
|  | 
 | ||||||
|  |         tmpbox.set_homogeneous(False) | ||||||
|  | 
 | ||||||
|  |         # reparent all the hboxes to the new tmpbox | ||||||
|  |         for i in self.button_box: | ||||||
|  |             i.reparent(tmpbox) | ||||||
|  | 
 | ||||||
|  |         self.button_box.destroy() | ||||||
|  | 
 | ||||||
|  |         self.button_box = tmpbox | ||||||
|  |         self.button_box.show() | ||||||
|  | 
 | ||||||
|  |         # this call makes sure width stays intact | ||||||
|  |         self.updateButton() | ||||||
|  |         self.applet.add(self.button_box) | ||||||
|  | 
 | ||||||
|  |     def updateButton(self): | ||||||
|  |         self.systemlabel.set_text(self.buttonText) | ||||||
|  |         self.set_applet_icon() | ||||||
|  |         self.sizeButton() | ||||||
|  | 
 | ||||||
|     def hotkeyChanged (self, schema, key): |     def hotkeyChanged (self, schema, key): | ||||||
|         self.hotkeyText =  self.settings.get_string("hot-key") |         self.hotkeyText =  self.settings.get_string("hot-key") | ||||||
|         self.keybinder.rebind(self.hotkeyText) |         self.keybinder.rebind(self.hotkeyText) | ||||||
| 
 | 
 | ||||||
|     def sizeButton(self): |     def sizeButton(self): | ||||||
|  |         if self.showIcon: | ||||||
|  |             self.button_icon.show() | ||||||
|  |         else: | ||||||
|  |             self.button_icon.hide() | ||||||
|  | 
 | ||||||
|         # This code calculates width and height for the button_box |         # This code calculates width and height for the button_box | ||||||
|         # and takes the orientation and scale factor in account |         # and takes the orientation and scale factor in account | ||||||
|         bi_req = self.button_icon.get_preferred_size()[1] |         bi_req = self.button_icon.get_preferred_size()[1] | ||||||
| @ -558,24 +567,28 @@ class MenuWin(object): | |||||||
|         sl_scale = self.systemlabel.get_scale_factor() |         sl_scale = self.systemlabel.get_scale_factor() | ||||||
|         if self.applet.get_orient() == MatePanelApplet.AppletOrient.UP or self.applet.get_orient() == MatePanelApplet.AppletOrient.DOWN: |         if self.applet.get_orient() == MatePanelApplet.AppletOrient.UP or self.applet.get_orient() == MatePanelApplet.AppletOrient.DOWN: | ||||||
|             if self.showIcon: |             if self.showIcon: | ||||||
|                 self.applet.set_size_request(sl_req.width / sl_scale + bi_req.width / bi_scale, bi_req.height) |                 self.applet.set_size_request(sl_req.width / sl_scale + bi_req.width / bi_scale + 5, bi_req.height) | ||||||
|             else: |             else: | ||||||
|                 self.applet.set_size_request(sl_req.width / sl_scale, bi_req.height) |                 self.applet.set_size_request(sl_req.width / sl_scale + 2, bi_req.height) | ||||||
|         else: |         else: | ||||||
|             if self.showIcon: |             if self.showIcon: | ||||||
|                 self.applet.set_size_request(bi_req.width, sl_req.height / sl_scale + bi_req.height / bi_scale) |                 self.applet.set_size_request(bi_req.width, sl_req.height / sl_scale + bi_req.height / bi_scale + 5) | ||||||
|             else: |             else: | ||||||
|                 self.applet.set_size_request(bi_req.width, sl_req.height / sl_scale) |                 self.applet.set_size_request(bi_req.width, sl_req.height / sl_scale + 2) | ||||||
| 
 | 
 | ||||||
|     def reloadSettings(self, *args): |     def reloadSettings(self, *args): | ||||||
|         self.loadSettings() |         self.loadSettings() | ||||||
|         self.updatePanelButton() |         self.updateButton() | ||||||
| 
 | 
 | ||||||
|     def showAboutDialog(self, action, userdata = None): |     def showAboutDialog(self, action, userdata = None): | ||||||
|         about = Gtk.AboutDialog() |         about = Gtk.AboutDialog() | ||||||
|         about.set_program_name("mintMenu") |         about.set_name("mintMenu") | ||||||
|         about.set_version("__DEB_VERSION__") |         about.set_version("__DEB_VERSION__") | ||||||
|         about.set_license_type(Gtk.License.GPL_3_0) |         try: | ||||||
|  |             gpl = open('/usr/share/common-licenses/GPL','r').read() | ||||||
|  |             about.set_license(gpl) | ||||||
|  |         except Exception as e: | ||||||
|  |             print(e) | ||||||
|         about.set_comments(_("Advanced MATE Menu")) |         about.set_comments(_("Advanced MATE Menu")) | ||||||
|         # about.set_authors(["Clement Lefebvre <clem@linuxmint.com>", "Lars-Peter Clausen <lars@laprican.de>"]) |         # about.set_authors(["Clement Lefebvre <clem@linuxmint.com>", "Lars-Peter Clausen <lars@laprican.de>"]) | ||||||
|         about.set_translator_credits(("translator-credits")) |         about.set_translator_credits(("translator-credits")) | ||||||
|  | |||||||
| @ -1 +1 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
|  | |||||||
| @ -1,19 +1,18 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| import html | import cgi | ||||||
| import filecmp | import filecmp | ||||||
| import gettext | import gettext | ||||||
| import locale | import locale | ||||||
| import os | import os | ||||||
| import subprocess | import subprocess | ||||||
| import threading | import threading | ||||||
| import urllib.request, urllib.parse, urllib.error | import urllib | ||||||
| 
 | 
 | ||||||
| import gi | import gi | ||||||
| gi.require_version("Gtk", "3.0") | gi.require_version("Gtk", "3.0") | ||||||
| gi.require_version("MateMenu", "2.0") | gi.require_version("MateMenu", "2.0") | ||||||
| gi.require_version("XApp", "1.0") | from gi.repository import Gtk, Gdk, GdkPixbuf, Gio, GLib, MateMenu | ||||||
| from gi.repository import Gtk, Gdk, GdkPixbuf, Gio, GLib, MateMenu, XApp |  | ||||||
| 
 | 
 | ||||||
| import plugins.recentHelper as RecentHelper | import plugins.recentHelper as RecentHelper | ||||||
| from plugins.easybuttons import (ApplicationLauncher, CategoryButton, | from plugins.easybuttons import (ApplicationLauncher, CategoryButton, | ||||||
| @ -174,11 +173,11 @@ class pluginclass(object): | |||||||
|     toButton = (Gtk.TargetEntry.new("text/uri-list", 0, TARGET_TYPE_TEXT), |     toButton = (Gtk.TargetEntry.new("text/uri-list", 0, TARGET_TYPE_TEXT), | ||||||
|                 Gtk.TargetEntry.new("text/uri-list", 0, TARGET_TYPE_TEXT)) |                 Gtk.TargetEntry.new("text/uri-list", 0, TARGET_TYPE_TEXT)) | ||||||
|     TARGET_TYPE_FAV = 81 |     TARGET_TYPE_FAV = 81 | ||||||
|     toFav = (Gtk.TargetEntry.new("text/plain", Gtk.TargetFlags.SAME_APP, 81), |     toFav = (Gtk.TargetEntry.new("FAVORITES", Gtk.TargetFlags.SAME_APP, 81), | ||||||
|              Gtk.TargetEntry.new("text/plain", 0, 100), |              Gtk.TargetEntry.new("text/plain", 0, 100), | ||||||
|              Gtk.TargetEntry.new("text/uri-list", 0, 101)) |              Gtk.TargetEntry.new("text/uri-list", 0, 101)) | ||||||
|     fromFav = (Gtk.TargetEntry.new("text/plain", Gtk.TargetFlags.SAME_APP, 81), |     fromFav = (Gtk.TargetEntry.new("FAVORITES", Gtk.TargetFlags.SAME_APP, 81), | ||||||
|                Gtk.TargetEntry.new("text/plain", Gtk.TargetFlags.SAME_APP, 81)) |                Gtk.TargetEntry.new("FAVORITES", Gtk.TargetFlags.SAME_APP, 81)) | ||||||
| 
 | 
 | ||||||
|     #@print_timing |     #@print_timing | ||||||
|     def __init__(self, mintMenuWin, toggleButton, de): |     def __init__(self, mintMenuWin, toggleButton, de): | ||||||
| @ -189,17 +188,6 @@ class pluginclass(object): | |||||||
|         self.menuFiles = [] |         self.menuFiles = [] | ||||||
|         self.de = de |         self.de = de | ||||||
| 
 | 
 | ||||||
|         self.canOffload = False |  | ||||||
| 
 |  | ||||||
|         try: |  | ||||||
|             helper = XApp.GpuOffloadHelper.get_sync() |  | ||||||
|             self.canOffload = helper.is_offload_supported() |  | ||||||
|         except AttributeError: |  | ||||||
|             try: |  | ||||||
|                 self.canOffload = XApp.util_gpu_offload_supported() |  | ||||||
|             except AttributeError: |  | ||||||
|                 print("Could not check for gpu offload support - maybe xapps isn't up to date."); |  | ||||||
| 
 |  | ||||||
|         # Detect the locale (this is used for the Wikipedia search) |         # Detect the locale (this is used for the Wikipedia search) | ||||||
|         self.lang = "en" |         self.lang = "en" | ||||||
|         lang = os.getenv('LANG') |         lang = os.getenv('LANG') | ||||||
| @ -257,9 +245,6 @@ class pluginclass(object): | |||||||
|         try: |         try: | ||||||
|             # GSettings stuff |             # GSettings stuff | ||||||
|             self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.applications") |             self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.applications") | ||||||
| 
 |  | ||||||
|             self.migrate_favorites() |  | ||||||
| 
 |  | ||||||
|             self.GetGSettingsEntries() |             self.GetGSettingsEntries() | ||||||
|             self.settings.connect("changed::icon-size", self.changeIconSize) |             self.settings.connect("changed::icon-size", self.changeIconSize) | ||||||
|             self.settings.connect("changed::favicon-size", self.changeFavIconSize) |             self.settings.connect("changed::favicon-size", self.changeFavIconSize) | ||||||
| @ -279,7 +264,6 @@ class pluginclass(object): | |||||||
|             self.settings.connect("changed::enable-internet-search", self.GetGSettingsEntries) |             self.settings.connect("changed::enable-internet-search", self.GetGSettingsEntries) | ||||||
|             self.settings.connect("changed::search-command", self.GetGSettingsEntries) |             self.settings.connect("changed::search-command", self.GetGSettingsEntries) | ||||||
|             self.settings.connect("changed::default-tab", self.GetGSettingsEntries) |             self.settings.connect("changed::default-tab", self.GetGSettingsEntries) | ||||||
|             self.settings.connect("changed::favorite-apps-list", self.favoriteAppsChanged) |  | ||||||
|         except Exception as e: |         except Exception as e: | ||||||
|             print(e) |             print(e) | ||||||
| 
 | 
 | ||||||
| @ -535,6 +519,16 @@ class pluginclass(object): | |||||||
|     def RebuildPlugin(self): |     def RebuildPlugin(self): | ||||||
|         self.content_holder.set_size_request(self.width, self.height) |         self.content_holder.set_size_request(self.width, self.height) | ||||||
| 
 | 
 | ||||||
|  |     def checkMintMenuFolder(self): | ||||||
|  |         if os.path.exists(os.path.join(os.path.expanduser("~"), ".linuxmint", "mintMenu", "applications")): | ||||||
|  |             return True | ||||||
|  |         try: | ||||||
|  |             os.makedirs(os.path.join(os.path.expanduser("~"), ".linuxmint", "mintMenu", "applications")) | ||||||
|  |             return True | ||||||
|  |         except: | ||||||
|  |             pass | ||||||
|  |         return False | ||||||
|  | 
 | ||||||
|     def onShowMenu(self): |     def onShowMenu(self): | ||||||
|         if self.favorites: |         if self.favorites: | ||||||
|             if self.defaultTab == -1: |             if self.defaultTab == -1: | ||||||
| @ -624,7 +618,7 @@ class pluginclass(object): | |||||||
|         self.suggestions.append(item) |         self.suggestions.append(item) | ||||||
| 
 | 
 | ||||||
|     def add_search_suggestions(self, text): |     def add_search_suggestions(self, text): | ||||||
|         text = "<b>%s</b>" % html.escape(text) |         text = "<b>%s</b>" % cgi.escape(text) | ||||||
|         if self.enableInternetSearch: |         if self.enableInternetSearch: | ||||||
|             self.add_suggestion("/usr/lib/linuxmint/mintMenu/search_engines/ddg.svg", |             self.add_suggestion("/usr/lib/linuxmint/mintMenu/search_engines/ddg.svg", | ||||||
|                                 _("Search DuckDuckGo for %s") % text, None, self.search_ddg) |                                 _("Search DuckDuckGo for %s") % text, None, self.search_ddg) | ||||||
| @ -773,24 +767,16 @@ class pluginclass(object): | |||||||
|                             i.hide() |                             i.hide() | ||||||
|                         else: |                         else: | ||||||
|                             shownList.append(i) |                             shownList.append(i) | ||||||
|                             self.applicationsBox.remove(i) |                             #if this is the first matching item | ||||||
|  |                             #focus it | ||||||
|  |                             if(not showns): | ||||||
|  |                                 i.grab_focus() | ||||||
|                             showns = True |                             showns = True | ||||||
|                 if not showns: |                 if not showns: | ||||||
|                     if len(text) >= 3: |                     if len(text) >= 3: | ||||||
|                         self.add_search_suggestions(text) |                         self.add_search_suggestions(text) | ||||||
|                         if self.useAPT: |                         if self.useAPT: | ||||||
|                             GLib.timeout_add(300, self.add_apt_filter_results, text) |                             GLib.timeout_add(300, self.add_apt_filter_results, text) | ||||||
|                 else: |  | ||||||
|                     # Sort applications by relevance, and alphabetical within that |  | ||||||
|                     shownList = sorted(shownList, key=lambda app: app.appName) |  | ||||||
|                     shownList = sorted(shownList, key=lambda app: app.relevance, reverse=True) |  | ||||||
|                     focused = False |  | ||||||
|                     for i in shownList: |  | ||||||
|                         self.applicationsBox.add(i) |  | ||||||
|                         if not focused: |  | ||||||
|                             # Grab focus of the first app shown |  | ||||||
|                             i.grab_focus() |  | ||||||
|                             focused = True |  | ||||||
|                 for i in self.categoriesBox.get_children(): |                 for i in self.categoriesBox.get_children(): | ||||||
|                     i.released() |                     i.released() | ||||||
|                     i.set_relief(Gtk.ReliefStyle.NONE) |                     i.set_relief(Gtk.ReliefStyle.NONE) | ||||||
| @ -855,7 +841,6 @@ class pluginclass(object): | |||||||
|             startupMenuItem = Gtk.CheckMenuItem(_("Launch when I log in")) |             startupMenuItem = Gtk.CheckMenuItem(_("Launch when I log in")) | ||||||
|             separator3 = Gtk.SeparatorMenuItem() |             separator3 = Gtk.SeparatorMenuItem() | ||||||
|             launchMenuItem = Gtk.MenuItem(_("Launch")) |             launchMenuItem = Gtk.MenuItem(_("Launch")) | ||||||
|             launchOffloadedMenuItem = Gtk.MenuItem(_("Run with NVIDIA GPU")) |  | ||||||
|             removeFromFavMenuItem = Gtk.MenuItem(_("Remove from favorites")) |             removeFromFavMenuItem = Gtk.MenuItem(_("Remove from favorites")) | ||||||
|             separator4 = Gtk.SeparatorMenuItem() |             separator4 = Gtk.SeparatorMenuItem() | ||||||
|             propsMenuItem = Gtk.MenuItem(_("Edit properties")) |             propsMenuItem = Gtk.MenuItem(_("Edit properties")) | ||||||
| @ -871,7 +856,6 @@ class pluginclass(object): | |||||||
|                 startupMenuItem.set_active(False) |                 startupMenuItem.set_active(False) | ||||||
|                 startupMenuItem.connect("toggled", self.onAddToStartup, widget) |                 startupMenuItem.connect("toggled", self.onAddToStartup, widget) | ||||||
|             launchMenuItem.connect("activate", self.onLaunchApp, widget) |             launchMenuItem.connect("activate", self.onLaunchApp, widget) | ||||||
|             launchOffloadedMenuItem.connect("activate", self.onLaunchOffloadedApp, widget) |  | ||||||
|             removeFromFavMenuItem.connect("activate", self.onFavoritesRemove, widget) |             removeFromFavMenuItem.connect("activate", self.onFavoritesRemove, widget) | ||||||
|             propsMenuItem.connect("activate", self.onPropsApp, widget) |             propsMenuItem.connect("activate", self.onPropsApp, widget) | ||||||
| 
 | 
 | ||||||
| @ -885,8 +869,6 @@ class pluginclass(object): | |||||||
|             mTree.append(startupMenuItem) |             mTree.append(startupMenuItem) | ||||||
|             mTree.append(separator3) |             mTree.append(separator3) | ||||||
|             mTree.append(launchMenuItem) |             mTree.append(launchMenuItem) | ||||||
|             if self.canOffload: |  | ||||||
|                 mTree.append(launchOffloadedMenuItem) |  | ||||||
|             mTree.append(removeFromFavMenuItem) |             mTree.append(removeFromFavMenuItem) | ||||||
|             mTree.append(separator4) |             mTree.append(separator4) | ||||||
|             mTree.append(propsMenuItem) |             mTree.append(propsMenuItem) | ||||||
| @ -928,7 +910,6 @@ class pluginclass(object): | |||||||
|         startupMenuItem = Gtk.CheckMenuItem(_("Launch when I log in")) |         startupMenuItem = Gtk.CheckMenuItem(_("Launch when I log in")) | ||||||
|         separator2 = Gtk.SeparatorMenuItem() |         separator2 = Gtk.SeparatorMenuItem() | ||||||
|         launchMenuItem = Gtk.MenuItem(_("Launch")) |         launchMenuItem = Gtk.MenuItem(_("Launch")) | ||||||
|         launchOffloadedMenuItem = Gtk.MenuItem(_("Run with NVIDIA GPU")) |  | ||||||
|         uninstallMenuItem = Gtk.MenuItem(_("Uninstall")) |         uninstallMenuItem = Gtk.MenuItem(_("Uninstall")) | ||||||
|         deleteMenuItem = Gtk.MenuItem(_("Delete from menu")) |         deleteMenuItem = Gtk.MenuItem(_("Delete from menu")) | ||||||
|         separator3 = Gtk.SeparatorMenuItem() |         separator3 = Gtk.SeparatorMenuItem() | ||||||
| @ -943,8 +924,6 @@ class pluginclass(object): | |||||||
|         mTree.append(startupMenuItem) |         mTree.append(startupMenuItem) | ||||||
|         mTree.append(separator2) |         mTree.append(separator2) | ||||||
|         mTree.append(launchMenuItem) |         mTree.append(launchMenuItem) | ||||||
|         if self.canOffload: |  | ||||||
|             mTree.append(launchOffloadedMenuItem) |  | ||||||
|         mTree.append(uninstallMenuItem) |         mTree.append(uninstallMenuItem) | ||||||
|         if home in widget.desktopFile: |         if home in widget.desktopFile: | ||||||
|             mTree.append(deleteMenuItem) |             mTree.append(deleteMenuItem) | ||||||
| @ -956,7 +935,6 @@ class pluginclass(object): | |||||||
|         desktopMenuItem.connect("activate", self.add_to_desktop, widget) |         desktopMenuItem.connect("activate", self.add_to_desktop, widget) | ||||||
|         panelMenuItem.connect("activate", self.add_to_panel, widget) |         panelMenuItem.connect("activate", self.add_to_panel, widget) | ||||||
|         launchMenuItem.connect("activate", self.onLaunchApp, widget) |         launchMenuItem.connect("activate", self.onLaunchApp, widget) | ||||||
|         launchOffloadedMenuItem.connect("activate", self.onLaunchOffloadedApp, widget) |  | ||||||
|         propsMenuItem.connect("activate", self.onPropsApp, widget) |         propsMenuItem.connect("activate", self.onPropsApp, widget) | ||||||
|         uninstallMenuItem.connect("activate", self.onUninstallApp, widget) |         uninstallMenuItem.connect("activate", self.onUninstallApp, widget) | ||||||
| 
 | 
 | ||||||
| @ -1019,17 +997,17 @@ class pluginclass(object): | |||||||
|         self.focusSearchEntry(clear = False) |         self.focusSearchEntry(clear = False) | ||||||
| 
 | 
 | ||||||
|     def search_ddg(self, widget): |     def search_ddg(self, widget): | ||||||
|         text = urllib.parse.quote_plus(self.searchEntry.get_text().strip()) |         text = urllib.quote_plus(self.searchEntry.get_text().strip()) | ||||||
|         subprocess.Popen(["xdg-open", "https://duckduckgo.com/?q=%s" % text]) |         subprocess.Popen(["xdg-open", "https://duckduckgo.com/?q=%s" % text]) | ||||||
|         self.mintMenuWin.hide() |         self.mintMenuWin.hide() | ||||||
| 
 | 
 | ||||||
|     def search_google(self, widget): |     def search_google(self, widget): | ||||||
|         text = urllib.parse.quote_plus(self.searchEntry.get_text().strip()) |         text = urllib.quote_plus(self.searchEntry.get_text().strip()) | ||||||
|         subprocess.Popen(["xdg-open", "https://www.google.com/search?q=%s" % text]) |         subprocess.Popen(["xdg-open", "https://www.google.com/search?q=%s" % text]) | ||||||
|         self.mintMenuWin.hide() |         self.mintMenuWin.hide() | ||||||
| 
 | 
 | ||||||
|     def search_wikipedia(self, widget): |     def search_wikipedia(self, widget): | ||||||
|         text = urllib.parse.quote_plus(self.searchEntry.get_text().strip()) |         text = urllib.quote_plus(self.searchEntry.get_text().strip()) | ||||||
|         subprocess.Popen(["xdg-open", "https://en.wikipedia.org/wiki/Special:Search?search=%s" % text]) |         subprocess.Popen(["xdg-open", "https://en.wikipedia.org/wiki/Special:Search?search=%s" % text]) | ||||||
|         self.mintMenuWin.hide() |         self.mintMenuWin.hide() | ||||||
| 
 | 
 | ||||||
| @ -1039,27 +1017,27 @@ class pluginclass(object): | |||||||
|         self.mintMenuWin.hide() |         self.mintMenuWin.hide() | ||||||
| 
 | 
 | ||||||
|     def search_mint_tutorials(self, widget): |     def search_mint_tutorials(self, widget): | ||||||
|         text = urllib.parse.quote(self.searchEntry.get_text().strip()) |         text = urllib.quote(self.searchEntry.get_text().strip()) | ||||||
|         subprocess.Popen(["xdg-open", "https://community.linuxmint.com/index.php/tutorial/search/0/%s" % text]) |         subprocess.Popen(["xdg-open", "https://community.linuxmint.com/index.php/tutorial/search/0/%s" % text]) | ||||||
|         self.mintMenuWin.hide() |         self.mintMenuWin.hide() | ||||||
| 
 | 
 | ||||||
|     def search_mint_ideas(self, widget): |     def search_mint_ideas(self, widget): | ||||||
|         text = urllib.parse.quote(self.searchEntry.get_text().strip()) |         text = urllib.quote(self.searchEntry.get_text().strip()) | ||||||
|         subprocess.Popen(["xdg-open", "https://community.linuxmint.com/index.php/idea/search/0/%s" % text]) |         subprocess.Popen(["xdg-open", "https://community.linuxmint.com/index.php/idea/search/0/%s" % text]) | ||||||
|         self.mintMenuWin.hide() |         self.mintMenuWin.hide() | ||||||
| 
 | 
 | ||||||
|     def search_mint_users(self, widget): |     def search_mint_users(self, widget): | ||||||
|         text = urllib.parse.quote(self.searchEntry.get_text().strip()) |         text = urllib.quote(self.searchEntry.get_text().strip()) | ||||||
|         subprocess.Popen(["xdg-open", "https://community.linuxmint.com/index.php/user/search/0/%s" % text]) |         subprocess.Popen(["xdg-open", "https://community.linuxmint.com/index.php/user/search/0/%s" % text]) | ||||||
|         self.mintMenuWin.hide() |         self.mintMenuWin.hide() | ||||||
| 
 | 
 | ||||||
|     def search_mint_hardware(self, widget): |     def search_mint_hardware(self, widget): | ||||||
|         text = urllib.parse.quote(self.searchEntry.get_text().strip()) |         text = urllib.quote(self.searchEntry.get_text().strip()) | ||||||
|         subprocess.Popen(["xdg-open", "https://community.linuxmint.com/index.php/hardware/search/0/%s" % text]) |         subprocess.Popen(["xdg-open", "https://community.linuxmint.com/index.php/hardware/search/0/%s" % text]) | ||||||
|         self.mintMenuWin.hide() |         self.mintMenuWin.hide() | ||||||
| 
 | 
 | ||||||
|     def search_mint_software(self, widget): |     def search_mint_software(self, widget): | ||||||
|         text = urllib.parse.quote(self.searchEntry.get_text()) |         text = urllib.quote(self.searchEntry.get_text()) | ||||||
|         subprocess.Popen(["xdg-open", "https://community.linuxmint.com/index.php/software/search/0/%s" % text]) |         subprocess.Popen(["xdg-open", "https://community.linuxmint.com/index.php/software/search/0/%s" % text]) | ||||||
|         self.mintMenuWin.hide() |         self.mintMenuWin.hide() | ||||||
| 
 | 
 | ||||||
| @ -1098,10 +1076,6 @@ class pluginclass(object): | |||||||
|         widget.execute() |         widget.execute() | ||||||
|         self.mintMenuWin.hide() |         self.mintMenuWin.hide() | ||||||
| 
 | 
 | ||||||
|     def onLaunchOffloadedApp(self, menu, widget): |  | ||||||
|         widget.execute(offload=True) |  | ||||||
|         self.mintMenuWin.hide() |  | ||||||
| 
 |  | ||||||
|     def onPropsApp(self, menu, widget): |     def onPropsApp(self, menu, widget): | ||||||
|         newFileFlag = False |         newFileFlag = False | ||||||
|         sysPaths = get_system_item_paths() |         sysPaths = get_system_item_paths() | ||||||
| @ -1271,44 +1245,26 @@ class pluginclass(object): | |||||||
| 
 | 
 | ||||||
|         return None |         return None | ||||||
| 
 | 
 | ||||||
|     def migrate_favorites(self): |     def buildFavorites(self): | ||||||
|         if self.settings.get_strv("favorite-apps-list") != []: |         try: | ||||||
|             return |  | ||||||
| 
 |  | ||||||
|         default_path = os.path.join("/usr/lib/linuxmint/mintMenu/applications.list") |  | ||||||
|             path = os.path.join(home, ".linuxmint/mintMenu/applications.list") |             path = os.path.join(home, ".linuxmint/mintMenu/applications.list") | ||||||
| 
 |  | ||||||
|             if os.path.isdir(path): |             if os.path.isdir(path): | ||||||
|                 # dir created by a bug in mint 19.2 beta |                 # dir created by a bug in mint 19.2 beta | ||||||
|                 os.system("rm -rf %s" % path) |                 os.system("rm -rf %s" % path) | ||||||
|             return |  | ||||||
| 
 |  | ||||||
|             if not os.path.exists(path): |             if not os.path.exists(path): | ||||||
|             path = default_path |                 os.system("mkdir -p ~/.linuxmint/mintMenu") | ||||||
|  |                 os.system("cp /usr/lib/linuxmint/mintMenu/applications.list " + path) | ||||||
| 
 | 
 | ||||||
|         with open(path) as f: |             applicationsList = open(path).readlines() | ||||||
|             self.settings.set_strv("favorite-apps-list", f.readlines()) |  | ||||||
| 
 | 
 | ||||||
|         try: |             self.favorites =  [] | ||||||
|             os.replace(path, path + ".deprecated_uses_dconf_now") |  | ||||||
|         except: |  | ||||||
|             # This will fail if it was the default path, ignore it. |  | ||||||
|             pass |  | ||||||
| 
 |  | ||||||
|     def favoriteAppsChanged(self, setting, key): |  | ||||||
|         self.buildFavorites() |  | ||||||
| 
 |  | ||||||
|     def buildFavorites(self): |  | ||||||
|         try: |  | ||||||
|             faves = self.settings.get_strv("favorite-apps-list") |  | ||||||
| 
 | 
 | ||||||
|             for child in self.favoritesBox: |             for child in self.favoritesBox: | ||||||
|                 child.destroy() |                 child.destroy() | ||||||
| 
 | 
 | ||||||
|             position = 0 |             position = 0 | ||||||
|             self.favorites = [] |  | ||||||
| 
 | 
 | ||||||
|             for app in faves: |             for app in applicationsList: | ||||||
|                 try: |                 try: | ||||||
|                     app = app.strip() |                     app = app.strip() | ||||||
| 
 | 
 | ||||||
| @ -1340,6 +1296,7 @@ class pluginclass(object): | |||||||
|                     print("Can't add favorite: %s" % app) |                     print("Can't add favorite: %s" % app) | ||||||
|                     print (e) |                     print (e) | ||||||
| 
 | 
 | ||||||
|  |             self.favoritesSave() | ||||||
|         except Exception as e: |         except Exception as e: | ||||||
|             print(e) |             print(e) | ||||||
| 
 | 
 | ||||||
| @ -1425,15 +1382,20 @@ class pluginclass(object): | |||||||
|                 self.favoritesRemove(fav.position) |                 self.favoritesRemove(fav.position) | ||||||
| 
 | 
 | ||||||
|     def favoritesSave(self): |     def favoritesSave(self): | ||||||
|         new_faves = [] |         try: | ||||||
| 
 |             self.checkMintMenuFolder() | ||||||
|  |             with open(os.path.join(home, ".linuxmint/mintMenu/applications.list") , "w") as appListFile: | ||||||
|                 for favorite in self.favorites: |                 for favorite in self.favorites: | ||||||
|                     if favorite.type == "location": |                     if favorite.type == "location": | ||||||
|                 new_faves.append("location:" + favorite.desktopFile) |                         appListFile.write("location:" + favorite.desktopFile + "\n") | ||||||
|                     else: |                     else: | ||||||
|                 new_faves.append(favorite.type) |                         appListFile.write(favorite.type + "\n") | ||||||
| 
 |         except Exception as e: | ||||||
|         self.settings.set_strv("favorite-apps-list", new_faves) |             msgDlg = Gtk.MessageDialog(None, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, | ||||||
|  |                 _("Couldn't save favorites. Check if you have write access to ~/.linuxmint/mintMenu") + | ||||||
|  |                 "\n(" + e.__str__() + ")") | ||||||
|  |             msgDlg.run() | ||||||
|  |             msgDlg.destroy() | ||||||
| 
 | 
 | ||||||
|     def isLocationInFavorites(self, location): |     def isLocationInFavorites(self, location): | ||||||
|         for fav in self.favorites: |         for fav in self.favorites: | ||||||
| @ -1444,11 +1406,12 @@ class pluginclass(object): | |||||||
|     def on_drag_data_get(self, widget, context, selection, info, time): |     def on_drag_data_get(self, widget, context, selection, info, time): | ||||||
|         if info == self.TARGET_TYPE_FAV: |         if info == self.TARGET_TYPE_FAV: | ||||||
|             self.drag_origin = widget.position |             self.drag_origin = widget.position | ||||||
|             selection.set_text(str(widget.position), -1) |             # FIXME: This fails in python3: | ||||||
|  |             selection.set(selection.get_target(), 8, str(widget.position)) | ||||||
| 
 | 
 | ||||||
|     def on_drag_data_received(self, widget, context, x, y, selection, info, time): |     def on_drag_data_received(self, widget, context, x, y, selection, info, time): | ||||||
|         if info == self.TARGET_TYPE_FAV: |         if info == self.TARGET_TYPE_FAV: | ||||||
|             self.favoritesReorder(int(selection.get_data().decode()), widget.position) |             self.favoritesReorder(int(selection.get_data()), widget.position) | ||||||
| 
 | 
 | ||||||
|     # def on_icon_theme_changed(self, theme): |     # def on_icon_theme_changed(self, theme): | ||||||
|     #     print("on_icon_theme_changed") |     #     print("on_icon_theme_changed") | ||||||
| @ -1652,7 +1615,7 @@ class pluginclass(object): | |||||||
|     # Build a list of all categories in the menu ([{"name", "icon", tooltip"}] |     # Build a list of all categories in the menu ([{"name", "icon", tooltip"}] | ||||||
|     def buildCategoryList(self): |     def buildCategoryList(self): | ||||||
|         newCategoryList = [{"name": _("All"), |         newCategoryList = [{"name": _("All"), | ||||||
|                             "icon": "mintmenu-all-applications-symbolic", |                             "icon": "start-here-symbolic", | ||||||
|                             "tooltip": _("Show all applications"), |                             "tooltip": _("Show all applications"), | ||||||
|                             "filter":"", "index": 0}] |                             "filter":"", "index": 0}] | ||||||
|         num = 1 |         num = 1 | ||||||
|  | |||||||
| @ -1,8 +1,7 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| import os.path | import os.path | ||||||
| import shutil | import shutil | ||||||
| import unidecode |  | ||||||
| 
 | 
 | ||||||
| import xdg.DesktopEntry | import xdg.DesktopEntry | ||||||
| import xdg.Menu | import xdg.Menu | ||||||
| @ -129,7 +128,7 @@ class easyButton(Gtk.Button): | |||||||
| 
 | 
 | ||||||
|         if labels: |         if labels: | ||||||
|             for label in labels: |             for label in labels: | ||||||
|                 if isinstance(label, str): |                 if isinstance(label, basestring): | ||||||
|                     self.addLabel(label) |                     self.addLabel(label) | ||||||
|                 elif isinstance(label, list): |                 elif isinstance(label, list): | ||||||
|                     self.addLabel(label[0], label[1]) |                     self.addLabel(label[0], label[1]) | ||||||
| @ -234,7 +233,6 @@ class ApplicationLauncher(easyButton): | |||||||
| 
 | 
 | ||||||
|         self.desktopFile = desktopFile |         self.desktopFile = desktopFile | ||||||
|         self.startupMonitorId = 0 |         self.startupMonitorId = 0 | ||||||
|         self.relevance = 0 |  | ||||||
| 
 | 
 | ||||||
|         self.loadDesktopEntry(desktopItem) |         self.loadDesktopEntry(desktopItem) | ||||||
| 
 | 
 | ||||||
| @ -260,16 +258,15 @@ class ApplicationLauncher(easyButton): | |||||||
| 
 | 
 | ||||||
|     def loadDesktopEntry(self, desktopItem): |     def loadDesktopEntry(self, desktopItem): | ||||||
|         try: |         try: | ||||||
|             self.appName = desktopItem.getName() |             self.appName = self.strip_accents(desktopItem.getName()) | ||||||
|             self.appGenericName = desktopItem.getGenericName() |             self.appGenericName = self.strip_accents(desktopItem.getGenericName()) | ||||||
|             self.appComment = desktopItem.getComment() |             self.appComment = self.strip_accents(desktopItem.getComment()) | ||||||
|             self.appExec = desktopItem.getExec().replace('\\\\', '\\') |             self.appExec = self.strip_accents(desktopItem.getExec().replace('\\\\', '\\')) | ||||||
|             self.appIconName = desktopItem.getIcon() |             self.appIconName = desktopItem.getIcon() | ||||||
|             self.appCategories = desktopItem.getCategories() |             self.appCategories = desktopItem.getCategories() | ||||||
|             self.appMateDocPath = desktopItem.get("X-MATE-DocPath") or "" |             self.appMateDocPath = desktopItem.get("X-MATE-DocPath") or "" | ||||||
|             self.useTerminal = desktopItem.getTerminal() |             self.useTerminal = desktopItem.getTerminal() | ||||||
|             self.appPath = desktopItem.getPath() |             self.appPath = desktopItem.getPath() | ||||||
|             self.prefersOffload = desktopItem.get("PrefersNonDefaultGPU", "Desktop Entry", type="boolean") |  | ||||||
| 
 | 
 | ||||||
|             if not self.appMateDocPath: |             if not self.appMateDocPath: | ||||||
|                 self.appKdeDocPath      = desktopItem.getDocPath() or "" |                 self.appKdeDocPath      = desktopItem.getDocPath() or "" | ||||||
| @ -306,39 +303,24 @@ class ApplicationLauncher(easyButton): | |||||||
|         self.addLabel(self.appName) |         self.addLabel(self.appName) | ||||||
| 
 | 
 | ||||||
|     def filterText(self, text): |     def filterText(self, text): | ||||||
|         keywords = self.strip_case_and_accents(text).split() |         keywords = text.lower().split() | ||||||
|         self.relevance = 0 |         appName = self.appName.lower() | ||||||
| 
 |         appGenericName = self.appGenericName.lower() | ||||||
|         appName = self.strip_case_and_accents(self.appName) |         appComment = self.appComment.lower() | ||||||
|         appGenericName = self.strip_case_and_accents(self.appGenericName) |         appExec = self.appExec.lower() | ||||||
|         appComment = self.strip_case_and_accents(self.appComment) |  | ||||||
|         appExec = self.strip_case_and_accents(self.appExec) |  | ||||||
| 
 |  | ||||||
|         for keyword in keywords: |         for keyword in keywords: | ||||||
|             if appName == keyword: |             keyw = self.strip_accents(keyword) | ||||||
|                 self.relevance += 32 |             if keyw != "" and appName.find(keyw) == -1 and appGenericName.find(keyw) == -1 and appComment.find(keyw) == -1 and appExec.find(keyw) == -1: | ||||||
|             elif appName.find(keyword) == 0: |  | ||||||
|                 self.relevance += 16 |  | ||||||
|             elif appName.find(keyword) != -1: |  | ||||||
|                 self.relevance += 8 |  | ||||||
| 
 |  | ||||||
|             if appExec.find(keyword) != -1: |  | ||||||
|                 self.relevance += 4 |  | ||||||
|             if appComment.find(keyword) != -1: |  | ||||||
|                 self.relevance += 2 |  | ||||||
|             if appGenericName.find(keyword) != -1: |  | ||||||
|                 self.relevance += 1 |  | ||||||
| 
 |  | ||||||
|             if keyword != "" and appName.find(keyword) == -1 and appGenericName.find(keyword) == -1 and appComment.find(keyword) == -1 and appExec.find(keyword) == -1: |  | ||||||
|                 self.hide() |                 self.hide() | ||||||
|                 return False |                 return False | ||||||
|         self.show() |         self.show() | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def strip_case_and_accents(self, string): |     def strip_accents(self, string): | ||||||
|         if isinstance(string, str): |         value = string | ||||||
|  |         if isinstance(string, unicode): | ||||||
|             try: |             try: | ||||||
|                 value = unidecode.unidecode(string.lower()) |                 value = string.encode('UTF8', 'ignore') | ||||||
|             except: |             except: | ||||||
|                 pass |                 pass | ||||||
|         return value |         return value | ||||||
| @ -359,7 +341,7 @@ class ApplicationLauncher(easyButton): | |||||||
|             else: |             else: | ||||||
|                 selection.set_uris(["file://" + self.desktopFile]) |                 selection.set_uris(["file://" + self.desktopFile]) | ||||||
| 
 | 
 | ||||||
|     def execute(self, *args, **kwargs): |     def execute(self, *args): | ||||||
|         if self.appExec: |         if self.appExec: | ||||||
|             if self.useTerminal: |             if self.useTerminal: | ||||||
|                 cmd = "x-terminal-emulator -e \"" + self.appExec + "\"" |                 cmd = "x-terminal-emulator -e \"" + self.appExec + "\"" | ||||||
| @ -367,17 +349,12 @@ class ApplicationLauncher(easyButton): | |||||||
|                     cmd = "mate-terminal -e \"" + self.appExec + "\"" |                     cmd = "mate-terminal -e \"" + self.appExec + "\"" | ||||||
|                 Execute(cmd, self.appPath) |                 Execute(cmd, self.appPath) | ||||||
|             else: |             else: | ||||||
|                 offload = False |                 if self.appExec.startswith("pkexec "): | ||||||
| 
 |                     print ("Using pkexec workaround...") | ||||||
|                 try: |                     cmd = "sh -c \"" + self.appExec + "\"" | ||||||
|                     offload = kwargs["offload"] |                     Execute(cmd, self.appPath) | ||||||
|                 except KeyError: |                 else: | ||||||
|                     pass |                     Execute(None, desktopFile=self.desktopFile) | ||||||
| 
 |  | ||||||
|                 if self.prefersOffload: |  | ||||||
|                     offload = True |  | ||||||
| 
 |  | ||||||
|                 Execute(None, desktopFile=self.desktopFile, offload=offload) |  | ||||||
| 
 | 
 | ||||||
|     def uninstall(self, *args): |     def uninstall(self, *args): | ||||||
|         Execute("mint-remove-application " + self.desktopFile) |         Execute("mint-remove-application " + self.desktopFile) | ||||||
| @ -413,6 +390,13 @@ class ApplicationLauncher(easyButton): | |||||||
|         if os.path.exists(self.startupFilePath): |         if os.path.exists(self.startupFilePath): | ||||||
|             os.remove(self.startupFilePath) |             os.remove(self.startupFilePath) | ||||||
| 
 | 
 | ||||||
|  |     def addToFavourites(self): | ||||||
|  |         favouritesDir = os.path.join(os.path.expanduser("~"), ".linuxmint/mintMenu/applications") | ||||||
|  |         if not os.path.exists(favouritesDir): | ||||||
|  |             os.makedirs(favouritesDir) | ||||||
|  | 
 | ||||||
|  |         shutil.copyfile(self.desktopFile, self.favouritesFilePath) | ||||||
|  | 
 | ||||||
|     def removeFromFavourites(self): |     def removeFromFavourites(self): | ||||||
|         if os.path.exists(self.favouritesFilePath): |         if os.path.exists(self.favouritesFilePath): | ||||||
|             os.remove(self.favouritesFilePath) |             os.remove(self.favouritesFilePath) | ||||||
| @ -489,12 +473,12 @@ class MenuApplicationLauncher(ApplicationLauncher): | |||||||
|         else: |         else: | ||||||
|             self.addLabel(appName) |             self.addLabel(appName) | ||||||
| 
 | 
 | ||||||
|     def execute(self, *args, **kwargs): |     def execute(self, *args): | ||||||
|         self.highlight = False |         self.highlight = False | ||||||
|         for child in self.labelBox: |         for child in self.labelBox: | ||||||
|             child.destroy() |             child.destroy() | ||||||
|         self.setupLabels() |         self.setupLabels() | ||||||
|         return super(MenuApplicationLauncher, self).execute(*args, **kwargs) |         return super(MenuApplicationLauncher, self).execute(*args) | ||||||
| 
 | 
 | ||||||
|     def setShowComment(self, showComment): |     def setShowComment(self, showComment): | ||||||
|         self.showComment = showComment |         self.showComment = showComment | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| import os | import os | ||||||
| from gi.repository import Gio, GLib, Gdk, XApp | from gi.repository import Gio | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def RemoveArgs(Execline): | def RemoveArgs(Execline): | ||||||
| @ -16,46 +16,13 @@ def RemoveArgs(Execline): | |||||||
| 
 | 
 | ||||||
|     return Execline |     return Execline | ||||||
| 
 | 
 | ||||||
| def dummy_child_watch (pid, status, data): |  | ||||||
|   # Do nothing, this is just to ensure we don't double fork |  | ||||||
|   # and break pkexec: https://bugzilla.gnome.org/show_bug.cgi?id=675789 |  | ||||||
|   pass |  | ||||||
| 
 |  | ||||||
| def gather_pid_callback(appinfo, pid, data): |  | ||||||
|     GLib.child_watch_add(pid, dummy_child_watch, None) |  | ||||||
| 
 |  | ||||||
| # Actually execute the command | # Actually execute the command | ||||||
| def Execute(cmd , commandCwd=None, desktopFile=None, offload=False): | def Execute(cmd , commandCwd=None, desktopFile=None): | ||||||
|     if desktopFile: |     if desktopFile: | ||||||
|         launcher = Gio.DesktopAppInfo.new_from_filename(desktopFile) |         launcher = Gio.DesktopAppInfo.new_from_filename(desktopFile) | ||||||
|         context = Gdk.Display.get_default().get_app_launch_context() |         retval = launcher.launch_uris() | ||||||
|         if offload: |  | ||||||
|             print("Offloading '%s' to discrete gpu." % launcher.get_name()); |  | ||||||
| 
 | 
 | ||||||
|             try: |  | ||||||
|                 helper = XApp.GpuOffloadHelper.get_sync() |  | ||||||
|                 infos = helper.get_offload_infos() |  | ||||||
| 
 |  | ||||||
|                 if infos: |  | ||||||
|                     i = 0 |  | ||||||
|                     env_strv = infos[0].env_strv |  | ||||||
|                     while i < len(env_strv): |  | ||||||
|                         context.setenv(env_strv[i], env_strv[i + 1]) |  | ||||||
|                         i += 2 |  | ||||||
|             except AttributeError: |  | ||||||
|                 context.setenv("__NV_PRIME_RENDER_OFFLOAD", "1") |  | ||||||
|                 context.setenv("__GLX_VENDOR_LIBRARY_NAME", "nvidia"); |  | ||||||
| 
 |  | ||||||
|         try: |  | ||||||
|             retval = launcher.launch_uris_as_manager(uris=[], |  | ||||||
|                                                      launch_context=context, |  | ||||||
|                                                      spawn_flags=GLib.SpawnFlags.SEARCH_PATH|GLib.SpawnFlags.DO_NOT_REAP_CHILD, |  | ||||||
|                                                      user_setup=None, user_setup_data=None, |  | ||||||
|                                                      pid_callback=gather_pid_callback, pid_callback_data=None) |  | ||||||
|         return retval |         return retval | ||||||
|         except GLib.Error as e: |  | ||||||
|             print("Error launching %s: %s" % (launcher.get_name(), e.message)) |  | ||||||
|             return False |  | ||||||
| 
 | 
 | ||||||
|     cwd = os.path.expanduser("~") |     cwd = os.path.expanduser("~") | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| import os | import os | ||||||
| import os.path | import os.path | ||||||
|  | |||||||
| @ -1,11 +1,11 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| import locale | import locale | ||||||
| import gettext | import gettext | ||||||
| import os | import os | ||||||
| import string | import string | ||||||
| from glob import glob | from glob import glob | ||||||
| from urllib.parse import unquote | from urllib import unquote | ||||||
| 
 | 
 | ||||||
| import gi | import gi | ||||||
| gi.require_version("Gtk", "3.0") | gi.require_version("Gtk", "3.0") | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| import gettext | import gettext | ||||||
| import locale | import locale | ||||||
| @ -7,13 +7,11 @@ import subprocess | |||||||
| 
 | 
 | ||||||
| import gi | import gi | ||||||
| gi.require_version("Gtk", "3.0") | gi.require_version("Gtk", "3.0") | ||||||
| from gi.repository import Gtk, Gio, Pango | from gi.repository import Gtk, Gio | ||||||
| 
 | 
 | ||||||
| import plugins.recentHelper as RecentHelper | import plugins.recentHelper as RecentHelper | ||||||
| from plugins.execute import Execute | from plugins.execute import Execute | ||||||
| 
 | 
 | ||||||
| home = os.path.expanduser("~") |  | ||||||
| 
 |  | ||||||
| # i18n | # i18n | ||||||
| gettext.install("mintmenu", "/usr/share/linuxmint/locale") | gettext.install("mintmenu", "/usr/share/linuxmint/locale") | ||||||
| locale.bindtextdomain("mintmenu", "/usr/share/linuxmint/locale") | locale.bindtextdomain("mintmenu", "/usr/share/linuxmint/locale") | ||||||
| @ -58,9 +56,6 @@ class pluginclass: | |||||||
|         self.icon = 'mate-folder.png' |         self.icon = 'mate-folder.png' | ||||||
| 
 | 
 | ||||||
|         self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.recent") |         self.settings = Gio.Settings("com.linuxmint.mintmenu.plugins.recent") | ||||||
|         RecentHelper.settings = self.settings |  | ||||||
| 
 |  | ||||||
|         self.migrate_recent_apps() |  | ||||||
|         self.settings.connect('changed', self.RegenPlugin) |         self.settings.connect('changed', self.RegenPlugin) | ||||||
| 
 | 
 | ||||||
|         self.appSettings = Gio.Settings("com.linuxmint.mintmenu.plugins.applications") |         self.appSettings = Gio.Settings("com.linuxmint.mintmenu.plugins.applications") | ||||||
| @ -92,20 +87,6 @@ class pluginclass: | |||||||
|     def RegenPlugin(self, *args, **kargs): |     def RegenPlugin(self, *args, **kargs): | ||||||
|         self.GetGSettingsEntries() |         self.GetGSettingsEntries() | ||||||
| 
 | 
 | ||||||
|     def migrate_recent_apps(self): |  | ||||||
|         if self.settings.get_strv("recent-apps-list") != []: |  | ||||||
|             return |  | ||||||
| 
 |  | ||||||
|         path = os.path.join(home, ".linuxmint/mintMenu/recentApplications.list") |  | ||||||
|         if os.path.exists(path): |  | ||||||
|             with open(path) as f: |  | ||||||
|                 self.settings.set_strv("recent-apps-list", f.readlines()) |  | ||||||
| 
 |  | ||||||
|             try: |  | ||||||
|                 os.unlink(path) |  | ||||||
|             except: |  | ||||||
|                 pass |  | ||||||
| 
 |  | ||||||
|     def GetGSettingsEntries(self): |     def GetGSettingsEntries(self): | ||||||
|         self.recenth = self.settings.get_int("height") |         self.recenth = self.settings.get_int("height") | ||||||
|         self.recentw = self.settings.get_int("width") |         self.recentw = self.settings.get_int("width") | ||||||
| @ -149,11 +130,7 @@ class pluginclass: | |||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def clrmenu(self, *args, **kargs): |     def clrmenu(self, *args, **kargs): | ||||||
|         if self.builder.get_object("RecentTabs").get_current_page() == 0: # files |  | ||||||
|         self.RecManagerInstance.purge_items() |         self.RecManagerInstance.purge_items() | ||||||
|         else: # apps |  | ||||||
|             self.settings.reset("recent-apps-list") |  | ||||||
| 
 |  | ||||||
|         self.DoRecent() |         self.DoRecent() | ||||||
| 
 | 
 | ||||||
|     def AddRecentBtn(self, Name, RecentImage): |     def AddRecentBtn(self, Name, RecentImage): | ||||||
| @ -174,7 +151,7 @@ class pluginclass: | |||||||
|         Box1.add(ButtonIcon) |         Box1.add(ButtonIcon) | ||||||
| 
 | 
 | ||||||
|         Label1 = Gtk.Label(DispName) |         Label1 = Gtk.Label(DispName) | ||||||
|         Label1.set_ellipsize(Pango.EllipsizeMode.END) |         Label1.set_ellipsize(3) | ||||||
|         Box1.add(Label1) |         Box1.add(Label1) | ||||||
| 
 | 
 | ||||||
|         AButton.add(Box1) |         AButton.add(Box1) | ||||||
| @ -197,7 +174,7 @@ class pluginclass: | |||||||
|     def GetRecent(self, *args, **kargs): |     def GetRecent(self, *args, **kargs): | ||||||
|         FileString=[] |         FileString=[] | ||||||
|         IconString=[] |         IconString=[] | ||||||
|         RecentInfo=sorted(self.RecManagerInstance.get_items(), key=lambda item: item.get_modified(), reverse=True) |         RecentInfo=self.RecManagerInstance.get_items() | ||||||
|         count=0 |         count=0 | ||||||
|         MaxEntries=self.numentries |         MaxEntries=self.numentries | ||||||
|         if self.numentries == -1: |         if self.numentries == -1: | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| import os | import os | ||||||
| 
 | 
 | ||||||
| @ -10,8 +10,6 @@ from plugins.easybuttons import ApplicationLauncher | |||||||
| 
 | 
 | ||||||
| home = os.path.expanduser("~") | home = os.path.expanduser("~") | ||||||
| recentApps = [] | recentApps = [] | ||||||
| settings = None # set by recent plugin |  | ||||||
| 
 |  | ||||||
| mintMenuWin = None | mintMenuWin = None | ||||||
| recentAppBox = None | recentAppBox = None | ||||||
| numentries = 10 | numentries = 10 | ||||||
| @ -27,15 +25,21 @@ def recentAppsAdd(recentAppsButton): | |||||||
|             counter = counter + 1 |             counter = counter + 1 | ||||||
| 
 | 
 | ||||||
| def recentAppsSave(): | def recentAppsSave(): | ||||||
|     new_recent_apps = [] |     try: | ||||||
| 
 |         path = os.path.join(home, ".linuxmint/mintMenu/recentApplications.list") | ||||||
|  |         with open(path, "w") as recentAppListFile: | ||||||
|             for recentApp in recentApps: |             for recentApp in recentApps: | ||||||
|                 if not hasattr(recentApp, "type") or recentApp.type == "location": |                 if not hasattr(recentApp, "type") or recentApp.type == "location": | ||||||
|             new_recent_apps.append("location:" + recentApp.desktopFile) |                     recentAppListFile.write("location:" + recentApp.desktopFile + "\n") | ||||||
|                 else: |                 else: | ||||||
|             new_recent_apps.append(recentApp.type) |                     recentAppListFile.write(recentApp.type + "\n") | ||||||
| 
 | 
 | ||||||
|     settings.set_strv("recent-apps-list", new_recent_apps) |     except Exception as e: | ||||||
|  |         print(e) | ||||||
|  |         msgDlg = Gtk.MessageDialog(None, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, | ||||||
|  |             _("Couldn't save recent apps. Check if you have write access to ~/.linuxmint/mintMenu")+"\n(" + e.__str__() + ")") | ||||||
|  |         msgDlg.run() | ||||||
|  |         msgDlg.destroy() | ||||||
| 
 | 
 | ||||||
| def recentAppBuildLauncher(location): | def recentAppBuildLauncher(location): | ||||||
|     try: |     try: | ||||||
| @ -78,9 +82,13 @@ def recentAppBuildLauncher(location): | |||||||
| def buildRecentApps(): | def buildRecentApps(): | ||||||
|     del recentApps[:] |     del recentApps[:] | ||||||
|     try: |     try: | ||||||
|         recent_apps = settings.get_strv("recent-apps-list") |         path = os.path.join(home, ".linuxmint/mintMenu/recentApplications.list") | ||||||
|  |         if not os.path.exists(path): | ||||||
|  |             recentApplicationsList = [] | ||||||
|  |         else: | ||||||
|  |             recentApplicationsList = open(path).readlines() | ||||||
| 
 | 
 | ||||||
|         for app in recent_apps: |         for app in recentApplicationsList : | ||||||
|             app = app.strip() |             app = app.strip() | ||||||
| 
 | 
 | ||||||
|             if app[0:9] == "location:": |             if app[0:9] == "location:": | ||||||
| @ -115,10 +123,6 @@ def doRecentApps(): | |||||||
| 
 | 
 | ||||||
| def applicationButtonClicked(widget): | def applicationButtonClicked(widget): | ||||||
|     mintMenuWin.hide() |     mintMenuWin.hide() | ||||||
| 
 |  | ||||||
|     if settings == None: |  | ||||||
|         return |  | ||||||
| 
 |  | ||||||
|     recentAppsAdd(widget) |     recentAppsAdd(widget) | ||||||
|     recentAppsSave() |     recentAppsSave() | ||||||
|     doRecentApps() |     doRecentApps() | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| #!/usr/bin/python | #!/usr/bin/python2 | ||||||
| 
 | 
 | ||||||
| import threading | import threading | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -49,8 +49,8 @@ class mintMenuPreferences(): | |||||||
| 
 | 
 | ||||||
|     def __init__(self): |     def __init__(self): | ||||||
| 
 | 
 | ||||||
|         self.settings = Gio.Settings(schema_id="com.linuxmint.mintmenu") |         self.settings = Gio.Settings("com.linuxmint.mintmenu") | ||||||
|         self.places_settings = Gio.Settings(schema_id="com.linuxmint.mintmenu.plugins.places") |         self.places_settings = Gio.Settings("com.linuxmint.mintmenu.plugins.places") | ||||||
| 
 | 
 | ||||||
|         self.builder = Gtk.Builder() |         self.builder = Gtk.Builder() | ||||||
|         self.builder.set_translation_domain("mintmenu") |         self.builder.set_translation_domain("mintmenu") | ||||||
|  | |||||||
| @ -33,7 +33,7 @@ | |||||||
|     </key> |     </key> | ||||||
| 
 | 
 | ||||||
|     <key type="s" name="applet-text"> |     <key type="s" name="applet-text"> | ||||||
|       <default>""</default> |       <default>"Menu"</default> | ||||||
|       <summary></summary> |       <summary></summary> | ||||||
|       <description></description> |       <description></description> | ||||||
|     </key> |     </key> | ||||||
| @ -51,13 +51,13 @@ | |||||||
|     </key> |     </key> | ||||||
| 
 | 
 | ||||||
|     <key type="s" name="applet-icon"> |     <key type="s" name="applet-icon"> | ||||||
|       <default>"linuxmint-logo-ring-symbolic"</default> |       <default>"linuxmint-logo-filled-ring"</default> | ||||||
|       <summary></summary> |       <summary></summary> | ||||||
|       <description></description> |       <description></description> | ||||||
|     </key> |     </key> | ||||||
| 
 | 
 | ||||||
|     <key type="s" name="default-applet-icon"> |     <key type="s" name="default-applet-icon"> | ||||||
|       <default>"linuxmint-logo-ring-symbolic"</default> |       <default>"linuxmint-logo-filled-ring"</default> | ||||||
|       <summary></summary> |       <summary></summary> | ||||||
|       <description></description> |       <description></description> | ||||||
|     </key> |     </key> | ||||||
| @ -291,12 +291,6 @@ | |||||||
|       <summary></summary> |       <summary></summary> | ||||||
|       <description></description> |       <description></description> | ||||||
|     </key> |     </key> | ||||||
| 
 |  | ||||||
|     <key type="as" name="favorite-apps-list"> |  | ||||||
|       <default>[]</default> |  | ||||||
|       <summary>List of absolute desktop file paths</summary> |  | ||||||
|     </key> |  | ||||||
| 
 |  | ||||||
|   </schema> |   </schema> | ||||||
| 
 | 
 | ||||||
|   <schema id="com.linuxmint.mintmenu.plugins.system_management" path="/com/linuxmint/mintmenu/plugins/system_management/"> |   <schema id="com.linuxmint.mintmenu.plugins.system_management" path="/com/linuxmint/mintmenu/plugins/system_management/"> | ||||||
| @ -418,11 +412,6 @@ | |||||||
|       <description></description> |       <description></description> | ||||||
|     </key> |     </key> | ||||||
| 
 | 
 | ||||||
|     <key type="as" name="recent-apps-list"> |  | ||||||
|       <default>[]</default> |  | ||||||
|       <summary>List of absolute desktop file paths</summary> |  | ||||||
|     </key> |  | ||||||
| 
 |  | ||||||
|   </schema> |   </schema> | ||||||
| 
 | 
 | ||||||
| </schemalist> | </schemalist> | ||||||
|  | |||||||
| @ -1,39 +0,0 @@ | |||||||
| <?xml version='1.0' encoding='UTF-8' standalone='no'?> |  | ||||||
| <!-- Created with Inkscape (http://www.inkscape.org/) --> |  | ||||||
| 
 |  | ||||||
| <svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='view-grid-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.2 r9819' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'> |  | ||||||
|   <metadata id='metadata90'> |  | ||||||
|     <rdf:RDF> |  | ||||||
|       <cc:Work rdf:about=''> |  | ||||||
|         <dc:format>image/svg+xml</dc:format> |  | ||||||
|         <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/> |  | ||||||
|         <dc:title>Cinnamon All Applications</dc:title> |  | ||||||
|       </cc:Work> |  | ||||||
|     </rdf:RDF> |  | ||||||
|   </metadata> |  | ||||||
|   <sodipodi:namedview inkscape:bbox-paths='false' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer12' inkscape:cx='84.99158' inkscape:cy='6.64106' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='false' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1168' inkscape:window-maximized='1' inkscape:window-width='1600' inkscape:window-x='0' inkscape:window-y='0' inkscape:zoom='1'> |  | ||||||
|     <inkscape:grid empspacing='2' enabled='true' id='grid4866' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/> |  | ||||||
|   </sodipodi:namedview> |  | ||||||
|   <title id='title9167'>Cinnamon All Applications</title> |  | ||||||
|   <defs id='defs7386'/> |  | ||||||
|   <g inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline' transform='translate(-61.0004,-867)'/> |  | ||||||
|   <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-61.0004,-867)'/> |  | ||||||
|   <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-61.0004,-867)'/> |  | ||||||
|   <g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-61.0004,-867)'/> |  | ||||||
|   <g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-61.0004,-867)'/> |  | ||||||
|   <g inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline' transform='translate(-61.0004,-867)'/> |  | ||||||
|   <g inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' style='display:inline' transform='translate(-61.0004,-867)'/> |  | ||||||
|   <g inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline' transform='translate(-61.0004,-867)'/> |  | ||||||
|   <g inkscape:groupmode='layer' id='layer12' inkscape:label='actions' style='display:inline' transform='translate(-61.0004,-867)'> |  | ||||||
|      |  | ||||||
|     <rect height='2' id='rect13363' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='64.000198' y='870'/> |  | ||||||
|     <rect height='2' id='rect13365' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='68.000198' y='870'/> |  | ||||||
|     <rect height='2' id='rect13367' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='72.000198' y='870'/> |  | ||||||
|     <rect height='2' id='rect13369' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='64.000198' y='874.01562'/> |  | ||||||
|     <rect height='2' id='rect13371' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='68.000198' y='874.01562'/> |  | ||||||
|     <rect height='2' id='rect13373' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='72.000198' y='874.01562'/> |  | ||||||
|     <rect height='2' id='rect13375' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='64.000198' y='878'/> |  | ||||||
|     <rect height='2' id='rect13377' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='68.000198' y='878'/> |  | ||||||
|     <rect height='2' id='rect13379' rx='0.38461545' ry='0.37878788' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='2.0000002' x='72.000198' y='878'/> |  | ||||||
|   </g> |  | ||||||
| </svg> |  | ||||||
| Before Width: | Height: | Size: 5.6 KiB | 
| @ -1,5 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <!-- Generated with glade 3.22.2 --> | <!-- Generated with glade 3.22.1 --> | ||||||
| <interface> | <interface> | ||||||
|   <requires lib="gtk+" version="3.18"/> |   <requires lib="gtk+" version="3.18"/> | ||||||
|   <object class="GtkWindow" id="mainWindow"> |   <object class="GtkWindow" id="mainWindow"> | ||||||
| @ -9,7 +9,7 @@ | |||||||
|     <property name="window_position">mouse</property> |     <property name="window_position">mouse</property> | ||||||
|     <property name="gravity">static</property> |     <property name="gravity">static</property> | ||||||
|     <signal name="destroy" handler="on_window1_destroy" swapped="no"/> |     <signal name="destroy" handler="on_window1_destroy" swapped="no"/> | ||||||
|     <child type="titlebar"> |     <child> | ||||||
|       <placeholder/> |       <placeholder/> | ||||||
|     </child> |     </child> | ||||||
|     <child> |     <child> | ||||||
| @ -121,10 +121,6 @@ | |||||||
|                         <property name="position">0</property> |                         <property name="position">0</property> | ||||||
|                       </packing> |                       </packing> | ||||||
|                     </child> |                     </child> | ||||||
|                     <child> |  | ||||||
|                       <object class="GtkScrolledWindow"> |  | ||||||
|                         <property name="visible">True</property> |  | ||||||
|                         <property name="can_focus">True</property> |  | ||||||
|                     <child> |                     <child> | ||||||
|                       <object class="GtkViewport" id="viewport2"> |                       <object class="GtkViewport" id="viewport2"> | ||||||
|                         <property name="visible">True</property> |                         <property name="visible">True</property> | ||||||
| @ -169,8 +165,6 @@ | |||||||
|                           </object> |                           </object> | ||||||
|                         </child> |                         </child> | ||||||
|                       </object> |                       </object> | ||||||
|                         </child> |  | ||||||
|                       </object> |  | ||||||
|                       <packing> |                       <packing> | ||||||
|                         <property name="expand">True</property> |                         <property name="expand">True</property> | ||||||
|                         <property name="fill">True</property> |                         <property name="fill">True</property> | ||||||
|  | |||||||
| @ -1,12 +1,12 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <!-- Generated with glade 3.22.2 --> | <!-- Generated with glade 3.22.1 --> | ||||||
| <interface> | <interface> | ||||||
|   <requires lib="gtk+" version="3.0"/> |   <requires lib="gtk+" version="3.0"/> | ||||||
|   <object class="GtkWindow" id="window1"> |   <object class="GtkWindow" id="window1"> | ||||||
|     <property name="can_focus">False</property> |     <property name="can_focus">False</property> | ||||||
|     <property name="border_width">3</property> |     <property name="border_width">3</property> | ||||||
|     <property name="title" translatable="yes">window1</property> |     <property name="title" translatable="yes">window1</property> | ||||||
|     <child type="titlebar"> |     <child> | ||||||
|       <placeholder/> |       <placeholder/> | ||||||
|     </child> |     </child> | ||||||
|     <child> |     <child> | ||||||
| @ -34,19 +34,15 @@ | |||||||
|                       <object class="GtkViewport" id="viewport1"> |                       <object class="GtkViewport" id="viewport1"> | ||||||
|                         <property name="visible">True</property> |                         <property name="visible">True</property> | ||||||
|                         <property name="can_focus">False</property> |                         <property name="can_focus">False</property> | ||||||
|                         <property name="margin_left">12</property> |                         <property name="margin_top">6</property> | ||||||
|                         <property name="margin_right">12</property> |                         <property name="margin_bottom">6</property> | ||||||
|                         <property name="margin_top">12</property> |  | ||||||
|                         <property name="margin_bottom">12</property> |  | ||||||
|                         <property name="shadow_type">none</property> |                         <property name="shadow_type">none</property> | ||||||
|                         <child> |                         <child> | ||||||
|                           <object class="GtkBox" id="RecentBox"> |                           <object class="GtkButtonBox" id="RecentBox"> | ||||||
|                             <property name="visible">True</property> |                             <property name="visible">True</property> | ||||||
|                             <property name="can_focus">False</property> |                             <property name="can_focus">False</property> | ||||||
|                             <property name="orientation">vertical</property> |                             <property name="orientation">vertical</property> | ||||||
|                             <child> |                             <property name="layout_style">start</property> | ||||||
|                               <placeholder/> |  | ||||||
|                             </child> |  | ||||||
|                           </object> |                           </object> | ||||||
|                         </child> |                         </child> | ||||||
|                       </object> |                       </object> | ||||||
| @ -71,16 +67,15 @@ | |||||||
|                       <object class="GtkViewport" id="viewport2"> |                       <object class="GtkViewport" id="viewport2"> | ||||||
|                         <property name="visible">True</property> |                         <property name="visible">True</property> | ||||||
|                         <property name="can_focus">False</property> |                         <property name="can_focus">False</property> | ||||||
|                         <property name="margin_left">12</property> |                         <property name="margin_top">6</property> | ||||||
|                         <property name="margin_right">12</property> |                         <property name="margin_bottom">6</property> | ||||||
|                         <property name="margin_top">12</property> |  | ||||||
|                         <property name="margin_bottom">12</property> |  | ||||||
|                         <property name="shadow_type">none</property> |  | ||||||
|                         <child> |                         <child> | ||||||
|                           <object class="GtkBox" id="RecentApps"> |                           <object class="GtkButtonBox" id="RecentApps"> | ||||||
|                             <property name="visible">True</property> |                             <property name="visible">True</property> | ||||||
|                             <property name="can_focus">False</property> |                             <property name="can_focus">False</property> | ||||||
|  |                             <property name="border_width">3</property> | ||||||
|                             <property name="orientation">vertical</property> |                             <property name="orientation">vertical</property> | ||||||
|  |                             <property name="layout_style">start</property> | ||||||
|                             <child> |                             <child> | ||||||
|                               <placeholder/> |                               <placeholder/> | ||||||
|                             </child> |                             </child> | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user