Description:

This is the port of the famous Crystal kwin decoration theme to KDE 4.x.

For 3.x version see:
http://www.kde-look.org/content/show.php/Crystal?content=13969


Main features:
* Uses compositing features of KDE4 for transparency with ability to use the blur plugin
* Supports grouping/tabbing of windows
* Ability to choose the blending colors of buttons as well as title bar and border size
* Right click on minimize button toggles shade mode
* Middle click on minimize button sends window to below
* Double click on program symbol closes window
* Support for button themes. Basic button theme is included, feel free to swamp me with cool themes
* Can show a tooltip for the caption
* Right click on close button can run kdocker, if installed, to minimize the application to the system tray



-- INSTALL ---------------------
Basic Installation (from the console):
- Step 1 (as user)
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr ..
$ make
- Step 3 (as root)
# make install

If you installed crystal while it was running, you would need to restart kwin for the changes to take effect: kwin --replace
--------------------------------

Feedback and patches well appreciated. ;-)


Follow me on GitHub!
https://github.com/shlusiak/kwin-style-crystal


This version of crystal needs KDE 4.9 or higher!



Have fun,
Sascha Hlusiak
Last changelog:

9 years ago

2.2.1 (KDE 4.9):
* Fix tabbing after window shading


2.2.0 (KDE 4.9 only):
* Use API for KDE 4.9

2.1.1 (KDE 4.8):
* Improved compatibility with KDE 4.8
* Fixed possible glitches without compositing in KDE 4.8
* Draws own shadows


2.1.0:
* Support of KDE's cool window tabbing / grouping feature!!
* Fix working with kdocker >= 4.5, if installed (right click on close button to run)
* Fix glitch of round corners in compositing mode introduced in 2.0.6. Reduced options of round corners to 1 for code simplification.


2.0.6:
* Use Blur effect for transparent borders when kwin-plugin is enabled (needs KDE >= 4.6.0)
* Updated aqua button theme
* New button theme: glass-pill
* Fix some compile warnings


2.0.5:
* Use KDecoration again instead of KDecorationUnstable; hopefully fixes compile problems
* Remove some probably unnecessary redrawing


2.0.4:
* Built-in logos for various distros
* Some experimental transparency support (requires KDE4 compositing)
* Fix not showing shadow in compositing mode (whiteliste abilities now, not blacklist them; thanks to Zarin for pointing that out)

2.0.3:
* Possibility to stretch or scale overlay images
* Fix showing logo on active window only
* Disable caption shadow for inactive windows so it's easier to read
* Work around "hollow" border glitches when using half-maximized states
* Added backported Kubuntu-Hardy button theme (thanks to Kubuntu team)
* Little nicer default settings

2.0.2:
* Adding back button images in configuration dialog
* Set tooltip of decoration to caption right from the beginning
* Creating and using embedtool again to create tiles.h

2.0.1:
* Scrolling through open windows works again (if option is enabled)
* Link to this page in the info dialog
* Minimizing to systray using kdocker works again

2.0.0:
* Initial release of KDE 4.x port

ab4bd

1 year ago

Any chance you will port this to Plasma 5?

I still think it's the best out there, and I miss it.

Report

pieter

2 years ago

+ here...
Plasma 5 looks really cool but they can't touch the subtlety and refinement of the crystel window decoration. At all.

Report

woko1754

2 years ago

I'm a fan of this decoration, but since updating Kubuntu to Version 15.04 it's gone and compiling the source didn't work. Do you plan to migrate this to Plasma 5 ?

Report

Venom1991

3 years ago

I was looking for something similar to Aero that Windows has for some time and found this gem. Downloaded it, compiled and installed it as soon as I could. Really quality work done here, thank you and happy birthday!

Report

geoffm

4 years ago

I installed kde-style-crystal on Linux Mint 15 KDE 4.11, it had to remove kde-window-manager which I didn't notice. A couple of days later my system is unusable (I just hibernate instead of rebooting most of the time...) I messed around a lot before finding out that kde-window-manager was missing. It seems to me it's probably an error in setting the dependencies...

