[appimage] fix -> some installed applications cannot be launched by their desktop entries

This commit is contained in:
Vinicius Moreira
2020-12-12 09:57:14 -03:00
parent 7c68ac9e99
commit 817dac86f2
4 changed files with 49 additions and 1 deletions

View File

@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [0.9.11]
### Fixes
- AppImage
- some installed applications cannot be launched by their desktop entries (regression from **0.9.10**) [#155](https://github.com/vinifmor/bauh/issues/155). If any of your installed AppImages are affected by this issue, just reinstall them.
## [0.9.10] 2020-12-11 ## [0.9.10] 2020-12-11
### Features ### Features
- Web - Web

View File

@@ -1,4 +1,4 @@
__version__ = '0.9.10' __version__ = '0.9.11'
__app_name__ = 'bauh' __app_name__ = 'bauh'
import os import os

View File

@@ -26,10 +26,16 @@ def replace_desktop_entry_exec_command(desktop_entry: str, appname: str, file_pa
cmd = RE_MANY_SPACES.sub(' ', exec_groups[1].strip()) cmd = RE_MANY_SPACES.sub(' ', exec_groups[1].strip())
if cmd: if cmd:
words = cmd.split(' ') words = cmd.split(' ')
changed = False
for idx in range(len(words)): for idx in range(len(words)):
if words[idx].lower() == treated_name: if words[idx].lower() == treated_name:
words[idx] = '"{}"'.format(file_path) words[idx] = '"{}"'.format(file_path)
changed = True
break
if not changed:
words = ['"{}"'.format(file_path)]
final_entry = final_entry.replace(full_match, full_match.replace(exec_groups[1], ' '.join(words))) final_entry = final_entry.replace(full_match, full_match.replace(exec_groups[1], ' '.join(words)))

View File

@@ -237,3 +237,40 @@ Keywords=PS3;Playstation;
""" """
self.assertEqual(expected, res) self.assertEqual(expected, res)
def test_replace_desktop_entry_exec_command__it_should_replace_the_command_by_the_file_path_if_the_appname_is_not_present(self):
desktop_entry = """
[Desktop Entry]
Name=GameHub
GenericName=GameHub
Comment=All your games in one place
Categories=Game;Amusement;
Keywords=Game;Hub;Steam;GOG;Humble;HumbleBundle;
Exec=com.github.tkashkin.gamehub
X-GNOME-Gettext-Domain=com.github.tkashkin.gamehub
Icon=/gamehub-0/logo.svg
Terminal=false
Type=Application
X-AppImage-Version=bionic-0.16.0-83-dev-0ca783e
"""
res = replace_desktop_entry_exec_command(desktop_entry=desktop_entry,
appname='gamehub',
file_path='/path/to/gamehub.appimage')
expected = """
[Desktop Entry]
Name=GameHub
GenericName=GameHub
Comment=All your games in one place
Categories=Game;Amusement;
Keywords=Game;Hub;Steam;GOG;Humble;HumbleBundle;
Exec="/path/to/gamehub.appimage"
X-GNOME-Gettext-Domain=com.github.tkashkin.gamehub
Icon=/gamehub-0/logo.svg
Terminal=false
Type=Application
X-AppImage-Version=bionic-0.16.0-83-dev-0ca783e
"""
self.assertEqual(expected, res)