gtk3+ No window-borders... how to bring them back?

Hi there!

Gtk3+ removes the Window-Borders. I think, i read something about wayland and gtk3 and so on…

So, what is the right style-Command in FVWM to draw borders and a titel to these windows again? I need them…

scientific

Generally it isn’t possibel to activate a title or borders for Gtk3 applications via the style command because the Gtk3 developers hasn’t provided an option to activate a title or borders.

But it exists a hack from the pcmanfm developer]https://github.com/PCMan/gtk3-nocsd[/url].

If you have a Debian or an Ubuntu you can also use a PPA from here: ubuntuhandbook.org/index.php/201 … gtk3-apps/

It works fine for me from within the terminal as described on Github :exclamation:

In the menu you should set it like so]
Exec exec env LD_PRELOAD=<“full path” of your gtk3-nocsd.so file> gedit
[/code]Works, too :stuck_out_tongue:

Or you change it in the .desktop files described in the PPA link 8)

– Thomas –

I’d just like to understand this: Why is it a question of the library (GTK3) to provide titlebar and borders?
I thought, the window manager draws these around every window, except the application requests something different via EWMH or so. Thus I don’t understand the comment “hasn’t provided an option to activate [it]”.

Curiously
Werner

Since Gtk3.10/11 the titlebar and borders has to be drawn by the client itself - named client side decoration. If an application hasn’t explicitly implemented it, no WM can draw them.

Two good description about that problem:

As I understand it right, the lib created by the pcmanfm developer do exactly this - deactivating the client side decoration and fakes a title bar. Looking in the source code of gtk3-nocsd.c]// When set to true, this override gdk_screen_is_composited() and let it
// return FALSE temporarily. Then, client-side decoration (CSD) cannot be initialized.
volatile static int disable_composite = 0;
:
:
// This API exists since gtk+ 3.10
extern void gtk_window_set_titlebar (GtkWindow *window, GtkWidget *titlebar) {
static gtk_window_set_titlebar_t orig_func = NULL;
if(!orig_func)
orig_func = (gtk_window_set_titlebar_t)dlsym(RTLD_NEXT, “gtk_window_set_titlebar”);
// printf(“gtk_window_set_titlebar\n”);
:
:
static GObject *fake_gtk_dialog_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_params) {
// printf(“fake_gtk_dialog_constructor!! %d\n”, disable_composite);
:[/code]
This is summarized in the README of gtk3-nocsd as you red it:

I hope it’s now better understandable why FVWM cannot draw a title/borders and the style command won’t work.

– Thomas –

Okay, I understand, although my knowledge of X & WM is limited. I’ve always thought that a WM, like every other X client, can draw whatever it wants. I didn’t know that X implements a mechanism at all so that this can be forbidden by an application like GTK3.

Thanks for the information
Werner

Thx for this info.

Is it right, that csd is used by wayland? And applucations get ready piece for piece for wayland?

Scientific

http://blog.martin-graesslin.com/blog/2013/02/client-side-window-decorations-and-wayland/

May be someone doesn’t know, it is posible to hide all window buttons on GTK3 apps,
just edit [color=green]~/.config/gtk-3.0/settings.ini

gtk-decoration-layout=:minimize,maximize,close

change it to

gtk-decoration-layout=:menu

Also I’m using

Style Nautilus NoDecorHint Style Totem NoDecorHint, TitleFormat %c Style File-roller NoDecorHint, TitleFormat %c
in [color=green]~/.fvwm2rc. Then these apps are pretty usable imo.
For example Nautilus file manager looks pretty nice,
just enable org > gnome > nautilus > preferences always-use-location-entry via dconf-editor.
screenshot (nautilus, totem and file-roller archive manager on FVWM) i.imgur.com/UqfVXwz.png

To disable GTK3 black window borders, add

.window-frame { box-shadow: none; margin: 0; }
to [color=green]~/.config/gtk-3.0/gtk.css.

I am able to get decorations around evince by using the line

Style "Evince" !MWMDecor

in my config file.

You may also want to look at the MWMFunctions and !MWMFunctions styles as well