Compare commits

..

5 Commits

Author SHA1 Message Date
Clement Lefebvre
cc94108b85 6.0.5.1 2020-07-18 12:25:37 +01:00
Michael Webster
3e863c8b74 recentHelper.py: Don't try to modify the recent list unless recents
are enabled.

This was throwing an error when launching a program with the recent
plugin disabled.
2020-07-18 12:25:08 +01:00
Michael Webster
d7f650b79f applications.py: Fix dnd for re-ordering/adding favorites.
Fixes https://github.com/linuxmint/mint20-beta/issues/22
2020-07-18 12:25:06 +01:00
Clement Lefebvre
77476ded54 Add missing dependency 2020-07-18 12:24:38 +01:00
Clement Lefebvre
3169e80707 Search: Fix searching for accentuated strings 2020-07-18 12:24:28 +01:00
13 changed files with 192 additions and 388 deletions

85
debian/changelog vendored
View File

@ -1,91 +1,14 @@
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
mintmenu (6.0.5.1) ulyana; urgency=medium
[ 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
* Search: Fix searching for accentuated strings
* Add missing dependency
[ 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
-- Clement Lefebvre <root@linuxmint.com> Sat, 18 Jul 2020 12:25:24 +0100
mintmenu (6.0.5) ulyana; urgency=medium

1
debian/control vendored
View File

@ -9,6 +9,7 @@ Package: mintmenu
Architecture: all
Depends:
${misc:Depends},
mint-common,
python3,
python3-apt,
python3-configobj,

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -49,23 +49,23 @@ msgstr ""
msgid "Couldn't initialize plugin"
msgstr ""
#: usr/lib/linuxmint/mintMenu/mintMenu.py:587
#: usr/lib/linuxmint/mintMenu/mintMenu.py:592
msgid "Advanced MATE Menu"
msgstr ""
#: usr/lib/linuxmint/mintMenu/mintMenu.py:698
#: usr/lib/linuxmint/mintMenu/mintMenu.py:703
msgid "Preferences"
msgstr ""
#: usr/lib/linuxmint/mintMenu/mintMenu.py:702
#: usr/lib/linuxmint/mintMenu/mintMenu.py:707
msgid "Edit menu"
msgstr ""
#: usr/lib/linuxmint/mintMenu/mintMenu.py:706
#: usr/lib/linuxmint/mintMenu/mintMenu.py:711
msgid "Reload plugins"
msgstr ""
#: usr/lib/linuxmint/mintMenu/mintMenu.py:709
#: usr/lib/linuxmint/mintMenu/mintMenu.py:714
msgid "About"
msgstr ""
@ -374,133 +374,134 @@ msgstr ""
msgid "Path"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:625
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:624
#, python-format
msgid "Search DuckDuckGo for %s"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:627
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:626
#, python-format
msgid "Search Wikipedia for %s"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:630
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:629
#, python-format
msgid "Lookup %s in Dictionary"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:632
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:631
#, python-format
msgid "Search Computer for %s"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:690
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:732
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:689
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:731
#, python-format
msgid "Install package '%s'"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:836
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:911
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:835
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:906
msgid "Add to desktop"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:837
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:912
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:836
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:907
msgid "Add to panel"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:839
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:889
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:838
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:884
msgid "Insert space"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:840
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:890
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:839
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:885
msgid "Insert separator"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:842
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:915
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:841
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:910
msgid "Launch when I log in"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:844
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:917
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:843
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:912
msgid "Launch"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:845
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:918
msgid "Run with NVIDIA GPU"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:846
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:844
msgid "Remove from favorites"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:848
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:922
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:846
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:916
msgid "Edit properties"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:888
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:883
msgid "Remove"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:914
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:909
msgid "Show in my favorites"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:919
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:913
msgid "Uninstall"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:920
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:914
msgid "Delete from menu"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:988
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:979
msgid "Search DuckDuckGo"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:989
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:980
msgid "Search Wikipedia"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:991
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:982
msgid "Search Dictionary"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:992
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:983
msgid "Search Computer"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:994
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:985
msgid "Find Software"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:995
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:986
msgid "Find Tutorials"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:996
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:987
msgid "Find Hardware"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:997
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:988
msgid "Find Ideas"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:998
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:989
msgid "Find Users"
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"
msgstr ""
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1644
#: usr/lib/linuxmint/mintMenu/plugins/applications.py:1619
msgid "Show all applications"
msgstr ""
@ -529,11 +530,17 @@ msgstr ""
msgid "Empty trash"
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"
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."
msgstr ""

View File

@ -10,7 +10,6 @@ import traceback
import gi
gi.require_version("Gtk", "3.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 MatePanelApplet
from gi.repository import Gio
@ -22,6 +21,8 @@ import pointerMonitor
import setproctitle
from plugins.execute import Execute
GObject.threads_init()
# Rename the process
setproctitle.setproctitle('mintmenu')
@ -328,11 +329,10 @@ class MenuWin(object):
self.detect_desktop_environment()
self.settings = Gio.Settings.new("com.linuxmint.mintmenu")
self.icon_theme = Gtk.IconTheme.get_default()
self.button_icon = Gtk.Image(no_show_all=True)
self.button_icon = Gtk.Image()
self.loadSettings()
self.button_box = None
self.updatePanelButton()
self.createPanelButton()
self.mate_settings = Gio.Settings.new("org.mate.interface")
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.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("leave-notify-event", self.leave_notify)
@ -427,13 +427,9 @@ class MenuWin(object):
else:
self.button_icon.set_from_surface(self.surface)
def updatePanelButton(self):
if self.button_box != None:
self.button_box.destroy()
def createPanelButton(self):
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"):
with open("/etc/linuxmint/info") as info:
for line in info:
@ -442,54 +438,24 @@ class MenuWin(object):
self.systemlabel.set_tooltip_text(tooltip)
self.button_icon.set_tooltip_text(tooltip)
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:
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.systemlabel, False, False, 0)
if self.showIcon and not show_text:
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
self.button_icon.set_padding(5, 0)
# if we have a vertical panel
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.button_box.pack_start(self.button_icon , False, False, 0)
self.button_box.pack_start(self.systemlabel , False, False, 0)
if self.showIcon and not show_text:
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
self.button_icon.set_padding(0, 5)
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.button_box.pack_start(self.systemlabel , False, False, 0)
self.button_box.pack_start(self.button_icon , False, False, 0)
if self.showIcon and not show_text:
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_icon.set_padding(0, 5)
self.button_box.set_homogeneous(False)
self.button_box.show_all()
@ -545,11 +511,53 @@ class MenuWin(object):
except:
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):
self.hotkeyText = self.settings.get_string("hot-key")
self.keybinder.rebind(self.hotkeyText)
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
# and takes the orientation and scale factor in account
bi_req = self.button_icon.get_preferred_size()[1]
@ -558,18 +566,18 @@ class MenuWin(object):
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.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:
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:
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:
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):
self.loadSettings()
self.updatePanelButton()
self.updateButton()
def showAboutDialog(self, action, userdata = None):
about = Gtk.AboutDialog()

