Compare commits

...

24 Commits

Author SHA1 Message Date
Jesper
7c0bcbb5b7 simplificaiton + removal of fuzzy 2024-06-13 22:18:01 +02:00
Jesper
f9325f2870 Bring back scrollintoview 2024-06-13 08:12:41 +02:00
Jesper
4ab8d2120c Fix capitalization 2024-06-12 13:25:05 +02:00
Jesper
b0ab8320da Bring back apt search suggestions 2024-06-12 12:40:00 +02:00
Jesper
a31731f127 appGenericName, appComment and appExec to the fuzzysearch function 2024-06-12 12:19:05 +02:00
Jesper
2e0f503d08 Add appGenericName, appComment and appExec search 2024-06-12 11:51:31 +02:00
Jesper
3feda3af08 Exact search 2024-06-12 11:42:47 +02:00
Jesper
90ad278098 Remove whitespace 2024-06-12 10:38:27 +02:00
Jesper
cf76c4837e Fuzzy Search 2024-06-12 10:37:26 +02:00
Jesper
d8820edd7d Fuzzy search setting 2024-06-12 10:35:31 +02:00
Jesper
185b925b6b schema for fuzzysearch 2024-06-12 10:32:13 +02:00
Clement Lefebvre
7c034738de 6.1.7 2023-06-26 11:08:01 +02:00
Michael Webster
c3bea70396
Add our own 'all applications' icon for consistency.
Fixes linuxmint/mint21.2-beta#12
2023-06-23 14:35:49 -04:00
Clement Lefebvre
9976deca28 6.1.6 2023-06-05 13:40:20 +01:00
Michael Webster
e4eab43d06
Use XAppGpuOffloadHelper for gpu offloading, respect
PrefersNonDefaultGPU desktop entry key.

XApp.util_gpu_offload_supported() is still used as a fallback
for older libxapp versions.
2023-05-10 11:52:02 -04:00
Clement Lefebvre
90688a9c9f 6.1.5 2022-11-21 11:57:44 +00:00
monsta
63e9034896
remove mint-common dependency (#274)
not needed after c293d485d9
2022-11-21 11:57:04 +00:00
Clement Lefebvre
d97d912a97 6.1.4 2021-07-01 13:39:21 +01:00
Clement Lefebvre
b08050dfbb Recent: Fix buttons layout
Fixes https://github.com/linuxmint/mint20.2-beta/issues/75
2021-07-01 13:38:23 +01:00
Clement Lefebvre
772a10bb7a 6.1.3 2021-06-25 16:34:28 +01:00
Vincent Vermeulen
9b96af6602 fix recently used documents sorting
recently used documents were incorrectly sorted on when a file was first added to recently-used.xbel file, not reflecting when it was opened again later
this fix changes it so they are sorted correctly on when they were last used (when last their entry was modified in recently-used.xbel)

fixes https://github.com/linuxmint/mint20.2-beta/issues/10
2021-06-23 15:03:21 -04:00
Clement Lefebvre
905b9b1a94 6.1.2 2021-01-02 22:21:46 +00:00
Clement Lefebvre
94dec8415f
Favorites: Add a scrolledwindow (#263)
* Favorites: Add a scrolledwindow

* Remove shadow around scrolledwindow
2021-01-02 22:21:02 +00:00
Vincent Vermeulen
57632a3e30 fix APT search
replace broken cgi.escape with working html.escape
2020-12-30 10:19:23 -05:00
10 changed files with 202 additions and 63 deletions

44
debian/changelog vendored
View File

@ -1,3 +1,47 @@
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 ]

1
debian/control vendored
View File

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

View File

@ -10,6 +10,7 @@ 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

View File

@ -1,6 +1,6 @@
#!/usr/bin/python3
import cgi
import html
import filecmp
import gettext
import locale
@ -192,9 +192,13 @@ class pluginclass(object):
self.canOffload = False
try:
self.canOffload = XApp.util_gpu_offload_supported()
helper = XApp.GpuOffloadHelper.get_sync()
self.canOffload = helper.is_offload_supported()
except AttributeError:
print("Could not check for gpu offload support - maybe xapps isn't up to date.");
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"
@ -620,7 +624,7 @@ class pluginclass(object):
self.suggestions.append(item)
def add_search_suggestions(self, text):
text = "<b>%s</b>" % cgi.escape(text)
text = "<b>%s</b>" % html.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)
@ -769,16 +773,24 @@ class pluginclass(object):
i.hide()
else:
shownList.append(i)
#if this is the first matching item
#focus it
if(not showns):
i.grab_focus()
self.applicationsBox.remove(i)
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)
@ -1640,7 +1652,7 @@ class pluginclass(object):
# Build a list of all categories in the menu ([{"name", "icon", tooltip"}]
def buildCategoryList(self):
newCategoryList = [{"name": _("All"),
"icon": "start-here-symbolic",
"icon": "mintmenu-all-applications-symbolic",
"tooltip": _("Show all applications"),
"filter":"", "index": 0}]
num = 1

View File

@ -234,6 +234,7 @@ class ApplicationLauncher(easyButton):
self.desktopFile = desktopFile
self.startupMonitorId = 0
self.relevance = 0
self.loadDesktopEntry(desktopItem)
@ -268,6 +269,7 @@ 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 ""
@ -305,11 +307,28 @@ 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
@ -355,6 +374,9 @@ class ApplicationLauncher(easyButton):
except KeyError:
pass
if self.prefersOffload:
offload = True
Execute(None, desktopFile=self.desktopFile, offload=offload)
def uninstall(self, *args):

View File

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

View File

@ -7,7 +7,7 @@ import subprocess
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gio
from gi.repository import Gtk, Gio, Pango
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(3)
Label1.set_ellipsize(Pango.EllipsizeMode.END)
Box1.add(Label1)
AButton.add(Box1)
@ -197,7 +197,7 @@ class pluginclass:
def GetRecent(self, *args, **kargs):
FileString=[]
IconString=[]
RecentInfo=self.RecManagerInstance.get_items()
RecentInfo=sorted(self.RecManagerInstance.get_items(), key=lambda item: item.get_modified(), reverse=True)
count=0
MaxEntries=self.numentries
if self.numentries == -1:

View File

@ -0,0 +1,39 @@
<?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>

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<!-- Generated with glade 3.22.2 -->
<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>
<child type="titlebar">
<placeholder/>
</child>
<child>
@ -122,45 +122,51 @@
</packing>
</child>
<child>
<object class="GtkViewport" id="viewport2">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="resize_mode">queue</property>
<property name="shadow_type">none</property>
<property name="can_focus">True</property>
<child>
<object class="GtkGrid" id="favoritesBox">
<object class="GtkViewport" id="viewport2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="column_homogeneous">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="resize_mode">queue</property>
<property name="shadow_type">none</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
<object class="GtkGrid" id="favoritesBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="column_homogeneous">True</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</child>

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<!-- Generated with glade 3.22.2 -->
<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>
<child type="titlebar">
<placeholder/>
</child>
<child>
@ -34,15 +34,19 @@
<object class="GtkViewport" id="viewport1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">6</property>
<property name="margin_bottom">6</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>
<child>
<object class="GtkButtonBox" id="RecentBox">
<object class="GtkBox" id="RecentBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="layout_style">start</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
@ -67,15 +71,16 @@
<object class="GtkViewport" id="viewport2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">6</property>
<property name="margin_bottom">6</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>
<child>
<object class="GtkButtonBox" id="RecentApps">
<object class="GtkBox" 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>