Reviving an Open-Source Masterpiece: KCometen4 Standalone on Wayland & Tumbleweed! KCometen6

Who remembers Kcometen4? It’s back!

It’s running using Intel ARC hardware acceleration in 4K with a 16:9 aspect ratio using Wayland on Tumbleweed at 60 FPS. The cube sides (walls) are a live screenshot of your desktop taken at startup, or any image you select in the GUI configuration panel and you’re inside the cube (the camera). It rotates and twists while lightning bolts and comets fly around and explode. Both caps, the ceiling and the floor, are independent and configurable to use separate images in the GUI.

There’s been many improvements since I uploaded the video on Saturday 9/26/2026. It’s not killing comets as soon as they spawn so there’s a lot more of them.

To-do list for today: Make it use a systemd timer and add an idle time slider to the GUI to make it independent from desktop Power Management. Right now it’s running through Power management “Run After” a set idle time.

You can see a video of it running here:

Reviving an Open-Source Masterpiece: KCometen4 Standalone on Wayland & Tumbleweed! KCometen6

Operating System: openSUSE Tumbleweed 20260821
KDE Plasma Version: 6.7.4
KDE Frameworks Version: 6.29.0
Qt Version: 6.11.2
Kernel Version: 7.1.8-1-default (64-bit)
Graphics Platform: Wayland
Processors: 32 × AMD Ryzen 9 5950X 16-Core Processor
Memory: 64 GiB of RAM (62.7 GiB usable)
Graphics Processor: Intel Arc A750

This is NOT TRUE. The link gives a video on CachOS, not Tumbleweed. Please do not fool people like that. I don’t give a $whatever about CachyOS.
Furthermore there is no TW package.

Agreed … I wonder if @jsmith64 in here is user “yankee” over at CatchyOS, who also posted this same thread two days ago …

Of course, that thread has ZERO responses (not surprised < yawn> ).

Besides that screensavers are technically no longer needed since over a decade. They only waste energy.

Better let the monitor automatically go off…as it is standard since decades.

But really strange is, that the post claims that this ancient software is back. But neither in the CachyOS thread or here is any link to the code source. There isn’t even a project with this name on github or OBS. So wondering what the purpose of this “announcement” is when the revived ancient software is not even available for anybody.

2 Likes

Maybe a scam to click the YouTube link.

1 Like

It is absolutely true! I built it on CachyOS and today I compiled it on Tumbleweed. The video is made in CachyOS, but the screenshot is it running live on Tumbleweed today!

You’re all insulting me and calling me a liar! Shame on you!
And…just because everyone did away with scscreensavers who says you can’t use one for a couple of minutes to show off your desktop? What happened to that Linux freedom and the spirit of open source software? Why do you think I used “Take Control” for the wallpaper in the video?

Do you see my user name and the one on Youtube? If that’s not my Youtube then why do I have control of the account? See screen shot.

And there isn’t a Tumbleweed package because I have not released it to anyone yet. There’s isn’t a package for a lot of things in Tumbleweed, but you can build it if you can find the source code.

CachyOS is easier to build on. I also posted it on the Mageia forum after building it in Mageia 10.

The source list, junk and all. You should’ve seen the black comets.
After all of this work I get called a liar. Thanks a lot.

bezier.cpp
bezier.h
build
CMakeLists.09-28-2026.txt
CMakeLists.txt
CMakeLists.txt~
cometen3.09-27-2026.cpp
cometen3.cpp
cometen3.cpp~
cometen3.h
cometenmath.cpp
cometenmath.h
cometenscene.cpp
cometenscene.cpp~
cometenscene.cpp-almost-back
cometenscene.cppnew-backup.txt
cometenscene.cpp-new-works-good.txt
cometenscene.cpp-new-works-good.txt~
cometenscene.cpp-new-work.txt
cometenscene.cpp-new-work.txt~
cometenscene.cpp-translated.txt
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Translated because Top, bottom, left, right, front, back was all in German).