View File

@ -1,6 +1,6 @@
#!/usr/bin/python3
import html
import cgi
import filecmp
import gettext
import locale
@ -189,17 +189,6 @@ class pluginclass(object):
self.menuFiles = []
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)
self.lang = "en"
lang = os.getenv('LANG')
@ -624,7 +613,7 @@ class pluginclass(object):
self.suggestions.append(item)
def add_search_suggestions(self, text):
text = "<b>%s</b>" % html.escape(text)
text = "<b>%s</b>" % cgi.escape(text)
if self.enableInternetSearch:
self.add_suggestion("/usr/lib/linuxmint/mintMenu/search_engines/ddg.svg",
_("Search DuckDuckGo for %s") % text, None, self.search_ddg)
@ -773,24 +762,16 @@ class pluginclass(object):
i.hide()
else:
shownList.append(i)
self.applicationsBox.remove(i)
#if this is the first matching item
#focus it
if(not showns):
i.grab_focus()
showns = True
if not showns:
if len(text) >= 3:
self.add_search_suggestions(text)
if self.useAPT:
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():
i.released()
i.set_relief(Gtk.ReliefStyle.NONE)
@ -855,7 +836,6 @@ class pluginclass(object):
startupMenuItem = Gtk.CheckMenuItem(_("Launch when I log in"))
separator3 = Gtk.SeparatorMenuItem()
launchMenuItem = Gtk.MenuItem(_("Launch"))
launchOffloadedMenuItem = Gtk.MenuItem(_("Run with NVIDIA GPU"))
removeFromFavMenuItem = Gtk.MenuItem(_("Remove from favorites"))
separator4 = Gtk.SeparatorMenuItem()
propsMenuItem = Gtk.MenuItem(_("Edit properties"))
@ -871,7 +851,6 @@ class pluginclass(object):
startupMenuItem.set_active(False)
startupMenuItem.connect("toggled", self.onAddToStartup, widget)
launchMenuItem.connect("activate", self.onLaunchApp, widget)
launchOffloadedMenuItem.connect("activate", self.onLaunchOffloadedApp, widget)
removeFromFavMenuItem.connect("activate", self.onFavoritesRemove, widget)
propsMenuItem.connect("activate", self.onPropsApp, widget)
@ -885,8 +864,6 @@ class pluginclass(object):
mTree.append(startupMenuItem)
mTree.append(separator3)
mTree.append(launchMenuItem)
if self.canOffload:
mTree.append(launchOffloadedMenuItem)
mTree.append(removeFromFavMenuItem)
mTree.append(separator4)
mTree.append(propsMenuItem)
@ -928,7 +905,6 @@ class pluginclass(object):
startupMenuItem = Gtk.CheckMenuItem(_("Launch when I log in"))
separator2 = Gtk.SeparatorMenuItem()
launchMenuItem = Gtk.MenuItem(_("Launch"))
launchOffloadedMenuItem = Gtk.MenuItem(_("Run with NVIDIA GPU"))
uninstallMenuItem = Gtk.MenuItem(_("Uninstall"))
deleteMenuItem = Gtk.MenuItem(_("Delete from menu"))
separator3 = Gtk.SeparatorMenuItem()
@ -943,8 +919,6 @@ class pluginclass(object):
mTree.append(startupMenuItem)
mTree.append(separator2)
mTree.append(launchMenuItem)
if self.canOffload:
mTree.append(launchOffloadedMenuItem)
mTree.append(uninstallMenuItem)
if home in widget.desktopFile:
mTree.append(deleteMenuItem)
@ -956,7 +930,6 @@ class pluginclass(object):
desktopMenuItem.connect("activate", self.add_to_desktop, widget)
panelMenuItem.connect("activate", self.add_to_panel, widget)
launchMenuItem.connect("activate", self.onLaunchApp, widget)
launchOffloadedMenuItem.connect("activate", self.onLaunchOffloadedApp, widget)
propsMenuItem.connect("activate", self.onPropsApp, widget)
uninstallMenuItem.connect("activate", self.onUninstallApp, widget)
@ -1098,10 +1071,6 @@ class pluginclass(object):
widget.execute()
self.mintMenuWin.hide()
def onLaunchOffloadedApp(self, menu, widget):
widget.execute(offload=True)
self.mintMenuWin.hide()
def onPropsApp(self, menu, widget):
newFileFlag = False
sysPaths = get_system_item_paths()
@ -1652,7 +1621,7 @@ class pluginclass(object):
# Build a list of all categories in the menu ([{"name", "icon", tooltip"}]
def buildCategoryList(self):
newCategoryList = [{"name": _("All"),
"icon": "mintmenu-all-applications-symbolic",
"icon": "start-here-symbolic",
"tooltip": _("Show all applications"),
"filter":"", "index": 0}]
num = 1