Report

microngust

4 years ago

Crystal is by far my favorite window decoration. However, ever since about KDE 4.8 I've noticed an odd issue when using it with the proprietary nVidia driver. Essentially, after opening several application windows, when I then maximize one of the windows (by double-clicking the titlebar) it takes about 2 seconds before it responds and then maximizes. I've experimented and I can say for certain that the issue only happens with the proprietary nVidia driver. I'm currently running version 310.44 of the nVidia driver, KDE 4.10.2, x11-server-xorg 1.13.3 and version 3.8.6 of the kernel.

I've never seen the issue with any of the following scenarios:
a) The open source Nouveau driver
b) The ATI fglrx driver (on my Radeon machines)
c) KDE effects turned off
d) Other window decorations (w/proprietary nVidia driver and effects enabled)

I tend to think that it might have something to do with how it draws it's window shadows, but that's just my gut feeling.

Report

RavenLX

4 years ago

This is a really beautiful window decoration! I love how it will take on from your selected color theme. I did find that I had to install the kde-workspace dev package as well as cmake to compile it as it doesn't come installed in Linux Mint 14 KDE (upgraded to KDE 4.10). But after those installs it compiled fine and works beautifully. Thank you!

Report

herrbatka

4 years ago

Hi, i would like to add my own button style. How to do this?

Report

nexusroot

5 years ago