cometenscene.cpp-was-working.txt
cometenscene.cpp-works-black-comets.bak.txt
cometenscene.cpp—works.txt
cometenscene.cppXXXX
cometenscene.h
comet.h
curvecomet.cpp
curvecomet.h
decal.cpp
decal.h
explosion.cpp
explosion.h
files.txt
global.h
global.h~
glow.cpp
glow.h
kcometen4.cpp
kcometen4.desktop
kcometen4.h
kcometen4.kss.1
kcometen4ui.ui
kglcometen4.cpp
kglcometen4.h
lightmap.png
lightning.cpp
lightning.h
particle.png
particlesystem.cpp
particlesystem.h
pcomet.cpp
pcomet.cpp~
pcomet.cpp-stock.txt
pcomet.h
rotatecomet.cpp
rotatecomet.cpp~
rotatecomet.cpp-short-tails-but-good.txt
rotatecomet.h
settings.cpp
settings.h
settings.h~
settings.h-cometcountvalue.txt
standalone_main.cpp
standalone_main.cpp~
standalone_main.cpp-backup
standalone_main.cpp-backup-2
standalone_main.cpp-backup3
standalone_main.cpp-before-fps-fix.txt
standalone_main.cpp-before-patch-checks.txt
standalone_main.cpp–must-save-bak
standalone_main.cpp–must-save-bak~
standalone_main.cpp-perfect-before-mipmaps-toggle
standalone_main.cpp-working-default-caps.txt
standalone_main.cpp-working-on-real-good.txt
standalone_main.cppXXXgood work on view
stb_image.h
vec.cpp
vec.h

The settings.conf file:

KCometen4 Standalone Portable Configuration Profile

cometCount = 150
createInterval = 0.01
sizeScale = 2.0
timeScale = 1.0
bgMode = screenshot
customBgFile = /home/john/code/kcometen6-1.0.0/src/build/lightening.jpg
customCeilingFile = /home/john/code/kcometen6-1.0.0/src/build/ceiling_1920x1080.png
customFloorFile = /home/john/code/kcometen6-1.0.0/src/build/floor_1920x1080.png
rotateComet = true
splitComet = true
curveComet = true
blitz = true
usePointSprites = true
colorMode = 3
maxFps = 60
mipmaps = true

The screenshot was Tumbleweed today. It’s running the same on Tumblewed as it does on CachyOS. I wasn’t set up for recording in Tumbleweed.

This should do it. See, the configuration panel says custom cube wallpaper. I’ll post the code somewhere when it is completely done. I’m still not happy with the number of comets. The original let most die out before spawning more, and I think it’s still killing a few too early.

I haven’t added the option to make it rotate faster, nor the systemd timer in the GUI. The plan is to have it spit out the systemd unit in /.config and have a slider to set the idle time. Some would call it good enough, but watching this thing spin for weeks will make you dizzy enough to fall out of your chair…so I took a break and shared where I was at.

This video is live on Tumbleweed today, at 30FPS and it’s short.

Video

Just a reminder to everyone here to keep it friendly. If you have a problem with a post, use the ‘flag post’ button and report it and let staff deal with it.

Engaging in personal attacks is against the TOS and the openSUSE Code of Conduct.

It would be in everyone’s best interest to give folks the benefit of the doubt, and if there is a question, politely ask about it rather than making accusations.

As I said, just a friendly reminder. :slight_smile:

3 Likes

I also fixed the “free space bug” in Dolphin’s status bar. I hope they get it merged. When using Fusion, MS Windows 9x or QtCurve application styles, the text on the free space button was crowded and unreadable.

Since I like QtCurve I had dug through the QtCurve code for a long, long time, trying to fix the free space button. I finally realized it was somewhere else and Dolphin was the place to start looking. I found it and it was an easy fix. They broke it when they added the kcapacitybar widget to the status bar.

Free Disk Space button margin too wide and cuts off fonts