View File

@ -234,7 +234,6 @@ class ApplicationLauncher(easyButton):
self.desktopFile = desktopFile
self.startupMonitorId = 0
self.relevance = 0
self.loadDesktopEntry(desktopItem)
@ -269,7 +268,6 @@ class ApplicationLauncher(easyButton):
self.appMateDocPath = desktopItem.get("X-MATE-DocPath") or ""
self.useTerminal = desktopItem.getTerminal()
self.appPath = desktopItem.getPath()
self.prefersOffload = desktopItem.get("PrefersNonDefaultGPU", "Desktop Entry", type="boolean")
if not self.appMateDocPath:
self.appKdeDocPath = desktopItem.getDocPath() or ""
@ -307,28 +305,11 @@ class ApplicationLauncher(easyButton):
def filterText(self, text):
keywords = self.strip_case_and_accents(text).split()
self.relevance = 0
appName = self.strip_case_and_accents(self.appName)
appGenericName = self.strip_case_and_accents(self.appGenericName)
appComment = self.strip_case_and_accents(self.appComment)
appExec = self.strip_case_and_accents(self.appExec)
for keyword in keywords:
if appName == keyword:
self.relevance += 32
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()
return False
@ -359,7 +340,7 @@ class ApplicationLauncher(easyButton):
else:
selection.set_uris(["file://" + self.desktopFile])
def execute(self, *args, **kwargs):
def execute(self, *args):
if self.appExec:
if self.useTerminal:
cmd = "x-terminal-emulator -e \"" + self.appExec + "\""
@ -367,17 +348,7 @@ class ApplicationLauncher(easyButton):
cmd = "mate-terminal -e \"" + self.appExec + "\""
Execute(cmd, self.appPath)
else:
offload = False
try:
offload = kwargs["offload"]
except KeyError:
pass
if self.prefersOffload:
offload = True
Execute(None, desktopFile=self.desktopFile, offload=offload)
Execute(None, desktopFile=self.desktopFile)
def uninstall(self, *args):
Execute("mint-remove-application " + self.desktopFile)
@ -489,12 +460,12 @@ class MenuApplicationLauncher(ApplicationLauncher):
else:
self.addLabel(appName)
def execute(self, *args, **kwargs):
def execute(self, *args):
self.highlight = False
for child in self.labelBox:
child.destroy()
self.setupLabels()
return super(MenuApplicationLauncher, self).execute(*args, **kwargs)
return super(MenuApplicationLauncher, self).execute(*args)
def setShowComment(self, showComment):
self.showComment = showComment

