Compare commits

..

2 Commits

Author SHA1 Message Date
Clement Lefebvre
a9c9568927 Remove shadow around scrolledwindow 2021-01-02 22:17:43 +00:00
Clement Lefebvre
5b445299b4 Favorites: Add a scrolledwindow 2021-01-02 18:58:01 +00:00
9 changed files with 27 additions and 160 deletions

44
debian/changelog vendored
View File

@ -1,47 +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 mintmenu (6.1.1) ulyana; urgency=medium
[ Michael Webster ] [ Michael Webster ]

1
debian/control vendored
View File

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

View File

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

View File

@ -1,6 +1,6 @@
#!/usr/bin/python3 #!/usr/bin/python3
import html import cgi
import filecmp import filecmp
import gettext import gettext
import locale import locale
@ -191,10 +191,6 @@ class pluginclass(object):
self.canOffload = False self.canOffload = False
try:
helper = XApp.GpuOffloadHelper.get_sync()
self.canOffload = helper.is_offload_supported()
except AttributeError:
try: try:
self.canOffload = XApp.util_gpu_offload_supported() self.canOffload = XApp.util_gpu_offload_supported()
except AttributeError: except AttributeError:
@ -624,7 +620,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 +769,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)
@ -1652,7 +1640,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

View File

@ -234,7 +234,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)
@ -269,7 +268,6 @@ class ApplicationLauncher(easyButton):
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 ""
@ -307,28 +305,11 @@ class ApplicationLauncher(easyButton):
def filterText(self, text): def filterText(self, text):
keywords = self.strip_case_and_accents(text).split() keywords = self.strip_case_and_accents(text).split()
self.relevance = 0
appName = self.strip_case_and_accents(self.appName) appName = self.strip_case_and_accents(self.appName)
appGenericName = self.strip_case_and_accents(self.appGenericName) appGenericName = self.strip_case_and_accents(self.appGenericName)
appComment = self.strip_case_and_accents(self.appComment) appComment = self.strip_case_and_accents(self.appComment)
appExec = self.strip_case_and_accents(self.appExec) appExec = self.strip_case_and_accents(self.appExec)
for keyword in keywords: 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: 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
@ -374,9 +355,6 @@ class ApplicationLauncher(easyButton):
except KeyError: except KeyError:
pass pass
if self.prefersOffload:
offload = True
Execute(None, desktopFile=self.desktopFile, offload=offload) Execute(None, desktopFile=self.desktopFile, offload=offload)
def uninstall(self, *args): def uninstall(self, *args):

View File

@ -1,7 +1,7 @@
#!/usr/bin/python3 #!/usr/bin/python3
import os import os
from gi.repository import Gio, GLib, Gdk, XApp from gi.repository import Gio, GLib, Gdk
def RemoveArgs(Execline): def RemoveArgs(Execline):
@ -32,17 +32,6 @@ def Execute(cmd , commandCwd=None, desktopFile=None, offload=False):
if offload: if offload:
print("Offloading '%s' to discrete gpu." % launcher.get_name()); 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("__NV_PRIME_RENDER_OFFLOAD", "1")
context.setenv("__GLX_VENDOR_LIBRARY_NAME", "nvidia"); context.setenv("__GLX_VENDOR_LIBRARY_NAME", "nvidia");

View File

@ -7,7 +7,7 @@ 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
@ -174,7 +174,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 +197,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:

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