And I spotted the KIO bug in kcoredirlister.cpp right off because I was working on icons at the time They have many duplicate file names, but different paths. I thought my program was not putting icons into the theme, but it was. Dolphin’s search was broken when I installed the Frameworks 6.29 update and was still broken in 6.30.

Your’s is still broken, but Meven has merged a fix that’ll come in the next Frameworks update.

Regression: Simple search fails in Dolphin. It only finds a few of the files

My entire desktop is symbolic icon free with many custom icons. I don’t want monochrome icons on a 4K color display. Oh, brightness in the tray is still symbolic because I got interrupted by the KIO bug.

Linux is about desktop freedom, correct? With this program you can copy the Oxygen icon theme or any other theme into your /.local/share/icons and start building a custom icon theme. Mine is a mix of Oxygen, Crystal and custom icons. When CoolerControl went to their symbolic wrench icon is when I decided that I needed a better way to deploy icons into the theme. That’s the icon for IconDeployer. It’s Tux juggling icons.

Please, don’t read my comments as such. If you had written the link title as “…CachyOS”, I am working on a TW version, see build.o.o/where_ever, and will come up with a video later, no one would have argued about that. At least not me.

Reviving an Open-Source Masterpiece: KCometen4 Standalone on Wayland & Tumbleweed! KCometen6

This video is titled that way because it was made on Tumbleweed. In fact, it’s built live with a single command and demonstrated in the video.

I updated the Configuration Panel to have an Enable Idle Screensaver Mode checkbox. Checking it and hitting apply causes kcometen6_idle to start which uses ext_idle_notifier_v1 to monitor system idle and launch the main program after a set amount of time, making it act as a screensaver. Keyboard or mouse activity kills the main program, but not the idle monitor. It’ll restart if you stay idle again.

Unchecking it and hitting apply kills the idle monitor as shown in the new video. It’s totally dead at that point with no garbage strewn throughout your files. It’s also completely dead after a reboot. A Systemd timer was a no go here. The slider adjusts the idle timer.

I’ve been busy fixing bugs and still left a big one…the text on the floor image is reversed. I’ll have to flip it in main. There’s more comets than in the first video, and I still think some are being killed too early.

Here’s the new KCometen6 Configuration Panel with TimeScale and I see that I need to move Size Scale up with comet count which will put the two time adjustments together. I was busy working on the idle timer for a long time, wasting time on systemd.

There’s a single script to build standalone_main.cpp and kcometen6_idle.cpp. It also copies all of the the images, idle and main executables, to a folder called KCometen6, after the compiling is done. That folder can be placed anywhere because main, idle and the config UI are all run directory aware, making it portable. There’s a script in that same folder to add it to your menu. It is run directory aware, too, so do not run it from anywhere but the KCometen6 folder.

You only need the config GUI to use it as a screensaver. All you have to do is check the enable screensaver mode and it’ll run on its own from there. I tested screen locking, suspend and resuming. Everything is working great. Again, everything is dead after a reboot.

The Apply And Save button does not close the config panel. Cancel And Exit closes it. If you’ve already made changes and hit Apply then they are applied until you change the slider, checkbox or dropdown, then hit apply again. Cancel is to exit without saving any changes that you did not apply.

I left the panel open for testing, but it’s staying that way because you can drop a shortcut on your KDE panel to launch it and use ESC to kill it. This way you can play with all of the settings without having to reopen the config panel, but you do have to kill kcometen6_run with ESC and restart it, however you want to. I should probably add a launch button for main to the config UI now that I think about it. I used a shortcut on my KDE panel when testing.

You can set your screen to lock after 5 minutes and system suspend after 8 or 10, whatever you use. The standalone timer allows you to set the screensaver for three minutes giving you two minuets to show off your desktop with a live screenshot or any image you select in the GUI. Those are the walls, live or custom.

I went though it pretty quick in the video, but you can pause and look.

