Re: qtpanel - a project to create useful and beautiful panel in Qt

I've started tray applet implementation, but it wasn't as easy as I've expected. It is in the code (trayapplet.h, trayapplet.cpp), but disabled for now. There are some resizing issues with QX11EmbedContainer, and there are probably visual mismatch issues, because nothing appears in case when window background is set to translucent. If there are people here with knowledge in this area, I would appreciate help.

Re: qtpanel - a project to create useful and beautiful panel in Qt

Support for vertical panels is planned. In fact, panel positioning code is already aware of vertical panels.My time is quite limited, unfortunately. I need more hands. Developers with C++ knowledge are welcome to join.

Re: qtpanel - a project to create useful and beautiful panel in Qt

Re: qtpanel - a project to create useful and beautiful panel in Qt

This looks extremely promising, love the speed of menu rendering (fastest menu I've ever seen) and the "glow" mouse-over effects However it's still kinda buggy, it starts with some wooden-looking theme and then it becomes black when I first click on it...

Re: qtpanel - a project to create useful and beautiful panel in Qt

karabaja4 wrote:

This looks extremely promising, love the speed of menu rendering (fastest menu I've ever seen) and the "glow" mouse-over effects However it's still kinda buggy, it starts with some wooden-looking theme and then it becomes black when I first click on it...

Can you provide some more details? It's working fine on my two test machines.

on qtpanel's window. Maybe xmonad expects it to be only dock. I'm not sure what's the right way to get rid of that "NORMAL" hint, since it's unconditionally added by Qt.xmonad is actually not complying to NETWM spec, it's probably not a good idea to run qtpanel with it, since things will be most likely broken (the first and obvious thing - there is no _NET_CLIENT_LIST property on root window, and that means no taskbar).P.S. I'm not sure how taskbar worked in your case. At least in default config, xmonad doesn't set _NET_CLIENT_LIST property.

As you can see the method is called by the updateActiveWindow method in DockAplet class. After removing the call of getWindowPropertyWindow (line 345, dockapplet.cpp) the program starts without any problems. I am not an C++ expert* but it seems you do not create an instance of X11Support, at least I could not find any.

Compiled on Arch Linux x86_64, latest source code from git repo (commit f5b54e1df6a2e4e5bf60e346c6d8c8b2b895b9ae)* from time to time I try to learn it…

Re: qtpanel - a project to create useful and beautiful panel in Qt

flamelab wrote:

ΝICE job !!

Could you add an option (right click?) to resize the panel ?

It will be even better, as soon as I get another time chunk to spend on it. Before I start adding options, I need to decide, what the configuration system should be. Two alternatives are ini files and dconf. dconf has some cool features like settings inheritance (system config, user config), settings change notifications, quick binary format, and it's also used by new GNOME, which will allow to integrate better with GNOME environment (for example, by reusing some common settings like icon theme, fonts, etc.). But there is no dconf bindings for Qt, and binary format for configs is somewhat scary despite the fact it's fast. I would like to hear some opinions on this.

Re: qtpanel - a project to create useful and beautiful panel in Qt

Sikon wrote:

As you can see the method is called by the updateActiveWindow method in DockAplet class. After removing the call of getWindowPropertyWindow (line 345, dockapplet.cpp) the program starts without any problems. I am not an C++ expert* but it seems you do not create an instance of X11Support, at least I could not find any.

X11Support object instance is created in panelapplication.cpp, line 31.I fixed this crash in git. You got this, because there was no _NET_ACTIVE_WINDOW property on root window, which means your window manager is not NETWM compliant. That property specifies what window currently has focus.But of course, no excuse for crashes.

on qtpanel's window. Maybe xmonad expects it to be only dock. I'm not sure what's the right way to get rid of that "NORMAL" hint, since it's unconditionally added by Qt.

You should be okay. The EWMH spec says that the first type should be considered primary.

Mad Fish wrote:

xmonad is actually not complying to NETWM spec, it's probably not a good idea to run qtpanel with it, since things will be most likely broken (the first and obvious thing - there is no _NET_CLIENT_LIST property on root window, and that means no taskbar).P.S. I'm not sure how taskbar worked in your case. At least in default config, xmonad doesn't set _NET_CLIENT_LIST property.

Indeed, XMonad does not comply with EWMH out of the box. You need to add things to your config to get XMonad to cooperate.

In either case, XMonad should still be positioning your panel correctly. Have you set struts?

I haven't tried your panel yet as I don't use one, but I do use XMonad. When I get some free time, I'll see what I can do for other XMonad users out there.

Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.

Re: qtpanel - a project to create useful and beautiful panel in Qt

Wow this look promising i have one suggestion with scroll button when move up to show window and when scroll down to minimize window...

At least one another way of using mouse wheel exists - to switch between windows, when scrolling on top of taskbar. This will be configurable, I just need to get configuration system in place first.

BurntSushi wrote:

In either case, XMonad should still be positioning your panel correctly. Have you set struts?I haven't tried your panel yet as I don't use one, but I do use XMonad. When I get some free time, I'll see what I can do for other XMonad users out there.

Struts are set. It is working correctly at least in Xfce WM, KWin and Openbox. I want my panel to work well with as many configurations possible, but I don't have that much time to dig into every possible WM, so I would definitely appreciate your help with XMonad.

P.S. (XMonad) Over 750 megabytes of dependencies for a minimal WM. Oh my...

Re: qtpanel - a project to create useful and beautiful panel in Qt

Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.

Re: qtpanel - a project to create useful and beautiful panel in Qt

Mad Fish wrote:

…Before I start adding options, I need to decide, what the configuration system should be. Two alternatives are ini files and dconf. dconf has some cool features like settings inheritance (system config, user config), settings change notifications, quick binary format, and it's also used by new GNOME, which will allow to integrate better with GNOME environment (for example, by reusing some common settings like icon theme, fonts, etc.). But there is no dconf bindings for Qt, and binary format for configs is somewhat scary despite the fact it's fast. I would like to hear some opinions on this.

In my opinion you should really avoid using things like dconf or any other Desktop-Environment specific libraries. Of course they offer all the cool stuff you mentioned, but why not using something easy editable (by a human ) and more portable? As Shaika-Dzari noted, Qt even offers a very easy way to read and write settings files.

Re: qtpanel - a project to create useful and beautiful panel in Qt

Sikon wrote:

In my opinion you should really avoid using things like dconf or any other Desktop-Environment specific libraries. Of course they offer all the cool stuff you mentioned, but why not using something easy editable (by a human ) and more portable? As Shaika-Dzari noted, Qt even offers a very easy way to read and write settings files.

dconf isn't really desktop specific. It only needs dbus and glib, and is designed to be DE-neutral (unlike gconf, which was not).Also, I need to store hierarchical configuration, like this: