원문 보기: https://dawoum.duckdns.org/wiki/Bottles_(software)
Bottles는 샌드박스 환경에서 실행하도록 강제하고 있지만, 소스 코드를 조금 수정해서 일반 프로그램처럼 실행이 가능합니다.
위와 관련된 패치는 아치 리눅스 패키징에서 볼 수 있습니다.
어쨌든, 51.18 이후로, 기존의 데스크탑으로 뽑아 놓은 윈도우 프로그램은 실행되지만, bottles을 실행한 후에, 특정 bottle 내부로 진입하지 못하고, 새로운 bottle의 생성도 제대로 되지 않을 것입니다.
그 이유는 여전히 샌드박스 환경을 확인해서 그렇지 않을 경우 return을 해버리거나, 다른 조치를 해버리기 때문입니다.
따라서, 해당 줄을 제거함으로써 문제를 해결할 수 있습니다.
diff --color -urN Bottles.dist/bottles/frontend/bottle_details_page.py Bottles/bottles/frontend/bottle_details_page.py
--- Bottles.dist/bottles/frontend/bottle_details_page.py 2025-02-21 02:39:29.298999928 +0900
+++ Bottles/bottles/frontend/bottle_details_page.py 2025-03-03 07:21:09.040255099 +0900
@@ -442,6 +442,9 @@
else:
show_chooser()
+ if not Xdp.Portal.running_under_sandbox():
+ show_chooser()
+
def __backup(self, widget, backup_type):
"""
This function pop up the file chooser where the user
diff --color -urN Bottles.dist/bottles/frontend/bottles_list_view.py Bottles/bottles/frontend/bottles_list_view.py
--- Bottles.dist/bottles/frontend/bottles_list_view.py 2025-02-21 02:39:29.298999928 +0900
+++ Bottles/bottles/frontend/bottles_list_view.py 2025-03-03 07:19:41.657552128 +0900
@@ -82,8 +82,8 @@
def run_executable(self, *_args):
"""Display file dialog for executable"""
- if not Xdp.Portal.running_under_sandbox():
- return
+# if not Xdp.Portal.running_under_sandbox():
+# return
def set_path(_dialog, response):
if response != Gtk.ResponseType.ACCEPT:
diff --color -urN Bottles.dist/bottles/frontend/details_preferences_page.py Bottles/bottles/frontend/details_preferences_page.py
--- Bottles.dist/bottles/frontend/details_preferences_page.py 2025-02-23 02:09:01.486621108 +0900
+++ Bottles/bottles/frontend/details_preferences_page.py 2025-03-03 07:19:41.658224602 +0900
@@ -139,9 +139,12 @@
self.queue = details.queue
self.details = details
- if not gamemode_available or not Xdp.Portal.running_under_sandbox():
+# if not gamemode_available or not Xdp.Portal.running_under_sandbox():
+# return
+ if not gamemode_available:
return
+
_not_available = _("This feature is unavailable on your system.")
_flatpak_not_available = _(
"{} To add this feature, please run flatpak install"
diff --color -urN Bottles.dist/bottles/frontend/new_bottle_dialog.py Bottles/bottles/frontend/new_bottle_dialog.py
--- Bottles.dist/bottles/frontend/new_bottle_dialog.py 2025-02-21 02:39:29.300018341 +0900
+++ Bottles/bottles/frontend/new_bottle_dialog.py 2025-03-03 07:19:41.658422417 +0900
@@ -80,7 +80,9 @@
super().__init__(**kwargs)
# common variables and references
self.window = GtkUtils.get_parent_window()
- if not self.window or not Xdp.Portal.running_under_sandbox():
+# if not self.window or not Xdp.Portal.running_under_sandbox():
+# return
+ if not self.window:
return
self.app = self.window.get_application()
이 외에도, 더 수정해야 할 부분이 있을지도 모릅니다.