GTK 파일 선택기?

GTK 파일 선택기?

거의 모든 프로그램에서 을 클릭하면 open아래와 같이 파일 선택 대화 상자가 열립니다. 대화 상자에 Recent, 등이 표시됩니다 Home.Desktop

여기에 이미지 설명을 입력하세요.

이것은 매우 성가신 일입니다. 나는 Desktop데이터를 저장하는 데 사용하지 않으며 Recent최근에 열었던 대화 상자가 무엇이든 열려 있는 대화 상자가 나타날 때마다 일관되고 동일한 보기를 원합니다.

또한 내 스크린샷에서 볼 수 있듯이 이 대화 상자 창이 얼마나 멍청한지 알 수 있습니다. 저는 tmpfs에 설치 했고 /tmp다른 하나는 tmpfs에 설치했습니다 /home/<user>/tmp.

그러나 Locations목록에서는 이 두 마운트 지점을 호출만 할 tmp뿐 구별할 수는 없습니다.

/이상적으로는 왼쪽 상단에 내 홈 디렉터리가 있고 하단에서 시작하는 기존의 일반 파일 시스템 트리를 보고 싶습니다 .

또는 더 나은 방법은 파일 시스템 트리를 왼쪽에 표시하는 것입니다. 현재 위치는 /home/<user>/자동으로 "미리 선택"되고 내 콘텐츠는 home오른쪽에 표시됩니다.

Recent다음을 추가하여 제거 할 수 있습니다 .config/gtk-3.0/settings.ini.

gtk-recent-files-enabled=false

그러나 상단에는 데스크탑이 여전히 존재하고 하단에는 무작위로 조립된 공유의 절대적인 혼돈이 존재합니다.

GTK2/GTK3에서 위에서 언급한 대로 파일 선택기에 순서와 논리를 다시 가져오려면 어떻게 해야 합니까?

2020년 6월 업데이트: 저는 데스크톱 환경 없이 GTK3 라이브러리와 함께 Debian 10에서 Openbox를 사용하고 있습니다. 스크린샷도 업데이트했습니다.

답변1

GTK 파일 선택기?

완벽한 솔루션은 최소한 업스트림을 커밋/패치하는 것입니다.gtkfilechooserdialog.c그리고gtkfilechooserwidget.c이 질문에 답하는 추가 기능을 구현하고 업데이트를 통해 모든 사용자가 사용할 수 있도록 하세요. 현재 구현에 대한 문서는 다음에 대해 제공됩니다.GTK2그리고GTK3.


패치는 로컬에서 하시나요?

이러한 기능을 패치하는 것은 빠른 작업이 아니며 업스트림 솔루션 외에도 이러한 패치를 로컬에 적용하려면 GTK 라이브러리의 사용자 정의 패치 버전을 사용해야 하므로 시스템 업데이트가 복잡해질 수 있습니다.

이러한 패치를 적용하는 또 다른 방법은 다음을 사용하는 것입니다.LD_예압현재 GTK 코드를 패치된 코드로 대체하기 위한 환경 변수 및 새로 개발된 패치 라이브러리. 이는 각 애플리케이션에 개별적으로 적용하거나 시스템 전체에 적용할 수 있습니다. 이 솔루션은 깨끗하지는 않지만 여전히 작동하므로 해결 방법/해킹으로 간주됩니다. (추가 개발 참고 사항으로 새 ld_preload라이브러리에는 다음과 같은 것을 구현하는 코드가 포함될 수 있습니다.이것).


해결책이 있나요?

여러 데스크탑을 설치한 사용자(예: Gnome 및 KDE)의 경우 특정 응용 프로그램은 보다 사용자 정의 가능한 KDE 대화 상자를 사용하도록 강제될 수 있습니다. 예를 들어 chromium다음과 같이 수행할 수 있습니다.

XDG_CURRENT_DESKTOP=KDE chromium

다른 솔루션도 있습니다GTK 바꾸기 대화 상자예를 들어크게텍또는xdg-데스크탑-포털-kde.

답변2

맞춤 설정할 수 있나요?

gtk-recent-files-enabled=false이 설정을 추가하여 ~/.config/gtk-3.0/settings.ini최근 항목을 비활성화할 수 있습니다. 또한 직접적인 관련은 없지만 최근 파일을 비활성화하는 데 사용할 수도 있습니다 gtk-recent-files-limit=0. gtk-recent-files-max-age=0Gtk2의 경우이것해결책은 최근 파일을 비활성화하는 것입니다.

숨겨진 파일이나 부팅 모드를 표시하도록 설정할 수 있는 다른 설정은 끔찍합니다.

gsettings set org.gtk.Settings.FileChooser show-hidden true
gsettings set org.gtk.Settings.FileChooser startup-mode cwd

dconf-editor기타 사용 가능한 설정의 스크린샷

파일 선택기 설정

파일 선택기 시작 모드

답변3

이 주제는 꽤 오랫동안 언급되어 왔지만 사이드바에서 점점 늘어나는 거의 쓸모없는 마운트 지점 항목 목록을 무시하는 간단한 솔루션은 여전히 ​​없는 것 같습니다.

빠른 수정으로 다음 패치는 홈 디렉터리, 사용자 북마크 및 "최근" 항목(그렇게 구성된 경우)을 제외한 모든 위치를 비활성화합니다.

아마도 이것이 도움이 될 것입니다.

--- gtk+3.0-3.24.24.orig/gtk/gtkplacessidebar.c
+++ gtk+3.0-3.24.24/gtk/gtkplacessidebar.c
@@ -106,6 +106,16 @@
  * - .has-open-popup when a popup is open for a row
  */
 
+/* Workaround switch for a concise places sidebar.
+ *
+ *   2023-01-05 Gundolf Kiefer <[email protected]>
+ *
+ * The following switch disables all automatically generated places from the
+ * sidebar except the home directory and the user-defined bookmarks.
+ */
+#define SHORT_SIDEBAR 1
+
+
 /* These are used when a destination-side DND operation is taking place.
  * Normally, when a common drag action is taking place, the state will be
  * DROP_STATE_NEW_BOOKMARK_ARMED, however, if the client of GtkPlacesSidebar
@@ -1097,6 +1107,8 @@ update_places (GtkPlacesSidebar *sidebar
   g_object_unref (start_icon);
   g_free (home_uri);
 
+#if SHORT_SIDEBAR == 0
+
   /* desktop */
   if (sidebar->show_desktop)
     {
@@ -1416,6 +1428,8 @@ update_places (GtkPlacesSidebar *sidebar
     }
   g_list_free (mounts);
 
+#endif    // SHORT_SIDEBAR == 0
+
   /* add bookmarks */
   bookmarks = _gtk_bookmarks_manager_list_bookmarks     (sidebar->bookmarks_manager);

답변4

사람들이 이미 여기에서 말했듯 StartupMode=cwd~/.config/gtk-2.0/gtkfilechooser.ini.

이 경우 다음 줄을 다음 줄에 삽입하세요 ~/.config/gtk-3.0/settings.ini.

gtk-recent-files-enabled=false

"/"가 첫 번째 보기로 표시되도록 하려면 chdir /애플리케이션을 시작하기 전에 이 작업을 수행해야 합니다.

관련 정보