Separated shortcut creation

This commit is contained in:
Faugus
2025-07-21 14:54:43 -03:00
committed by GitHub
parent edf5ababe0
commit 387e46e7b0
+125 -125
View File
@@ -1851,13 +1851,13 @@ class Main(Gtk.Window):
self.updated_steam_id = detect_steam_id()
if self.updated_steam_id is not None:
if self.check_steam_shortcut(title):
edit_game_dialog.checkbox_steam_shortcut.set_active(True)
edit_game_dialog.checkbox_shortcut_steam.set_active(True)
else:
edit_game_dialog.checkbox_steam_shortcut.set_active(False)
edit_game_dialog.checkbox_shortcut_steam.set_active(False)
else:
edit_game_dialog.checkbox_steam_shortcut.set_active(False)
edit_game_dialog.checkbox_steam_shortcut.set_sensitive(False)
edit_game_dialog.checkbox_steam_shortcut.set_tooltip_text(
edit_game_dialog.checkbox_shortcut_steam.set_active(False)
edit_game_dialog.checkbox_shortcut_steam.set_sensitive(False)
edit_game_dialog.checkbox_shortcut_steam.set_tooltip_text(
_("Add or remove a shortcut from Steam. Steam needs to be restarted. NO STEAM USERS FOUND."))
edit_game_dialog.check_existing_shortcut()
@@ -1948,7 +1948,7 @@ class Main(Gtk.Window):
continue
# Remove the shortcut
self.remove_shortcut(game)
self.remove_shortcut(game, "both")
self.remove_steam_shortcut(title)
self.remove_banner(game)
@@ -2116,8 +2116,9 @@ class Main(Gtk.Window):
protonfix, runner, addapp_checkbox, addapp, addapp_bat, banner, lossless)
# Determine the state of the shortcut checkbox
shortcut_state = add_game_dialog.checkbox_shortcut.get_active()
steam_shortcut_state = add_game_dialog.checkbox_steam_shortcut.get_active()
desktop_shortcut_state = add_game_dialog.checkbox_shortcut_desktop.get_active()
appmenu_shortcut_state = add_game_dialog.checkbox_shortcut_appmenu.get_active()
steam_shortcut_state = add_game_dialog.checkbox_shortcut_steam.get_active()
icon_temp = os.path.expanduser(add_game_dialog.icon_temp)
icon_final = f'{add_game_dialog.icons_path}/{title_formatted}.ico'
@@ -2140,23 +2141,19 @@ class Main(Gtk.Window):
else:
if add_game_dialog.combobox_launcher.get_active() == 2:
add_game_dialog.destroy()
self.launcher_screen(title, "2", title_formatted, runner, prefix, umu_run, game, shortcut_state,
icon_temp, icon_final)
self.launcher_screen(title, "2", title_formatted, runner, prefix, umu_run, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final)
if add_game_dialog.combobox_launcher.get_active() == 3:
add_game_dialog.destroy()
self.launcher_screen(title, "3", title_formatted, runner, prefix, umu_run, game, shortcut_state,
icon_temp, icon_final)
self.launcher_screen(title, "3", title_formatted, runner, prefix, umu_run, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final)
if add_game_dialog.combobox_launcher.get_active() == 4:
add_game_dialog.destroy()
self.launcher_screen(title, "4", title_formatted, runner, prefix, umu_run, game, shortcut_state,
icon_temp, icon_final)
self.launcher_screen(title, "4", title_formatted, runner, prefix, umu_run, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final)
if add_game_dialog.combobox_launcher.get_active() == 5:
add_game_dialog.destroy()
self.launcher_screen(title, "5", title_formatted, runner, prefix, umu_run, game, shortcut_state,
icon_temp, icon_final)
self.launcher_screen(title, "5", title_formatted, runner, prefix, umu_run, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final)
game_info = {"gameid": title_formatted, "title": title, "path": path, "prefix": prefix, "launch_arguments": launch_arguments,
"game_arguments": game_arguments, "mangohud": mangohud, "gamemode": gamemode, "disable_hidraw": disable_hidraw,
@@ -2180,7 +2177,8 @@ class Main(Gtk.Window):
if add_game_dialog.combobox_launcher.get_active() == 0 or add_game_dialog.combobox_launcher.get_active() == 1:
# Call add_remove_shortcut method
self.add_shortcut(game, shortcut_state, icon_temp, icon_final)
self.add_shortcut(game, desktop_shortcut_state, "desktop", icon_temp, icon_final)
self.add_shortcut(game, appmenu_shortcut_state, "appmenu", icon_temp, icon_final)
self.add_steam_shortcut(game, steam_shortcut_state, icon_temp, icon_final)
if addapp_checkbox == "addapp_enabled":
@@ -2205,8 +2203,7 @@ class Main(Gtk.Window):
# Ensure the dialog is destroyed when canceled
add_game_dialog.destroy()
def launcher_screen(self, title, launcher, title_formatted, runner, prefix, umu_run, game, shortcut_state,
icon_temp, icon_final):
def launcher_screen(self, title, launcher, title_formatted, runner, prefix, umu_run, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final):
self.box_launcher = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.box_launcher.set_hexpand(True)
self.box_launcher.set_vexpand(True)
@@ -2248,26 +2245,22 @@ class Main(Gtk.Window):
if launcher == "2":
image_path = battle_icon
self.label_download.set_text(_("Downloading Battle.net..."))
self.download_launcher("battle", title, title_formatted, runner, prefix, umu_run, game, shortcut_state,
icon_temp, icon_final)
self.download_launcher("battle", title, title_formatted, runner, prefix, umu_run, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final)
elif launcher == "3":
image_path = ea_icon
self.label_download.set_text(_("Downloading EA App..."))
self.download_launcher("ea", title, title_formatted, runner, prefix, umu_run, game, shortcut_state,
icon_temp, icon_final)
self.download_launcher("ea", title, title_formatted, runner, prefix, umu_run, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final)
elif launcher == "4":
image_path = epic_icon
self.label_download.set_text(_("Downloading Epic Games..."))
self.download_launcher("epic", title, title_formatted, runner, prefix, umu_run, game, shortcut_state,
icon_temp, icon_final)
self.download_launcher("epic", title, title_formatted, runner, prefix, umu_run, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final)
elif launcher == "5":
image_path = ubisoft_icon
self.label_download.set_text(_("Downloading Ubisoft Connect..."))
self.download_launcher("ubisoft", title, title_formatted, runner, prefix, umu_run, game, shortcut_state,
icon_temp, icon_final)
self.download_launcher("ubisoft", title, title_formatted, runner, prefix, umu_run, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final)
else:
image_path = faugus_png
@@ -2297,7 +2290,7 @@ class Main(Gtk.Window):
def on_button_finish_install_clicked(self):
self.on_button_kill_clicked(widget)
def monitor_process(self, processo, game, shortcut_state, icon_temp, icon_final, title):
def monitor_process(self, processo, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final, title):
retcode = processo.poll()
if retcode is not None:
@@ -2306,7 +2299,10 @@ class Main(Gtk.Window):
if os.path.exists(faugus_temp):
shutil.rmtree(faugus_temp)
self.add_shortcut(game, shortcut_state, icon_temp, icon_final)
self.add_shortcut(game, desktop_shortcut_state, "desktop", icon_temp, icon_final)
self.add_shortcut(game, appmenu_shortcut_state, "appmenu", icon_temp, icon_final)
self.add_steam_shortcut(game, steam_shortcut_state, icon_temp, icon_final)
self.add_item_list(game)
self.update_list()
self.select_game_by_title(title)
@@ -2330,8 +2326,7 @@ class Main(Gtk.Window):
return True
def download_launcher(self, launcher, title, title_formatted, runner, prefix, umu_run, game, shortcut_state,
icon_temp, icon_final):
def download_launcher(self, launcher, title, title_formatted, runner, prefix, umu_run, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final):
urls = {"ea": "https://origin-a.akamaihd.net/EA-Desktop-Client-Download/installer-releases/EAappInstaller.exe",
# "epic": "https://launcher-public-service-prod06.ol.epicgames.com/launcher/api/installer/download/EpicGamesLauncherInstaller.msi",
"epic": "https://github.com/Faugus/components/releases/download/v1.0.0/epic.tar.gz",
@@ -2380,8 +2375,7 @@ class Main(Gtk.Window):
elif launcher == "epic":
install_path = os.path.join(prefix, "drive_c", "Program Files (x86)")
os.makedirs(install_path, exist_ok=True)
self.extract_epic_launcher(file_path, install_path, runner, prefix, umu_run, title_formatted,
game, shortcut_state, icon_temp, icon_final, title)
self.extract_epic_launcher(file_path, install_path, runner, prefix, umu_run, title_formatted, game, desktop_shortcut_state, appmenu_shortcut_state, icon_temp, icon_final, title)
return
elif launcher == "ubisoft":
@@ -2395,14 +2389,14 @@ class Main(Gtk.Window):
self.label_download2.set_visible(True)
if launcher != "epic":
processo = subprocess.Popen([sys.executable, faugus_run, command])
GLib.timeout_add(100, self.monitor_process, processo, game, shortcut_state, icon_temp, icon_final, title)
GLib.timeout_add(100, self.monitor_process, processo, game, desktop_shortcut_state, appmenu_shortcut_state, steam_shortcut_state, icon_temp, icon_final, title)
threading.Thread(target=start_download).start()
return file_path
def extract_epic_launcher(self, file_path, install_path, runner, prefix, umu_run, title_formatted,
game, shortcut_state, icon_temp, icon_final, title):
game, desktop_shortcut_state, appmenu_shortcut_state, icon_temp, icon_final, title):
def extract():
try:
with tarfile.open(file_path, "r:gz") as tar:
@@ -2415,22 +2409,20 @@ class Main(Gtk.Window):
GLib.idle_add(self.bar_download.set_text, _("Extracting... %d%%") % int(percent * 100))
GLib.idle_add(self.bar_download.set_fraction, 1.0)
GLib.idle_add(self.bar_download.set_text, _("Extraction complete"))
GLib.idle_add(self.launch_epic_launcher, install_path, runner, prefix, umu_run, title_formatted,
game, shortcut_state, icon_temp, icon_final, title)
GLib.idle_add(self.launch_epic_launcher, install_path, runner, prefix, umu_run, title_formatted, game, desktop_shortcut_state, appmenu_shortcut_state, icon_temp, icon_final, title)
except Exception as e:
GLib.idle_add(self.show_warning_dialog, self, _("Error during extraction: %s") % e)
threading.Thread(target=extract).start()
def launch_epic_launcher(self, install_path, runner, prefix, umu_run, title_formatted,
game, shortcut_state, icon_temp, icon_final, title):
def launch_epic_launcher(self, install_path, runner, prefix, umu_run, title_formatted, game, desktop_shortcut_state, appmenu_shortcut_state, icon_temp, icon_final, title):
self.bar_download.set_visible(False)
self.label_download2.set_text(_("Please close the login window and wait..."))
command2 = f"WINEPREFIX='{prefix}' GAMEID={title_formatted} {umu_run} '{install_path}/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe'"
if runner:
command2 = f"PROTONPATH={runner} {command2}"
processo2 = subprocess.Popen([sys.executable, faugus_run, command2])
GLib.timeout_add(100, self.monitor_process, processo2, game, shortcut_state, icon_temp, icon_final, title)
GLib.timeout_add(100, self.monitor_process, processo2, game, desktop_shortcut_state, appmenu_shortcut_state, icon_temp, icon_final, title)
def select_game_by_title(self, title):
# Selects an item from the FlowBox based on the title
@@ -2506,11 +2498,13 @@ class Main(Gtk.Window):
icon_final = f'{edit_game_dialog.icons_path}/{title_formatted}.ico'
# Determine the state of the shortcut checkbox
shortcut_state = edit_game_dialog.checkbox_shortcut.get_active()
steam_shortcut_state = edit_game_dialog.checkbox_steam_shortcut.get_active()
desktop_shortcut_state = edit_game_dialog.checkbox_shortcut_desktop.get_active()
appmenu_shortcut_state = edit_game_dialog.checkbox_shortcut_appmenu.get_active()
steam_shortcut_state = edit_game_dialog.checkbox_shortcut_steam.get_active()
# Call add_remove_shortcut method
self.add_shortcut(game, shortcut_state, icon_temp, icon_final)
self.add_shortcut(game, desktop_shortcut_state, "desktop", icon_temp, icon_final)
self.add_shortcut(game, appmenu_shortcut_state, "appmenu", icon_temp, icon_final)
self.add_steam_shortcut(game, steam_shortcut_state, icon_temp, icon_final)
if game.addapp_checkbox == True:
@@ -2533,12 +2527,20 @@ class Main(Gtk.Window):
os.remove(edit_game_dialog.banner_path_temp)
edit_game_dialog.destroy()
def add_shortcut(self, game, shortcut_state, icon_temp, icon_final):
def add_shortcut(self, game, shortcut_state, shortcut, icon_temp, icon_final):
applications_shortcut_path = f"{app_dir}/{game.gameid}.desktop"
desktop_shortcut_path = f"{desktop_dir}/{game.gameid}.desktop"
# Check if the shortcut checkbox is checked
if not shortcut_state:
if shortcut == "desktop" and not shortcut_state:
# Remove existing shortcut if it exists
self.remove_shortcut(game)
self.remove_shortcut(game, shortcut)
if os.path.isfile(os.path.expanduser(icon_temp)):
os.rename(os.path.expanduser(icon_temp), icon_final)
return
if shortcut == "appmenu" and not shortcut_state:
# Remove existing shortcut if it exists
self.remove_shortcut(game, shortcut)
if os.path.isfile(os.path.expanduser(icon_temp)):
os.rename(os.path.expanduser(icon_temp), icon_final)
return
@@ -2577,26 +2579,21 @@ class Main(Gtk.Window):
)
# Check if the destination directory exists and create if it doesn't
applications_directory = app_dir
if not os.path.exists(applications_directory):
os.makedirs(applications_directory)
if not os.path.exists(app_dir):
os.makedirs(app_dir)
desktop_directory = desktop_dir
if not os.path.exists(desktop_directory):
os.makedirs(desktop_directory)
if not os.path.exists(desktop_dir):
os.makedirs(desktop_dir)
applications_shortcut_path = f"{app_dir}/{game.gameid}.desktop"
if shortcut == "appmenu":
with open(applications_shortcut_path, 'w') as appmenu_file:
appmenu_file.write(desktop_file_content)
os.chmod(applications_shortcut_path, 0o755)
with open(applications_shortcut_path, 'w') as desktop_file:
desktop_file.write(desktop_file_content)
# Make the .desktop file executable
os.chmod(applications_shortcut_path, 0o755)
# Copy the shortcut to Desktop
desktop_shortcut_path = f"{desktop_dir}/{game.gameid}.desktop"
shutil.copyfile(applications_shortcut_path, desktop_shortcut_path)
os.chmod(desktop_shortcut_path, 0o755)
if shortcut == "desktop":
with open(desktop_shortcut_path, 'w') as desktop_file:
desktop_file.write(desktop_file_content)
os.chmod(desktop_shortcut_path, 0o755)
def add_steam_shortcut(self, game, steam_shortcut_state, icon_temp, icon_final):
def add_game_to_steam(title, game_directory, icon):
@@ -2770,33 +2767,26 @@ class Main(Gtk.Window):
dialog.set_preview_widget_active(False)
def remove_banner(self, game):
# Remove banner file
banner_file_path = f"{banners_dir}/{game.gameid}.png"
if os.path.exists(banner_file_path):
os.remove(banner_file_path)
def remove_shortcut(self, game):
# Remove existing shortcut if it exists
desktop_file_path = f"{app_dir}/{game.gameid}.desktop"
if os.path.exists(desktop_file_path):
os.remove(desktop_file_path)
# Remove shortcut from Desktop if exists
def remove_shortcut(self, game, shortcut):
applications_shortcut_path = f"{app_dir}/{game.gameid}.desktop"
desktop_shortcut_path = f"{desktop_dir}/{game.gameid}.desktop"
if os.path.exists(desktop_shortcut_path):
os.remove(desktop_shortcut_path)
# Remove icon file
icon_file_path = f"{icons_dir}/{game.gameid}.ico"
if os.path.exists(icon_file_path):
os.remove(icon_file_path)
if shortcut == "appmenu":
if os.path.exists(applications_shortcut_path):
os.remove(applications_shortcut_path)
if shortcut == "desktop":
if os.path.exists(desktop_shortcut_path):
os.remove(desktop_shortcut_path)
if shortcut == "both":
if os.path.exists(applications_shortcut_path):
os.remove(applications_shortcut_path)
if os.path.exists(desktop_shortcut_path):
os.remove(desktop_shortcut_path)
def update_list(self):
# Update the game list
# for row in self.game_list.get_children():
# self.game_list.remove(row)
for child in self.flowbox.get_children():
self.flowbox.remove(child)
@@ -3019,7 +3009,7 @@ class Settings(Gtk.Dialog):
self.label_default_prefix_tools.set_margin_top(10)
# Widgets for runner
self.label_runner = Gtk.Label(label=_("Default Runner"))
self.label_runner = Gtk.Label(label=_("Default Proton"))
self.label_runner.set_halign(Gtk.Align.START)
self.combobox_runner = Gtk.ComboBoxText()
@@ -4560,7 +4550,7 @@ class AddGame(Gtk.Dialog):
self.button_search_prefix.set_size_request(50, -1)
# Widgets for runner
self.label_runner = Gtk.Label(label=_("Runner"))
self.label_runner = Gtk.Label(label=_("Proton"))
self.label_runner.set_halign(Gtk.Align.START)
self.combobox_runner = Gtk.ComboBoxText()
@@ -4641,11 +4631,19 @@ class AddGame(Gtk.Dialog):
self.button_run.set_tooltip_text(_("Run a file inside the prefix"))
# Button for creating shortcut
self.checkbox_shortcut = Gtk.CheckButton(label=_("Shortcut"))
self.checkbox_shortcut.set_tooltip_text(
_("Add or remove a shortcut from the Desktop and the Application Launcher."))
self.checkbox_steam_shortcut = Gtk.CheckButton(label=_("Steam Shortcut"))
self.checkbox_steam_shortcut.set_tooltip_text(
self.label_shortcut = Gtk.Label(label=_("Shortcut"))
self.label_shortcut.set_margin_start(10)
self.label_shortcut.set_margin_end(10)
self.label_shortcut.set_margin_top(10)
self.label_shortcut.set_halign(Gtk.Align.START)
self.checkbox_shortcut_desktop = Gtk.CheckButton(label=_("Desktop"))
self.checkbox_shortcut_desktop.set_tooltip_text(
_("Add or remove a shortcut from the Desktop."))
self.checkbox_shortcut_appmenu = Gtk.CheckButton(label=_("App Menu"))
self.checkbox_shortcut_appmenu.set_tooltip_text(
_("Add or remove a shortcut from the Application Launcher."))
self.checkbox_shortcut_steam = Gtk.CheckButton(label=_("Steam"))
self.checkbox_shortcut_steam.set_tooltip_text(
_("Add or remove a shortcut from Steam. Steam needs to be restarted."))
# Button for selection shortcut icon
@@ -4745,8 +4743,9 @@ class AddGame(Gtk.Dialog):
self.notebook.append_page(grid_page2, tab_box2)
self.grid_launcher.attach(self.combobox_launcher, 0, 0, 4, 1)
self.grid_launcher.attach(self.combobox_launcher, 1, 0, 1, 1)
self.combobox_launcher.set_hexpand(True)
self.combobox_launcher.set_valign(Gtk.Align.CENTER)
self.grid_title.attach(self.label_title, 0, 0, 4, 1)
self.grid_title.attach(self.entry_title, 0, 1, 4, 1)
@@ -4766,10 +4765,12 @@ class AddGame(Gtk.Dialog):
self.grid_runner.attach(self.combobox_runner, 0, 1, 1, 1)
self.combobox_runner.set_hexpand(True)
self.grid_shortcut.add(self.checkbox_shortcut)
self.grid_shortcut.add(self.checkbox_steam_shortcut)
self.label_shortcut.set_hexpand(True)
self.grid_shortcut.add(self.checkbox_shortcut_desktop)
self.grid_shortcut.add(self.checkbox_shortcut_appmenu)
self.grid_shortcut.add(self.checkbox_shortcut_steam)
self.grid_shortcut_icon.add(self.button_shortcut_icon)
self.grid_shortcut.set_valign(Gtk.Align.CENTER)
self.grid_shortcut_icon.set_valign(Gtk.Align.CENTER)
self.box_shortcut = Gtk.Box()
self.box_shortcut.pack_start(self.grid_shortcut, False, False, 0)
@@ -4780,6 +4781,7 @@ class AddGame(Gtk.Dialog):
page1.add(self.grid_path)
page1.add(self.grid_prefix)
page1.add(self.grid_runner)
page1.add(self.label_shortcut)
page1.add(self.box_shortcut)
self.grid_protonfix.attach(self.label_protonfix, 0, 0, 1, 1)
@@ -4873,8 +4875,8 @@ class AddGame(Gtk.Dialog):
self.updated_steam_id = detect_steam_id()
if not self.updated_steam_id:
self.checkbox_steam_shortcut.set_sensitive(False)
self.checkbox_steam_shortcut.set_tooltip_text(
self.checkbox_shortcut_steam.set_sensitive(False)
self.checkbox_shortcut_steam.set_tooltip_text(
_("Add or remove a shortcut from Steam. Steam needs to be restarted. NO STEAM USERS FOUND."))
self.lossless_location = ConfigManager().config.get('lossless-location', '')
@@ -4891,7 +4893,6 @@ class AddGame(Gtk.Dialog):
self.combobox_lossless.set_active(0)
self.combobox_lossless.set_tooltip_text(_("Lossless Scaling Vulkan Layer NOT INSTALLED."))
# self.create_remove_shortcut(self)
self.button_shortcut_icon.set_image(self.set_image_shortcut_icon())
tab_box1.show_all()
@@ -5175,6 +5176,26 @@ class AddGame(Gtk.Dialog):
def on_combobox_changed(self, combobox):
active_index = combobox.get_active()
def cleanup_fields():
self.entry_title.set_text("")
self.entry_launch_arguments.set_text("")
self.entry_path.set_text("")
self.entry_prefix.set_text("")
self.checkbox_shortcut_desktop.set_active(False)
self.checkbox_shortcut_appmenu.set_active(False)
self.checkbox_shortcut_steam.set_active(False)
self.entry_protonfix.set_text("")
self.entry_launch_arguments.set_text("")
self.entry_game_arguments.set_text("")
self.checkbox_addapp.set_active(False)
self.entry_addapp.set_text("")
self.combobox_lossless.set_active(0)
self.checkbox_mangohud.set_active(False)
self.checkbox_gamemode.set_active(False)
self.checkbox_disable_hidraw.set_active(False)
cleanup_fields()
if active_index == 0:
self.grid_title.set_visible(True)
self.grid_path.set_visible(True)
@@ -5186,11 +5207,7 @@ class AddGame(Gtk.Dialog):
self.grid_protonfix.set_visible(True)
self.grid_addapp.set_visible(True)
self.checkbox_disable_hidraw.set_visible(True)
self.entry_launch_arguments.set_text("")
self.entry_title.set_text("")
self.entry_path.set_text("")
self.button_shortcut_icon.set_image(self.set_image_shortcut_icon())
if active_index == 1:
self.grid_title.set_visible(True)
self.grid_path.set_visible(True)
@@ -5202,11 +5219,6 @@ class AddGame(Gtk.Dialog):
self.grid_protonfix.set_visible(False)
self.grid_addapp.set_visible(False)
self.checkbox_disable_hidraw.set_visible(False)
self.entry_launch_arguments.set_text("")
self.entry_title.set_text("")
self.entry_path.set_text("")
self.button_shortcut_icon.set_image(self.set_image_shortcut_icon())
elif active_index == 2:
self.grid_title.set_visible(False)
@@ -5219,12 +5231,10 @@ class AddGame(Gtk.Dialog):
self.grid_protonfix.set_visible(True)
self.grid_addapp.set_visible(True)
self.checkbox_disable_hidraw.set_visible(True)
self.entry_launch_arguments.set_text("WINE_SIMULATE_WRITECOPY=1")
self.entry_title.set_text(self.combobox_launcher.get_active_text())
self.entry_path.set_text(
f"{self.entry_prefix.get_text()}/drive_c/Program Files (x86)/Battle.net/Battle.net.exe")
shutil.copyfile(battle_icon, os.path.expanduser(self.icon_temp))
pixbuf = GdkPixbuf.Pixbuf.new_from_file(self.icon_temp)
scaled_pixbuf = pixbuf.scale_simple(50, 50, GdkPixbuf.InterpType.BILINEAR)
@@ -5242,12 +5252,9 @@ class AddGame(Gtk.Dialog):
self.grid_protonfix.set_visible(True)
self.grid_addapp.set_visible(True)
self.checkbox_disable_hidraw.set_visible(True)
self.entry_launch_arguments.set_text("")
self.entry_title.set_text(self.combobox_launcher.get_active_text())
self.entry_path.set_text(
f"{self.entry_prefix.get_text()}/drive_c/Program Files/Electronic Arts/EA Desktop/EA Desktop/EALauncher.exe")
shutil.copyfile(ea_icon, os.path.expanduser(self.icon_temp))
pixbuf = GdkPixbuf.Pixbuf.new_from_file(self.icon_temp)
scaled_pixbuf = pixbuf.scale_simple(50, 50, GdkPixbuf.InterpType.BILINEAR)
@@ -5265,12 +5272,9 @@ class AddGame(Gtk.Dialog):
self.grid_protonfix.set_visible(True)
self.grid_addapp.set_visible(True)
self.checkbox_disable_hidraw.set_visible(True)
self.entry_launch_arguments.set_text("")
self.entry_title.set_text(self.combobox_launcher.get_active_text())
self.entry_path.set_text(
f"{self.entry_prefix.get_text()}/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win64/EpicGamesLauncher.exe")
shutil.copyfile(epic_icon, os.path.expanduser(self.icon_temp))
pixbuf = GdkPixbuf.Pixbuf.new_from_file(self.icon_temp)
scaled_pixbuf = pixbuf.scale_simple(50, 50, GdkPixbuf.InterpType.BILINEAR)
@@ -5288,12 +5292,9 @@ class AddGame(Gtk.Dialog):
self.grid_protonfix.set_visible(True)
self.grid_addapp.set_visible(True)
self.checkbox_disable_hidraw.set_visible(True)
self.entry_launch_arguments.set_text("")
self.entry_title.set_text(self.combobox_launcher.get_active_text())
self.entry_path.set_text(
f"{self.entry_prefix.get_text()}/drive_c/Program Files (x86)/Ubisoft/Ubisoft Game Launcher/UbisoftConnect.exe")
shutil.copyfile(ubisoft_icon, os.path.expanduser(self.icon_temp))
pixbuf = GdkPixbuf.Pixbuf.new_from_file(self.icon_temp)
scaled_pixbuf = pixbuf.scale_simple(50, 50, GdkPixbuf.InterpType.BILINEAR)
@@ -5749,13 +5750,12 @@ class AddGame(Gtk.Dialog):
return # If there's no title, there's no shortcut to check
title_formatted = format_title(title)
desktop_file_path = f"{app_dir}/{title_formatted}.desktop"
# Check if the shortcut file exists
shortcut_exists = os.path.exists(desktop_file_path)
desktop_file_path = f"{desktop_dir}/{title_formatted}.desktop"
applications_shortcut_path = f"{app_dir}/{title_formatted}.desktop"
# Mark the checkbox if the shortcut exists
self.checkbox_shortcut.set_active(shortcut_exists)
self.checkbox_shortcut_desktop.set_active(os.path.exists(desktop_file_path))
self.checkbox_shortcut_appmenu.set_active(os.path.exists(applications_shortcut_path))
def update_prefix_entry(self, entry):
# Update the prefix entry based on the title and self.default_prefix
@@ -6936,13 +6936,13 @@ def apply_dark_theme():
Gtk.Settings.get_default().set_property("gtk-application-prefer-dark-theme", True)
def update_games_file():
if not os.path.exists(games_json):
return
with open(games_json, "r", encoding="utf-8") as f:
games = json.load(f)
for game in games:
if not game.get("gameid"):
game["gameid"] = format_title(game["title"])
with open(games_json, "w", encoding="utf-8") as f:
json.dump(games, f, indent=4, ensure_ascii=False)