Anyone notice the bug where you use the WD tabbing feature and you add two windows to a tabbed group. You can click between the tabs just fine on the Window Decoration titlebar. However if you shade to titlebar then unshade, then try to switch between the tabs -> you can only go to one more tab "click". Every subsequent time you try to click afterwards it wont work (until you shade/unshade again - and then it'll only work for one more click). This bug isnt present in Oxygen WD. Those are the only two WD I've used that support the window tabbing..

I love Crystal and have used it on and off for many years. I hope they can fix this problem. Is there anywhere I can file a bug report?

Report

C

dralgebra

5 years ago

Thank you for the detailled information. It helped me track it down and fix the weird tabbing issues after a window has been shaded/unshaded. Please try crystal-2.2.1.

Sorry I had so little time for crystal, lately. :-(

Report

nexusroot

5 years ago

awesome! it works great! thank you very much!

Report

pierat

5 years ago

I compiled version 2.2 on a Linux Mint 13 system, running KDE 4.9.4. There are some nasty graphical glitches: there's a curved white line in the title bar and the windows are surrounded by white lines.

The compilation didn't produce any errors though.

What can I do to get crystal running?

Report

pierat

5 years ago

I did some experimenting and I've discovered that those graphical mistakes only occur when I choose anything else then "no outline" for the background settings.

When I choose "no outline" everything looks like it is supposed to do.

Report

pierat

5 years ago

I like this decoration.

Which version is the latest that will work on KDE 4.5 and where can I get it? Thanks in advance!

(P.S.: I know that this is a very old version of KDE, but I can't update that machine! And yet I'd like to use this window decoration.)

Report

jarau

5 years ago

I've compiled the version with KDE 4.9.0, but I can't see it in my decoration list. It compiles without any error. The same behavior with Ubuntu 12.04 and Fedora 17.

Report

MrsAngelD

5 years ago

The build folders are empty in the archive??

Report

C

dralgebra

5 years ago

Yes, it's just a prepared folder to build, so my instructions can be followed blindly. ;-) Did you try the cmake .. command? That'll populy the build folder with Makefiles.

Report

mcder

5 years ago

V2.2.0 in KDE 4.9 RC1

[ 53%] Building CXX object client/CMakeFiles/kwin3_crystal.dir/crystalclient.o
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp: En la función miembro ‘bool CrystalClient::mouseReleaseEvent(QMouseEvent*)’:
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:538:27: error: ‘tabId’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:538:28: error: ‘setCurrentTab’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp: En la función miembro ‘void CrystalClient::paintTab(QPainter&, const QRect&, int, bool, bool)’:
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:644:42: error: no se encontró una función coincidente para la llamada a ‘CrystalClient::caption(int&)’
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:644:42: nota: el candidato es:
In file included from /home/mcder3/src/crystal-2.2.0/client/crystalfactory.h:27:0,
from /home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:44:
/usr/include/kdecoration.h:549:13: nota: QString KDecoration::caption() const
/usr/include/kdecoration.h:549:13: nota: el candidato espera 0 argumentos, se proporcionaron 1
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:652:65: error: no se encontró una función coincidente para la llamada a ‘CrystalClient::caption(int&)’
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:652:65: nota: el candidato es:
In file included from /home/mcder3/src/crystal-2.2.0/client/crystalfactory.h:27:0,
from /home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:44:
/usr/include/kdecoration.h:549:13: nota: QString KDecoration::caption() const
/usr/include/kdecoration.h:549:13: nota: el candidato espera 0 argumentos, se proporcionaron 1
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:659:15: error: no se encontró una función coincidente para la llamada a ‘CrystalClient::caption(int&)’
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:659:15: nota: el candidato es:
In file included from /home/mcder3/src/crystal-2.2.0/client/crystalfactory.h:27:0,
from /home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:44:
/usr/include/kdecoration.h:549:13: nota: QString KDecoration::caption() const
/usr/include/kdecoration.h:549:13: nota: el candidato espera 0 argumentos, se proporcionaron 1
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp: En la función miembro ‘void CrystalClient::paint(QPainter&)’:
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:872:23: error: ‘class CrystalClient’ no tiene un miembro llamado ‘tabCount’
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:916:25: error: ‘tabId’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:916:43: error: ‘currentTabId’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:927:20: error: ‘class CrystalClient’ no tiene un miembro llamado ‘tabCount’
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp: En la función miembro ‘bool CrystalClient::mouseMoveEvent(QMouseEvent*)’:
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1069:82: error: ‘TabDragOp’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1078:40: error: ‘tabDragMimeType’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1078:73: error: ‘tabId’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1084:62: error: ‘tabCount’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1114:35: error: ‘untab’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp: En la función miembro ‘bool CrystalClient::dragEnterEvent(QDragEnterEvent*)’:
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1265:68: error: ‘tabDragMimeType’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp: En la función miembro ‘bool CrystalClient::dropEvent(QDropEvent*)’:
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1284:46: error: ‘tabDragMimeType’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1292:26: error: ‘tabCount’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1293:32: error: ‘tabId’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1293:57: error: ‘tab_A_behind_B’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1295:32: error: ‘tabId’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1295:47: error: ‘tab_A_before_B’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1302:45: error: ‘tabCount’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1302:49: error: ‘tabId’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1302:51: error: ‘tab_A_behind_B’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1304:40: error: ‘tabId’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1304:42: error: ‘tab_A_before_B’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp: En la función miembro ‘bool CrystalClient::dragMoveEvent(QDragMoveEvent*)’:
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1316:49: error: ‘tabDragMimeType’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1322:16: error: ‘tabCount’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1332:25: error: ‘tabCount’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1333:36: error: ‘tabId’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1333:60: error: ‘tab_A_behind_B’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1335:36: error: ‘tabId’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1335:51: error: ‘tab_A_before_B’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1343:25: error: ‘tabCount’ no se declaró en este ámbito
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp: En la función miembro ‘int CrystalClient::itemClicked(const QPoint&, bool)’:
/home/mcder3/src/crystal-2.2.0/client/crystalclient.cpp:1364:22: error: ‘tabCount’ no se declaró en este ámbito
make[2]: *** [client/CMakeFiles/kwin3_crystal.dir/crystalclient.o] Error 1
make[1]: *** [client/CMakeFiles/kwin3_crystal.dir/all] Error 2
make: *** [all] Error 2

Report

C

dralgebra

5 years ago

Do you also have the latest -devel package installed, which bring the kwin header files? what distribution are you using? Maybe the installed binary and the develop packages do not match.

Report

mcder

5 years ago

I use archlinux and I have installed the package "base-devel" and required to compile an application for KDE

I`m using KDE RC1 that are in the repositories [kde-unstable]

Report

mcder

5 years ago

KDE Version: 4.8.95

Report

C

dralgebra

5 years ago

Can you check the package containing "kdecoration.h"? I suspect it still being from 4.8 instead of 4.9rc.

Report

mcder

5 years ago

you are correct


[mcder3@mcder3-host ~]$ sudo pacman -Qo /usr/include/kdecoration.h
Contraseña:
/usr/include/kdecoration.h es propiedad de kdebase-workspace 4.8.4-2

Now if I can compile

thanks for your help :-)

Report

saftsocken

5 years ago

But one thing i would like to see: Windowtitle in full widh centered:)

Report

jts74

5 years ago

v2.10 fails to build under KDE 4.8.90 (4.9 Beta 2), with...

Scanning dependencies of target kwin3_crystal
[ 33%] Building CXX object client/CMakeFiles/kwin3_crystal.dir/kwin3_crystal_automoc.o
In file included from /home/riz/develop/kwin_crystal/crystal-2.1.0/build/client/../../client/crystalbutton.h:27:0,
from /home/riz/develop/kwin_crystal/crystal-2.1.0/build/client/moc_crystalbutton.cpp:10,
from /home/riz/develop/kwin_crystal/crystal-2.1.0/build/client/kwin3_crystal_automoc.cpp:4:
/home/riz/develop/kwin_crystal/crystal-2.1.0/client/crystalclient.h:89:54: error: ‘ClientGroupItem’ has not been declared
make[2]: *** [client/CMakeFiles/kwin3_crystal.dir/kwin3_crystal_automoc.o] Error 1
make[1]: *** [client/CMakeFiles/kwin3_crystal.dir/all] Error 2
make: *** [all] Error 2

Report

9 years ago

2.2.1 (KDE 4.9):
* Fix tabbing after window shading


2.2.0 (KDE 4.9 only):
* Use API for KDE 4.9

2.1.1 (KDE 4.8):
* Improved compatibility with KDE 4.8
* Fixed possible glitches without compositing in KDE 4.8
* Draws own shadows


2.1.0:
* Support of KDE's cool window tabbing / grouping feature!!
* Fix working with kdocker >= 4.5, if installed (right click on close button to run)
* Fix glitch of round corners in compositing mode introduced in 2.0.6. Reduced options of round corners to 1 for code simplification.


2.0.6:
* Use Blur effect for transparent borders when kwin-plugin is enabled (needs KDE >= 4.6.0)
* Updated aqua button theme
* New button theme: glass-pill
* Fix some compile warnings


2.0.5:
* Use KDecoration again instead of KDecorationUnstable; hopefully fixes compile problems
* Remove some probably unnecessary redrawing


2.0.4:
* Built-in logos for various distros
* Some experimental transparency support (requires KDE4 compositing)
* Fix not showing shadow in compositing mode (whiteliste abilities now, not blacklist them; thanks to Zarin for pointing that out)

2.0.3:
* Possibility to stretch or scale overlay images
* Fix showing logo on active window only
* Disable caption shadow for inactive windows so it's easier to read
* Work around "hollow" border glitches when using half-maximized states
* Added backported Kubuntu-Hardy button theme (thanks to Kubuntu team)
* Little nicer default settings

2.0.2:
* Adding back button images in configuration dialog
* Set tooltip of decoration to caption right from the beginning
* Creating and using embedtool again to create tiles.h

2.0.1:
* Scrolling through open windows works again (if option is enabled)
* Link to this page in the info dialog
* Minimizing to systray using kdocker works again

2.0.0:
* Initial release of KDE 4.x port

File (click to download) Version Description Filetype Packagetype License Downloads Date Filesize OCS-Install DL
Details
version
2.2.1
updated Jan 09 2013
added Feb 11 2008
downloads today
0
page views today 0