
KCometen4
Source (link to git-repo or to original if based on someone elses unmodified work): Add the source-code for this project on opencode.net
KCometen4 is an OpenGL KDE screensaver. Inside a box is a nifty light show that features lightning and exploding comets. It lets you configure various effects like comet behavior, camera movement, box face images, etc.
10 years ago
Version 1.0.8
* Remove legacy configure script.
* Fix a few compiler warnings and an error that prevented compilation with clang.
10 years ago
Version 1.0.8
* Remove legacy configure script.
* Fix a few compiler warnings and an error that prevented compilation with clang.
yankee495
5 years ago
I posted a fix which did work but doesn't anymore.
I like this screensaver so much I have not only figured out how to fix it but it's much easier.
First:
1. Install scrot (it takes screenshots)
2. Create this simple script and put it wherever you want. Name it whatever you want.
#!/bin/sh
scrot /tmp/ss-kcometen4.png
3. Run that script and make sure the screen shot has been created, you'll need it in the next step. You can put the screen shot in any directory, I used /tmp.
4. Go to the setup for Kcometen4 and click the Background tab. Select file and browse to the screen shot png, not the script. Typing in the path doesn't work here, it just doesn't save it. You must browse to it.
5. Go to System Settings and then Application and System Notifications > Manage Notifications. In the drop down Event Source box select Screen saver.
6. Click on The screen has been locked and check Run Command and browse to your scrot script.
That is it. When the screen locker kicks in it will take a screen shot then Kcometen4 will load that screen shot and use it for the background.
Kcometen4 will run with a blank screen without this which for many may be fine, but if you want it to look like it was intended then this works!
Report
yankee495
5 years ago
Please reply here if you test that. KDE decided that having a screen shot displayed was a security risk. Around here I don't leave bank accounts displayed, ever, so all it can display is junk I'm looking at or doing. Keep that in mind if you often leave your computer with private information on the screen.
Report
yankee495
7 years ago
This is a hack and will be over written by an update to KDE but it is easy and it works so you can just fix it again after an update.
1. Install scrot (it takes screenshots)
2. Make a text file called kscreenlocker_greet and put this in it:
#!/bin/sh
scrot /tmp/ss-kcometen4.png
/usr/lib64/kde4/libexec/kscreenlocker_greet.bin&
Right click it and do properties and check mark executable etc.
3. Go to /lib64/kde4/libexec and rename kscreenlocker_greet to kscreenlocker_greet.bin
This is for a 64 bit system. On 32 bit I think it will be in /lib/kde4/libexec . Whatever the case it will be where ever you find the original kscreenlocker_greet file.
4. Copy your new kscreenlocker_greet script file to /lib64/kde4/libexec or where ever you found the original.
5. Goto Kcometen4 settings and on the background tab select image source "File", and select the file /tmp/ss-kcometen4.png
I had trouble because this file didn't exist and typing it in didn't work, it wouldn't keep the setting. If you let the computer cycle
the screenlocker one time the file will exist and then you can change the setting. I use a Ramdisk for my tmp foler so it is empty at boot.
You can use any folder you want to store the screenshot like your home folder. You change that in this part of the script
Like this, where the script says "scrot /tmp/ss-kcometen4.png", you can make it /where ever you want/anywhere/ss-kcometen4.png
and just set Kcomenten4 to use the image path /where ever you want/anywhere/ss-kcometen4.png
Information:
It takes a screenshot, and then KDE does its thing and blanks the display, displays the login on your screen saver etc.
But then Kcometen4 grabs and displays the screenshot that was just taken, before KDE wiped the screen and displayed the login!!!
You end up with your desktop as your screen saver as intended but you have to hit ESC to exit, and unlock the screen.
KDE 4.10.2 does this no matter what. I don't know how higher versions of KDE do this.
I admit it is a nasty little hack but it works. Until someone comes up with something better it will do for me.
It still displays the mouse pointer too as that is in the KDE code. If an update kills it,
rename the original again and put your script back. They don't update very often.
My cat walks on my keyboard and deletes stuff so locking the screen is a good deal for me!!!
If you don't use a password to login, you just hit ESC, and then click Unlock.
My cat can't do that!
By the way, I've been using Kcometen for my screen saver since 2006 or 2007...way back. Love it!
Report
yankee495
7 years ago
Report
gldickens3
8 years ago
See these bug reports:
https://bugs.kde.org/show_bug.cgi?id=310871
https://bugs.kde.org/show_bug.cgi?id=315442
https://bugs.kde.org/show_bug.cgi?id=316296
It is not clear if the KDE developers are going to fix this or leave it as is. So, is there anyway to modify Kcometen4 so that it works with the cubed screen background for KDE 4.10.x as it did in KDE versions prior to 4.10?
Thanks,
Gordon
Report
jstamp
7 years ago
The option to use the desktop as a background will probably have to go away.
Report
gldickens3
7 years ago
Thanks for the reply!
That's too bad! I really like the desktop background. I hope that you can find a way around this so that users can continue to use the cubed desktop background.
Gordon
Report
gldickens3
7 years ago
Thanks for the reply!
That's too bad! I really like the desktop background. I hope that you can find a way around this so that users can continue to use the cubed desktop background.
Gordon
Report
digigold
8 years ago
Only issue I had was it installed to /usr/local instead of /usr. Solved easiely by creating a symbolic link.
Nice work here!
Report
binyo66
9 years ago
root@freebsd /tmp/kcometen4-1.0.7/build]# make
[ 0%] Built target kcometen4.kss_automoc
Linking CXX executable kcometen4.kss
/usr/bin/ld: warning: libkio.so.6, needed by /usr/local/lib/libkscreensaver.so, may conflict with libkio.so.7
/usr/bin/ld: warning: libkdeui.so.6, needed by /usr/local/lib/libkscreensaver.so, may conflict with libkdeui.so.7
/usr/bin/ld: warning: libkdecore.so.6, needed by /usr/local/lib/libkscreensaver.so, may conflict with libkdecore.so.7
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x1412): In function `main':
: undefined reference to `kScreenSaverMain(int, char**, KScreenSaverInterface&)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x1423): In function `main':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x15fa): In function `main':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0xd5): In function `KCometen4::qt_metacall(QMetaObject::Call, int, void**)':
: undefined reference to `KScreenSaver::qt_metacall(QMetaObject::Call, int, void**)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x132): In function `KCometen4::qt_metacast(char const*)':
: undefined reference to `KScreenSaver::qt_metacast(char const*)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.t._ZN18KCometen4InterfaceD0Ev+0x14): In function `KCometen4Interface::~KCometen4Interface()':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.t._ZN18KCometen4InterfaceD1Ev+0xe): In function `KCometen4Interface::~KCometen4Interface()':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.rodata+0x2c): undefined reference to `KScreenSaver::staticMetaObject'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.r._ZTV9KCometen4+0x1c): undefined reference to `KScreenSaver::event(QEvent*)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.r._ZTI18KCometen4Interface+0x8): undefined reference to `typeinfo for KScreenSaverInterface'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_applicationName'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_description'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_create'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_version'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_setup'
*** Error code 1
Stop in /tmp/kcometen4-1.0.7/build.
*** Error code 1
Stop in /tmp/kcometen4-1.0.7/build.
*** Error code 1
Stop in /tmp/kcometen4-1.0.7/build.
Report
jstamp
9 years ago
It looks like you've installed multiple versions of KDE, and it's causing problems for the linker. Is that the case?
Report
binyo66
9 years ago
[root@freebsd /usr/ports/x11/kde3]# make deinstall
===> Deinstalling for x11/kde3
===> kde not installed, skipping
Report
jstamp
9 years ago
Report
binyo66
9 years ago
Report
jstamp
9 years ago
Report
binyo66
9 years ago
export KDEDIRS=/usrlocal:/usr:/usr/local/kde4
Any clue how to show it in the screensaver list :)
Report
binyo66
9 years ago
Report
binyo66
9 years ago
root@freebsd /tmp/kcometen4-1.0.7/build]# make
[ 0%] Built target kcometen4.kss_automoc
Linking CXX executable kcometen4.kss
/usr/bin/ld: warning: libkio.so.6, needed by /usr/local/lib/libkscreensaver.so, may conflict with libkio.so.7
/usr/bin/ld: warning: libkdeui.so.6, needed by /usr/local/lib/libkscreensaver.so, may conflict with libkdeui.so.7
/usr/bin/ld: warning: libkdecore.so.6, needed by /usr/local/lib/libkscreensaver.so, may conflict with libkdecore.so.7
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x1412): In function `main':
: undefined reference to `kScreenSaverMain(int, char**, KScreenSaverInterface&)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x1423): In function `main':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x15fa): In function `main':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0xd5): In function `KCometen4::qt_metacall(QMetaObject::Call, int, void**)':
: undefined reference to `KScreenSaver::qt_metacall(QMetaObject::Call, int, void**)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x132): In function `KCometen4::qt_metacast(char const*)':
: undefined reference to `KScreenSaver::qt_metacast(char const*)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.t._ZN18KCometen4InterfaceD0Ev+0x14): In function `KCometen4Interface::~KCometen4Interface()':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.t._ZN18KCometen4InterfaceD1Ev+0xe): In function `KCometen4Interface::~KCometen4Interface()':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.rodata+0x2c): undefined reference to `KScreenSaver::staticMetaObject'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.r._ZTV9KCometen4+0x1c): undefined reference to `KScreenSaver::event(QEvent*)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.r._ZTI18KCometen4Interface+0x8): undefined reference to `typeinfo for KScreenSaverInterface'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_applicationName'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_description'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_create'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_version'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_setup'
*** Error code 1
Stop in /tmp/kcometen4-1.0.7/build.
*** Error code 1
Stop in /tmp/kcometen4-1.0.7/build.
*** Error code 1
Stop in /tmp/kcometen4-1.0.7/build.
Report
binyo66
9 years ago
root@freebsd /tmp/kcometen4-1.0.7/build]# make
[ 0%] Built target kcometen4.kss_automoc
Linking CXX executable kcometen4.kss
/usr/bin/ld: warning: libkio.so.6, needed by /usr/local/lib/libkscreensaver.so, may conflict with libkio.so.7
/usr/bin/ld: warning: libkdeui.so.6, needed by /usr/local/lib/libkscreensaver.so, may conflict with libkdeui.so.7
/usr/bin/ld: warning: libkdecore.so.6, needed by /usr/local/lib/libkscreensaver.so, may conflict with libkdecore.so.7
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x1412): In function `main':
: undefined reference to `kScreenSaverMain(int, char**, KScreenSaverInterface&)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x1423): In function `main':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x15fa): In function `main':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0xd5): In function `KCometen4::qt_metacall(QMetaObject::Call, int, void**)':
: undefined reference to `KScreenSaver::qt_metacall(QMetaObject::Call, int, void**)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.text+0x132): In function `KCometen4::qt_metacast(char const*)':
: undefined reference to `KScreenSaver::qt_metacast(char const*)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.t._ZN18KCometen4InterfaceD0Ev+0x14): In function `KCometen4Interface::~KCometen4Interface()':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.t._ZN18KCometen4InterfaceD1Ev+0xe): In function `KCometen4Interface::~KCometen4Interface()':
: undefined reference to `KScreenSaverInterface::~KScreenSaverInterface()'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.rodata+0x2c): undefined reference to `KScreenSaver::staticMetaObject'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.r._ZTV9KCometen4+0x1c): undefined reference to `KScreenSaver::event(QEvent*)'
CMakeFiles/kcometen4.kss.dir/kcometen4.o(.gnu.linkonce.r._ZTI18KCometen4Interface+0x8): undefined reference to `typeinfo for KScreenSaverInterface'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_applicationName'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_description'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_create'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_version'
/usr/local/lib/libkscreensaver.so: undefined reference to `kss_setup'
*** Error code 1
Stop in /tmp/kcometen4-1.0.7/build.
*** Error code 1
Stop in /tmp/kcometen4-1.0.7/build.
*** Error code 1
Stop in /tmp/kcometen4-1.0.7/build.
Report
mfillpot
10 years ago
As a note, if you wish to install this screensaver on slackware checkout http://slackbuilds.org/result/?search=kcometen4&sv=
Report
jstamp
10 years ago
Thanks for the slackbuild.
Report
ThAnderson
10 years ago
A workaround is helpful, but if it is a bug in the Intel drivers, it should be fixed there. :)
Report
jstamp
10 years ago
I think the Intel driver--or maybe it was mesa--has been fixed since then, but I kept that workaround in kcometen4 in case people were still using whichever version was causing the problem. It didn't affect the appearance anyway.
I'm not sure what problem mfillpot was dealing with. I used to see other problems with the Intel driver but they've since been fixed.
Report
avoulk
10 years ago
While in test mode everything is ok, in real the actual background shown is just black. In a previous question you supposed a change in line 135 in kglcometen4.cpp would do the job but it did not.
After a bit of network research, it seems that the problem actually lies in line 83 when you grab the desktop screenshot (it mainly has to do with desktop effects and transparency i think, that QPixmap::grabWindow returns a black image). Sadly I am not sure of how fix this (and provide you with a proper patch) but i hope you can :)
Hope i helped you with this "bug report"! Many many thanks for the porting and all your effort!!
Report
avoulk
10 years ago
Report