According to the link above, the idle monitor should work with almost anything. Of course, I’m not testing all of those. When will I release it? As soon as I get a few things worked out. The flipped floor image with backwards text, the GUI items put in order and probably add that launch button. And clean all of my junk out of it. There’s a ton of backups and notes from testing and changing things, making backups after each major step.

Video:
Reviving an Open-Source Masterpiece: KCometen4 Standalone on Wayland & Tumbleweed! KCometen6

Compositor Support
Cage 0.3.0, COSMIC 1.0.0~beta.8, GameScope 3.15.14, Hyprland 0.52.1, Jay 1.14.0, KWin 6.7, Labwc 0.20.2, Louvre 2.14.1, Mir 2.26, Muffin 6.7.4, Mutter 51, niri 26.04, phoc 0.55, river 0.3.13, Sway 1.11,
Treeland 0.8.0, Wayfire 0.9.0 and Weston 15.0.1.

I just added “Make Portable” to the GUI. I gathers up the files need to run the program and puts them in a folder to be used on a USB stick, given to a friend or whatever. If you download the source you automatically get a portable folder, but not an install. With an install you get an install, but not a portable folder, so I added that to the GUI for people who use the install method.

I have a PKGBUILD for Arch based distros, and I have never made a spec file, so if anyone wants to help with that I’d appreciate it.

It is also aware if it is running from /usr/bin and if so, it uses settings.conf from /.config, if not, it uses settings.conf from the folder it was launched from, making it portable.

That is so wrong. No one should have a /.config, not on any linux distro.

"Haha, good catch, knurpht! You’re completely right about syntax—I missed typing the tilde ~ shortcut in my text post.

To be absolutely clear: The engine does NOT use root /.config.
The dual-aware C++ and Python code dynamically resolves the standard XDG environment path natively using ~/.config/kcometen6/settings.conf (or /home/username/.config/…) when installed system-wide.

These are the same thing. Even for root which is just another user. ~/ for root is /root/.config, These are described in /etc/passwd:

knurpht@Lenovo-P16:~> grep -E "root|knurpht" /etc/passwd
root:x:0:0:root:/root:/bin/bash
knurpht:x:1001:100:Knurpht:/home/knurpht:/bin/bash
knurpht@Lenovo-P16:~> 

"That’s exactly what I said in my previous post, glad we are in agreement that the configuration resolves correctly to the user’s home path.

std::string locate_active_config() {
    std::string run_dir = get_binary_runtime_directory();

    // If installed globally system-wide, read custom user parameters from ~/.config profile
    if (run_dir.rfind("/usr", 0) == 0) {
        const char* home = std::getenv("HOME");
        if (home != nullptr) {
            std::string user_conf = std::string(home) + "/.config/kcometen6/settings.conf";
            if (file_exists_and_readable(user_conf)) return user_conf;
        }
        return "/usr/share/kcometen6/settings.conf";
    }

We are not: the “or” should have been “i.e.” or “that is”. I don’t want to nitpick, but messaging about your project should not be multi-interpretable.
Some other considerations: You call the app KCometen6, which suggests that it is a rewrite in Qt6/KF6, and your screenshots clearly show Qt4 theming. including Win7 windowdecorations.

Mind, I get your enthusiasm, but currently the project and messaging about it raises too many unnecessary questions. All this makes that I have not been attracted to such an extent that I’d give it a shot in a VM. But maybe that is just me.

Using “or” is grammatically proper in this sentence because it is being used to provide an alternative, clearer explanation of the exact same location.

The naming convention follows the fact that this is a standalone C++ application using modern PyQt6 for its multi-tab configuration interface, and the code speaks for itself. It has nothing to do with my window decoration choice.

And it’s just you. The traffic metrics and number of Git clones from openSUSE users show that plenty of users are enjoying testing Kcometen6.

The account names of users who cloned a github repo are not shown but only plain numbers (in opposite to forks). So how do you know?

1 Like

It is grammatically correct indeed. I consulted my Cambridge English teacher, and she argued it should have been or, to make clear it’s not another place, rather an alternative phrasing. But, let’s leave this for what it is.