Option to hide window decorations
authorColin Clark <colin.clark@cclark.uk>
Sun, 21 Apr 2024 16:15:55 +0000 (17:15 +0100)
committerColin Clark <colin.clark@cclark.uk>
Sun, 21 Apr 2024 16:15:55 +0000 (17:15 +0100)
The option is in Edit/Preferences/Windows

When selected and if supported by the window manager, window title bar,
resize controls, etc will not be displayed.

doc/docbook/GuideOptionsWindow.xml
src/options.cc
src/options.h
src/preferences.cc
src/rcfile.cc
src/window.cc

index f310d46..204bcf2 100644 (file)
         </listitem>
       </varlistentry>
     </variablelist>
+    <variablelist>
+      <varlistentry>
+        <term>
+          <guilabel>Hide window decorations</guilabel>
+        </term>
+        <listitem>
+          <para>
+            By default, windows are decorated with a title bar, resize controls, etc. If this option is selected, some window managers may be able to disable these decorations, creating a borderless window.
+          </para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
     <variablelist>
       <varlistentry>
         <term>
index 513d1f2..e03ce71 100644 (file)
@@ -78,6 +78,7 @@ ConfOptions *init_options(ConfOptions *options)
        options->save_window_workspace = FALSE;
        options->tools_restore_state = TRUE;
        options->save_dialog_window_positions = FALSE;
+       options->hide_window_decorations = FALSE;
        options->show_window_ids = FALSE;
 
        options->file_ops.confirm_delete = TRUE;
index 9fd114d..402347c 100644 (file)
@@ -92,6 +92,7 @@ struct ConfOptions
        gboolean save_window_workspace;
        gboolean tools_restore_state;
        gboolean save_dialog_window_positions;
+       gboolean hide_window_decorations;
        gboolean show_window_ids;
 
        gint log_window_lines;
index 978ac2a..f0ae2de 100644 (file)
@@ -324,6 +324,7 @@ static void config_window_apply()
        options->use_saved_window_positions_for_new_windows = c_options->use_saved_window_positions_for_new_windows;
        options->save_window_workspace = c_options->save_window_workspace;
        options->save_dialog_window_positions = c_options->save_dialog_window_positions;
+       options->hide_window_decorations = c_options->hide_window_decorations;
        options->show_window_ids = c_options->show_window_ids;
        options->image.scroll_reset_method = c_options->image.scroll_reset_method;
        options->image.zoom_2pass = c_options->image.zoom_2pass;
@@ -2452,6 +2453,7 @@ static void config_tab_windows(GtkWidget *notebook)
        GtkWidget *checkbox;
        GtkWidget *ct_button;
        GtkWidget *spin;
+       GtkWidget *widget;
 
        vbox = scrolled_notebook_page(notebook, _("Windows"));
 
@@ -2474,6 +2476,10 @@ static void config_tab_windows(GtkWidget *notebook)
        pref_checkbox_new_int(group, _("Remember dialog window positions"),
                              options->save_dialog_window_positions, &c_options->save_dialog_window_positions);
 
+       widget = pref_checkbox_new_int(group, _("Hide window decorations"),
+                             options->hide_window_decorations, &c_options->hide_window_decorations);
+       gtk_widget_set_tooltip_text(widget, "Remove borders and title bar from windows. A restart of Geeqie is required for this feature to take effect on the main layout window");
+
        pref_checkbox_new_int(group, _("Show window IDs"),
                              options->show_window_ids, &c_options->show_window_ids);
 
index 16d9ce4..59851bf 100644 (file)
@@ -380,6 +380,7 @@ static void write_global_attributes(GString *outstr, gint indent)
        WRITE_NL(); WRITE_BOOL(*options, save_window_workspace);
        WRITE_NL(); WRITE_BOOL(*options, tools_restore_state);
        WRITE_NL(); WRITE_BOOL(*options, save_dialog_window_positions);
+       WRITE_NL(); WRITE_BOOL(*options, hide_window_decorations);
        WRITE_NL(); WRITE_BOOL(*options, show_window_ids);
        WRITE_NL(); WRITE_BOOL(*options, expand_menu_toolbar);
        WRITE_NL(); WRITE_BOOL(*options, hamburger_menu);
@@ -887,6 +888,7 @@ static gboolean load_global_params(const gchar **attribute_names, const gchar **
                if (READ_BOOL(*options, save_window_workspace)) continue;
                if (READ_BOOL(*options, tools_restore_state)) continue;
                if (READ_BOOL(*options, save_dialog_window_positions)) continue;
+               if (READ_BOOL(*options, hide_window_decorations)) continue;
                if (READ_BOOL(*options, show_window_ids)) continue;
                if (READ_BOOL(*options, expand_menu_toolbar)) continue;
                if (READ_BOOL(*options, hamburger_menu)) continue;
index f8cb032..e59de65 100644 (file)
@@ -136,6 +136,11 @@ GtkWidget *window_new(const gchar *role, const gchar *icon, const gchar *icon_fi
        window_set_icon(window, icon, icon_file);
        gtk_window_set_role(GTK_WINDOW(window), role);
 
+       if (options->hide_window_decorations)
+               {
+               gtk_window_set_decorated(GTK_WINDOW(window), FALSE);
+               }
+
        return window;
 }