본문 바로가기
리눅스

Bottles 51.18 오류 해결

by 다움위키 2025. 3. 3.

원문 보기: 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()

이 외에도, 더 수정해야 할 부분이 있을지도 모릅니다.