View File

@ -1,7 +1,7 @@
#!/usr/bin/python3
import os
from gi.repository import Gio, GLib, Gdk, XApp
from gi.repository import Gio, GLib
def RemoveArgs(Execline):
@ -25,37 +25,12 @@ def gather_pid_callback(appinfo, pid, data):
GLib.child_watch_add(pid, dummy_child_watch, None)
# Actually execute the command
def Execute(cmd , commandCwd=None, desktopFile=None, offload=False):
def Execute(cmd , commandCwd=None, desktopFile=None):
if desktopFile:
launcher = Gio.DesktopAppInfo.new_from_filename(desktopFile)
context = Gdk.Display.get_default().get_app_launch_context()
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)
retval = launcher.launch_uris_as_manager(uris=[], launch_context=None, 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
except GLib.Error as e:
print("Error launching %s: %s" % (launcher.get_name(), e.message))
return False
cwd = os.path.expanduser("~")

View File

@ -7,7 +7,7 @@ import subprocess
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gio, Pango
from gi.repository import Gtk, Gio
import plugins.recentHelper as RecentHelper
from plugins.execute import Execute
@ -174,7 +174,7 @@ class pluginclass:
Box1.add(ButtonIcon)
Label1 = Gtk.Label(DispName)
Label1.set_ellipsize(Pango.EllipsizeMode.END)
Label1.set_ellipsize(3)
Box1.add(Label1)
AButton.add(Box1)
@ -197,7 +197,7 @@ class pluginclass:
def GetRecent(self, *args, **kargs):
FileString=[]
IconString=[]
RecentInfo=sorted(self.RecManagerInstance.get_items(), key=lambda item: item.get_modified(), reverse=True)
RecentInfo=self.RecManagerInstance.get_items()
count=0
MaxEntries=self.numentries
if self.numentries == -1:

View File

@ -49,8 +49,8 @@ class mintMenuPreferences():
def __init__(self):
self.settings = Gio.Settings(schema_id="com.linuxmint.mintmenu")
self.places_settings = Gio.Settings(schema_id="com.linuxmint.mintmenu.plugins.places")
self.settings = Gio.Settings("com.linuxmint.mintmenu")
self.places_settings = Gio.Settings("com.linuxmint.mintmenu.plugins.places")
self.builder = Gtk.Builder()
self.builder.set_translation_domain("mintmenu")

View File

@ -33,7 +33,7 @@
</key>
<key type="s" name="applet-text">
<default>""</default>
<default>"Menu"</default>
<summary></summary>
<description></description>
</key>
@ -51,13 +51,13 @@
</key>
<key type="s" name="applet-icon">
<default>"linuxmint-logo-ring-symbolic"</default>
<default>"linuxmint-logo-filled-ring"</default>
<summary></summary>
<description></description>
</key>
<key type="s" name="default-applet-icon">
<default>"linuxmint-logo-ring-symbolic"</default>
<default>"linuxmint-logo-filled-ring"</default>
<summary></summary>
<description></description>
</key>

View File

@ -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

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.2 -->
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.18"/>
<object class="GtkWindow" id="mainWindow">
@ -9,7 +9,7 @@
<property name="window_position">mouse</property>
<property name="gravity">static</property>
<signal name="destroy" handler="on_window1_destroy" swapped="no"/>
<child type="titlebar">
<child>
<placeholder/>
</child>
<child>
@ -121,10 +121,6 @@
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkViewport" id="viewport2">
<property name="visible">True</property>
@ -169,8 +165,6 @@
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.2 -->
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.0"/>
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="border_width">3</property>
<property name="title" translatable="yes">window1</property>
<child type="titlebar">
<child>
<placeholder/>
</child>
<child>
@ -34,19 +34,15 @@
<object class="GtkViewport" id="viewport1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">12</property>
<property name="margin_right">12</property>
<property name="margin_top">12</property>
<property name="margin_bottom">12</property>
<property name="margin_top">6</property>
<property name="margin_bottom">6</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkBox" id="RecentBox">
<object class="GtkButtonBox" id="RecentBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
<property name="layout_style">start</property>
</object>
</child>
</object>
@ -71,16 +67,15 @@
<object class="GtkViewport" id="viewport2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">12</property>
<property name="margin_right">12</property>
<property name="margin_top">12</property>
<property name="margin_bottom">12</property>
<property name="shadow_type">none</property>
<property name="margin_top">6</property>
<property name="margin_bottom">6</property>
<child>
<object class="GtkBox" id="RecentApps">
<object class="GtkButtonBox" id="RecentApps">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">3</property>
<property name="orientation">vertical</property>
<property name="layout_style">start</property>
<child>
<placeholder/>
</child>