Az ügyféloldali dekoráció (CSD) az az eljárás, amely lehetővé teszi, hogy egy grafikus alkalmazás legyen felelős a saját ablakdekorációinak megrajzolásáért, ami történelmileg az ablakkezelő feladata.
Néha az ügyféloldali dekorációt olyan alkalmazásokra alkalmazzák, amelyek nem rendelkeznek hagyományos címsorral, azonban ez a kifejezés helytelen használata, mivel még azok az alkalmazások is dekorálhatók, amelyek rendelkeznek egy alap címsorral.
Az ügyféloldali dekoráció helyett a hagyományos szerveroldali dekoráció segítségével az alkalmazások meg tudják rajzolni a saját címsorukat, ami széles lehetőséget kínál az ablakdekorációk testreszabására és további funkciók (grafikus vezérlőelemek) hozzáadására az egyébként tipikus ablakkezelő sávban, sok üres hellyel a maximalizált ablakokban.
A Linux és a Unix-szerű rendszerekben Client-Side Decoration néven hívják az eljárást - amely az X Window System-ből származik - ahol egy ügyfél az az alkalmazás, amely az ablakot rendereli és elküldi az X szervernek. Az alternatívát Server-Side Decoration (SSD) -nek hívják, annak ellenére, hogy X-en a díszítést az ablakkezelő rajzolja, amely valójában nem a „szerver”.
Forrás: https://en.wikipedia.org/wiki/Client-Side_Decoration
gtk3-nocsd
A gtk3-nocsd egy kis modul, amelyt a Gtk+ 3 ügyféloldali dekorációjának letiltására használnak.
## Bevezetés: A Gtk+ 3.10 verzió óta a fejlesztők hozzáadtak egy úgynevezett fejlécet vagy egyéni címsort az ablak dekorációhoz. Ezzel és az ügyféloldali díszítéssel az ablakkezelő által biztosított eredeti címsort és ablakszegélyt a Gtk+ letiltja. Ezáltal az összes Gtk+ 3 alkalmazás ugyanilyen kinézetű lesz. Még rosszabb, hogy mindez összeomlaszthat néhány ablakkezelőt vagy összetevőt.
Sajnos, a Gtk+ fejlesztői úgy döntöttek, hogy ellentmondanak a meglévő szabványoknak, „nincs lehetőség” a CSD kikapcsolására.
Szerencsére a gtk3-nocsd alkalmazással még mindig van módunk (részben) kikapcsolni a CSD-t. Az ablakkezelő ablak vezérlése (a címsor és az ablakszegély megjelenítése) újra engedélyezhető.
Forrás: https://github.com/PCMan/gtk3-nocsd
Client-side decoration (CSD)
Az ügyféloldali dekorációt (Client-side decoration) jellemzően a GNOME 3 (GNOME Shell) asztali környezet használja. Az eljárás következményeképpen a GNOME alkalmazások ablakai - bármely más asztali környezet használatakor - látható megjelenésükben nem követik a rendszeren beállított témát, az ablakkezelő által biztosított eredeti címsort és ablakszegélyt, így eltérő megjelenésük zavaró lehet.
GNOME fejlesztés például a Lemezkezelő alkalmazás...
Nézzük, hogyan néz ki az ablak, az LXDE/LXQt asztali környezetnél (a háttérben a „2048 Game” ablak, ahhoz lehet hasonlítani):
Nézzük, hogyan néz ki az ablak, a gtk3-nocsd alkalmazás telepítése (és a rendszer újraindítása) után a Cinnamon asztali környezetnél:
A Client-side decoration (CSD) kikapcsolásához telepítsd a gtk3-nocsd alkalmazást (terminálban):
sudo apt-get install gtk3-nocsd
... és indítsd újra a rendszert. Az újraindítás helyett a ki- és bejelentkezés is elegendő a beállítás érvényesítéséhez.
Enjoy :-)
Hasznos
Ha valami még „nem kerek”...
A lentebb látható leírás segítségével, annak szöveges beállításaiban be kell helyettesíteni a megfelelő elérési utat a libgtk3-nocsd.so.0 fájlhoz!
Rákeresés (terminálban):
sudo find / -name libgtk3-nocsd.so.0
Példa, a találattal (Debian 10 Buster, 64 bites rendszer):
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0
... a kacsacsőr nem kell.
Leírás
#How to use:
-
gtk3-nocsd should work with all Gtk+ 3 versions.
-
Install necessary packages:
-
On Debian-based systems (including Ubuntu and Mint), install pkg-config, libgtk-3-dev, libgirepository1.0-dev.
-
On Fedora-based distros (including RHEL, CentOS), install pkgconfig, gtk3-devel, gtk+-devel, gobject-introspection-devel.
-
-
Build the code. Run make from command line. After this you'll have the files gtk3-nocsdand libgtk3-nocsd.so.0 in the same directory.
-
Now to run individual Gtk+ 3 apps (say gedit) using this hack, use the command ./gtk3-nocsd gedit from the same directory.
-
To have all Gtk+ 3 apps (of current user) use this hack, export some environment variables in your ~/.bashrc:
export GTK_CSD=0 export LD_PRELOAD=<"full path" of your libgtk3-nocsd.so.0 file>
-
On Arch Linux, you should use ~/.xsession instead of ~/.bashrc for the CSDs to be disabled properly.
-
On Debian-based systems with graphical login, instead modify (or create) ~/.xsessionrc and add the following code:
if [ -n "$STARTUP" ]; then BASESTARTUP=${STARTUP%% *} BASESTARTUP=${BASESTARTUP##*/} if [ "$BASESTARTUP" = x-session-manager ]; then BASESTARTUP=$(basename $(readlink /etc/alternatives/x-session-manager)) fi if [ x"$BASESTARTUP" = x"${BASESTARTUP#gnome-session}" ] ; then export GTK_CSD=0 STARTUP="env LD_PRELOAD=/path/to/libgtk3-nocsd.so.0 $STARTUP" fi fi
gtk3-nocsd is now packaged for Debian though (see below), so manual installation may not be necessary.
-
Re-login to make the environment variables take effect.
-
Hooray! GTK+ 3 client-side decorations are disabled now.
#Distribution packages:
gtk3-nocsd is packaged in Debian's unstable and testing distributions, see gtk3-nocsd in Debian's package database. The Debian package already comes with integration code to automatically disable CSDs when installed, so after package installation only a re-login is required to have CSDs disabled on non-GNOME desktops.
There is also a gtk3-nocsd-git package for Arch Linux.
#How it works:
$LD_PRELOAD is used to override several Gdk and glib/gobject APIs to intercept related calls Gtk+ 3 uses to setup CSDs. For older versions of Gtk+ 3, while it is trying to initialize CSDs, it is led to believe that there is no compositor available, so CSDs are not added. For later Gtk+ 3 versions (3.16.1+), the gtk_window_set_titlebar method is reimplemented, as tricking Gtk+ 3 into thinking the compositor is disabled has side effects and is not sufficent anymore.
Additionally, as gtk_window_set_titlebar is also called from Gtk+ internally (and LD_PRELOAD cannot override function calls within a library), several other places in Gtk+3 (e.g. buildable interfaces for GtkWindow and GtkDialog) are also overridden to ensure that CSDs are disabled.
Hozzászólások
Ez nagyon jól jött
Beküldte 444tibi -
Értékelés:
Nem tudtam hogy sok alkalmazás miért jelenik meg teljesen másképp, nagyon kapóra jött a cikk.
Itt az ékes bizonyíték :-) Konkréatan ez a gyári Szoftvertelepítő, előtte-utána.
https://mega.nz/file/skpWQC4R#KP-avr2J20N2ap0SaiUyMyHQ0-ZyQYA6SvV7ThR3R7s
Köszönöm megoldást.
Ez nagyon jól jött
Beküldte kimarite -
Értékelés: