GTKファイルセレクタ?

GTKファイルセレクタ?

ほとんどすべてのプログラムでをクリックすると、open以下のようにファイル選択ダイアログボックスが開きます。ダイアログボックスにRecentなどが表示されますHomeDesktop

ここに画像の説明を入力してください。

これは非常に迷惑なことです。私はDesktopデータを保存するために使用しておらず、Recent最近開いたダイアログボックスが何であれ、開いているダイアログボックスが表示されるたびに一貫して同じビューが必要です。

また、私のスクリーンショットに示すように、このダイアログウィンドウがどれほど愚かなのかを知ることができます。私tmpfsはにインストールし、/tmpもう一つはtmpfsにインストールしました/home/<user>/tmp

ただし、Locationsリストではこれら2つのマウントポイントを呼び出す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=0gtk-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 /アプリケーションを起動する前にこれを行う必要があります。

関連情報