Fix create startmenu/desktop link
This commit is contained in:
parent
bfd16d9f83
commit
740153bd0d
|
@ -42,10 +42,10 @@ In [releases page](https://github.com/Dummerle/Rare/releases) are AppImages for
|
||||||
available
|
available
|
||||||
|
|
||||||
### Run from source
|
### Run from source
|
||||||
|
1. Clone the repo with Submodule: `git clone https://github.com/Dummerle/Rare --recurse-submodules`.
|
||||||
1. Run `pip install -r requirements.txt` to get dependencies. If you use `pacman` you can
|
2. Run `pip install -r requirements.txt` to get dependencies. If you use `pacman` you can
|
||||||
run `sudo pacman --needed -S python-wheel python-setuptools python-pyqt5 python-qtawesome python-requests python-pillow`
|
run `sudo pacman --needed -S python-wheel python-setuptools python-pyqt5 python-qtawesome python-requests python-pillow`
|
||||||
2. For unix operating systems run `sh start.sh`. For windows run `set PYTHONPATH=%CD% && python rare`
|
3. Run `python3 rare`
|
||||||
|
|
||||||
## Why Rare?
|
## Why Rare?
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ __version__ = "1.6.2"
|
||||||
|
|
||||||
resources_path = os.path.join(os.path.dirname(__file__), "resources")
|
resources_path = os.path.join(os.path.dirname(__file__), "resources")
|
||||||
languages_path = os.path.join(os.path.dirname(__file__), "languages")
|
languages_path = os.path.join(os.path.dirname(__file__), "languages")
|
||||||
|
data_dir = ""
|
||||||
|
|
||||||
# Cache Directory: Store images
|
# Cache Directory: Store images
|
||||||
if p := os.getenv("XDG_CACHE_HOME"):
|
if p := os.getenv("XDG_CACHE_HOME"):
|
||||||
|
|
|
@ -5,11 +5,10 @@ import pathlib
|
||||||
import sys
|
import sys
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
from rare import __version__, data_dir
|
|
||||||
from rare.utils import singleton
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
# disable debug.log file
|
||||||
|
# QOpenGLDebugLogger.disableMessages(QOpenGLDebugLogger(), QOpenGLDebugMessage.AnySource, QOpenGLDebugMessage.AnyType)
|
||||||
# fix cx_freeze
|
# fix cx_freeze
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
multiprocessing.freeze_support()
|
multiprocessing.freeze_support()
|
||||||
|
@ -17,6 +16,9 @@ def main():
|
||||||
# insert legendary submodule to path
|
# insert legendary submodule to path
|
||||||
sys.path.insert(0, os.path.join(pathlib.Path(__file__).parent.parent.absolute(), "legendary"))
|
sys.path.insert(0, os.path.join(pathlib.Path(__file__).parent.parent.absolute(), "legendary"))
|
||||||
|
|
||||||
|
# insert source directory
|
||||||
|
sys.path.insert(0, str(pathlib.Path(__file__).parent.parent.absolute()))
|
||||||
|
|
||||||
# CLI Options
|
# CLI Options
|
||||||
parser = ArgumentParser()
|
parser = ArgumentParser()
|
||||||
parser.add_argument("-V", "--version", action="store_true", help="Shows version and exits")
|
parser.add_argument("-V", "--version", action="store_true", help="Shows version and exits")
|
||||||
|
@ -36,24 +38,31 @@ def main():
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.debug:
|
||||||
|
print(sys.path)
|
||||||
|
|
||||||
if args.desktop_shortcut:
|
if args.desktop_shortcut:
|
||||||
from rare.utils import utils
|
from rare.utils import utils
|
||||||
utils.create_rare_desktop_link("desktop")
|
utils.create_rare_desktop_link("desktop")
|
||||||
print("Link created")
|
print("Link created")
|
||||||
|
|
||||||
if args.startmenu_shortcut:
|
if args.startmenu_shortcut:
|
||||||
from rare.utils import utils
|
from rare.utils import utils
|
||||||
utils.create_rare_desktop_link("start_menu")
|
utils.create_rare_desktop_link("start_menu")
|
||||||
print("link created")
|
print("link created")
|
||||||
|
|
||||||
if args.version:
|
if args.version:
|
||||||
|
from rare import __version__
|
||||||
print(__version__)
|
print(__version__)
|
||||||
return
|
return
|
||||||
|
from rare.utils import singleton
|
||||||
try:
|
try:
|
||||||
# this object only allows one instance per machine
|
# this object only allows one instance per machine
|
||||||
|
|
||||||
me = singleton.SingleInstance()
|
me = singleton.SingleInstance()
|
||||||
except singleton.SingleInstanceException:
|
except singleton.SingleInstanceException:
|
||||||
print("Rare is already running")
|
print("Rare is already running")
|
||||||
|
from rare import data_dir
|
||||||
with open(os.path.join(data_dir, "lockfile"), "w") as file:
|
with open(os.path.join(data_dir, "lockfile"), "w") as file:
|
||||||
if args.subparser == "launch":
|
if args.subparser == "launch":
|
||||||
file.write("launch " + args.app_name)
|
file.write("launch " + args.app_name)
|
||||||
|
|
|
@ -55,9 +55,9 @@ class BaseInstalledWidget(QGroupBox):
|
||||||
self.create_desktop = QAction(self.tr("Remove Desktop link"))
|
self.create_desktop = QAction(self.tr("Remove Desktop link"))
|
||||||
else:
|
else:
|
||||||
self.create_desktop = QAction(self.tr("Create Desktop link"))
|
self.create_desktop = QAction(self.tr("Create Desktop link"))
|
||||||
|
if not is_origin:
|
||||||
self.create_desktop.triggered.connect(lambda: self.create_desktop_link("desktop"))
|
self.create_desktop.triggered.connect(lambda: self.create_desktop_link("desktop"))
|
||||||
self.addAction(self.create_desktop)
|
self.addAction(self.create_desktop)
|
||||||
|
|
||||||
if platform.system() == "Linux":
|
if platform.system() == "Linux":
|
||||||
start_menu_file = os.path.expanduser(f"~/.local/share/applications/{self.game.app_title}.desktop")
|
start_menu_file = os.path.expanduser(f"~/.local/share/applications/{self.game.app_title}.desktop")
|
||||||
|
@ -69,9 +69,9 @@ class BaseInstalledWidget(QGroupBox):
|
||||||
self.create_start_menu = QAction(self.tr("Remove start menu link"))
|
self.create_start_menu = QAction(self.tr("Remove start menu link"))
|
||||||
else:
|
else:
|
||||||
self.create_start_menu = QAction(self.tr("Create start menu link"))
|
self.create_start_menu = QAction(self.tr("Create start menu link"))
|
||||||
|
if not is_origin:
|
||||||
self.create_start_menu.triggered.connect(lambda: self.create_desktop_link("start_menu"))
|
self.create_start_menu.triggered.connect(lambda: self.create_desktop_link("start_menu"))
|
||||||
self.addAction(self.create_start_menu)
|
self.addAction(self.create_start_menu)
|
||||||
|
|
||||||
reload_image = QAction(self.tr("Reload Image"), self)
|
reload_image = QAction(self.tr("Reload Image"), self)
|
||||||
reload_image.triggered.connect(self.reload_image)
|
reload_image.triggered.connect(self.reload_image)
|
||||||
|
@ -99,8 +99,11 @@ class BaseInstalledWidget(QGroupBox):
|
||||||
return
|
return
|
||||||
if not (os.path.exists(os.path.expanduser(f"{path}{self.game.app_title}.desktop"))
|
if not (os.path.exists(os.path.expanduser(f"{path}{self.game.app_title}.desktop"))
|
||||||
or os.path.exists(os.path.expanduser(f"{path}{self.game.app_title}.lnk"))):
|
or os.path.exists(os.path.expanduser(f"{path}{self.game.app_title}.lnk"))):
|
||||||
if not create_desktop_link(self.game.app_name, self.core, type_of_link):
|
try:
|
||||||
return
|
if not create_desktop_link(self.game.app_name, self.core, type_of_link):
|
||||||
|
return
|
||||||
|
except PermissionError:
|
||||||
|
QMessageBox.warning(self, "Error", "Permission error. Cannot create Desktop Link")
|
||||||
if type_of_link == "desktop":
|
if type_of_link == "desktop":
|
||||||
self.create_desktop.setText(self.tr("Remove Desktop link"))
|
self.create_desktop.setText(self.tr("Remove Desktop link"))
|
||||||
elif type_of_link == "start_menu":
|
elif type_of_link == "start_menu":
|
||||||
|
|
|
@ -5,7 +5,7 @@ import sys
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
|
|
||||||
from PyQt5.QtCore import QSettings, Qt
|
from PyQt5.QtCore import QSettings, Qt
|
||||||
from PyQt5.QtWidgets import QWidget
|
from PyQt5.QtWidgets import QWidget, QMessageBox
|
||||||
|
|
||||||
from legendary.core import LegendaryCore
|
from legendary.core import LegendaryCore
|
||||||
from rare import cache_dir
|
from rare import cache_dir
|
||||||
|
@ -101,12 +101,11 @@ class RareSettings(QWidget, Ui_RareSettings):
|
||||||
)
|
)
|
||||||
|
|
||||||
if platform.system() == "Linux":
|
if platform.system() == "Linux":
|
||||||
|
|
||||||
self.desktop_file = os.path.expanduser("~/Desktop/Rare.desktop")
|
self.desktop_file = os.path.expanduser("~/Desktop/Rare.desktop")
|
||||||
self.start_menu_link = os.path.expanduser("~/.local/share/applications/Rare.desktop")
|
self.start_menu_link = os.path.expanduser("~/.local/share/applications/Rare.desktop")
|
||||||
elif platform.system() == "Windows":
|
elif platform.system() == "Windows":
|
||||||
self.desktop_file = os.path.expanduser("~/Desktop/Rare.lnk")
|
self.desktop_file = os.path.expanduser("~/Desktop/Rare.lnk")
|
||||||
self.start_menu_link = os.path.expandvars("%appdata%/Microsoft/Windows/Start Menu")
|
self.start_menu_link = os.path.expandvars("%appdata%\\Microsoft\\Windows\\Start Menu")
|
||||||
else:
|
else:
|
||||||
self.desktop_file = ""
|
self.desktop_file = ""
|
||||||
self.start_menu_link = ""
|
self.start_menu_link = ""
|
||||||
|
@ -138,20 +137,27 @@ class RareSettings(QWidget, Ui_RareSettings):
|
||||||
self.log_dir_size_label.setText("0KB")
|
self.log_dir_size_label.setText("0KB")
|
||||||
|
|
||||||
def create_start_menu_link(self):
|
def create_start_menu_link(self):
|
||||||
if not os.path.exists(self.start_menu_link):
|
try:
|
||||||
utils.create_rare_desktop_link("start_menu")
|
if not os.path.exists(self.start_menu_link):
|
||||||
self.startmenu_link.setText(self.tr("Remove start menu link"))
|
utils.create_rare_desktop_link("start_menu")
|
||||||
else:
|
self.startmenu_link.setText(self.tr("Remove start menu link"))
|
||||||
os.remove(self.start_menu_link)
|
else:
|
||||||
self.startmenu_link.setText(self.tr("Create start menu link"))
|
os.remove(self.start_menu_link)
|
||||||
|
self.startmenu_link.setText(self.tr("Create start menu link"))
|
||||||
|
except PermissionError as e:
|
||||||
|
logger.error(str(e))
|
||||||
|
QMessageBox.warning(self, "Error", "Permission error, cannot remove " + str(self.start_menu_link))
|
||||||
|
|
||||||
def create_desktop_link(self):
|
def create_desktop_link(self):
|
||||||
if not os.path.exists(self.desktop_file):
|
try:
|
||||||
utils.create_rare_desktop_link("desktop")
|
if not os.path.exists(self.desktop_file):
|
||||||
self.desktop_link.setText(self.tr("Remove Desktop link"))
|
utils.create_rare_desktop_link("desktop")
|
||||||
else:
|
self.desktop_link.setText(self.tr("Remove Desktop link"))
|
||||||
os.remove(self.desktop_file)
|
else:
|
||||||
self.desktop_link.setText(self.tr("Create desktop link"))
|
os.remove(self.desktop_file)
|
||||||
|
self.desktop_link.setText(self.tr("Create desktop link"))
|
||||||
|
except PermissionError as e:
|
||||||
|
logger.warning(self, "Error", "Permission error, cannot remove " + str(self.desktop_file))
|
||||||
|
|
||||||
def on_color_select_changed(self, color):
|
def on_color_select_changed(self, color):
|
||||||
if color:
|
if color:
|
||||||
|
|
|
@ -64,7 +64,6 @@ class GameWidget(QWidget):
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
logger.info(", ".join([img["type"] for img in json_info["keyImages"]]))
|
logger.info(", ".join([img["type"] for img in json_info["keyImages"]]))
|
||||||
# print(json_info["keyImages"])
|
|
||||||
|
|
||||||
self.setLayout(self.layout)
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ import logging
|
||||||
import random
|
import random
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSignal
|
from PyQt5.QtCore import pyqtSignal
|
||||||
from PyQt5.QtWidgets import QWidget, QGroupBox, QScrollArea, QCheckBox, QVBoxLayout, QLabel
|
from PyQt5.QtWidgets import QGroupBox, QScrollArea, QCheckBox, QVBoxLayout, QLabel
|
||||||
|
|
||||||
from legendary.core import LegendaryCore
|
from legendary.core import LegendaryCore
|
||||||
from rare.components.tabs.shop import ShopApiCore
|
from rare.components.tabs.shop import ShopApiCore
|
||||||
|
@ -240,7 +240,6 @@ class ShopWidget(QScrollArea, Ui_ShopWidget):
|
||||||
|
|
||||||
if data:
|
if data:
|
||||||
for game in data:
|
for game in data:
|
||||||
print(game)
|
|
||||||
w = GameWidget(self.path, game, 275)
|
w = GameWidget(self.path, game, 275)
|
||||||
self.game_widget.layout().addWidget(w)
|
self.game_widget.layout().addWidget(w)
|
||||||
w.show_info.connect(self.show_game.emit)
|
w.show_info.connect(self.show_game.emit)
|
||||||
|
|
|
@ -254,20 +254,15 @@ def create_rare_desktop_link(type_of_link):
|
||||||
# Path to location of link file
|
# Path to location of link file
|
||||||
pathLink = os.path.join(target_folder, linkName)
|
pathLink = os.path.join(target_folder, linkName)
|
||||||
|
|
||||||
if sys.executable.endswith("Rare.exe"):
|
executable = sys.executable
|
||||||
executable = sys.executable
|
executable = executable.replace("python.exe", "pythonw.exe")
|
||||||
else:
|
logger.debug(executable)
|
||||||
executable = f"{sys.executable} {os.path.abspath(sys.argv[0])}"
|
|
||||||
|
|
||||||
if "python.exe" in executable:
|
|
||||||
executable = executable.replace("python.exe", "pythonw.exe")
|
|
||||||
|
|
||||||
# Add shortcut
|
# Add shortcut
|
||||||
shell = Dispatch('WScript.Shell')
|
shell = Dispatch('WScript.Shell')
|
||||||
shortcut = shell.CreateShortCut(pathLink)
|
shortcut = shell.CreateShortCut(pathLink)
|
||||||
shortcut.Targetpath = executable
|
shortcut.Targetpath = executable
|
||||||
shortcut.Arguments = os.path.abspath(sys.argv[0])
|
if not sys.executable.endswith("Rare.exe"):
|
||||||
shortcut.WorkingDirectory = os.getcwd()
|
shortcut.Arguments = os.path.abspath(sys.argv[0])
|
||||||
|
|
||||||
# Icon
|
# Icon
|
||||||
shortcut.IconLocation = os.path.join(resources_path, "images", "Rare.ico")
|
shortcut.IconLocation = os.path.join(resources_path, "images", "Rare.ico")
|
||||||
|
|
Loading…
Reference in a new issue