You are not logged in.

#51 2011-05-29 08:30:21

MurdersLastCrow
Member
Registered: 2010-10-04
Posts: 74

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

I really like this so far- I can see it going places as a general-purpose panel. I've always wanted something similar to Xfce built on Qt, since I love Qt and KDE applications, but it's not exactly fun to use them anywhere but KDE itself. There's no 'lighter' way to get full integration with KDE applications. Which is, of course, not at all part of this discussion, but one can dream. T3T

So far it's usable, easy to look at, and generally good enough as a basic panel. The effects are a great addition and something I fully welcome, and I can see the configuration going somewhere as well. All in all, I'm quite impressed. It gives me the urge to start working on a notifier to catch KDE notifications so they don't display in an ugly box, and maybe even a light window manager that could use Kwin themes. Now that would be sick. yikes

But seriously, good job. Keep up the good work- I'll totally use this panel in place of the others in the future. Let's get this thing packaged for a wider audience, neh?

Offline

#52 2011-06-11 02:10:36

George.Harmony
Member
From: Off The Wire
Registered: 2010-04-30
Posts: 97

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

Just a quick note to say thanks for a very promising panel. I will keep a close eye on this as features are added. It looks great and works perfectly with Pekwm on my system at least. At this point in time though it does not fit my needs. Once I can configure it to be smaller, and auto hide on the left side of my screen I will be back.

Thanks again for all your hard work.


Desktop:  Compiz Stand Alone w/ Cairo Dock.
Laptop:    Pekwm w/ Tint2
Jukebox:   MPD w/ cli
Gateway: Vuurmuur w/dialog

Offline

#53 2011-06-21 11:46:34

Mad Fish
Member
Registered: 2009-09-22
Posts: 295

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

Status update: improved mouse interaction with dock (it will handle a click correctly, if you slightly moved the mouse between button down and button up events), and _NET_WM_ICON_GEOMETRY hints are now set up correctly.

P.S. This really needs more developers. I will not have much motivation alone, since it's already doing what I wanted. Maybe it would be a good idea to tell about project to a wider audience, I'm just not sure where.

Offline

#54 2011-07-04 07:46:11

merez
Member
Registered: 2011-07-04
Posts: 1

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

Hi.

Thanks for panel. I'm using it on Debian and its work pretty nice.

If you want more developers and tell about project to a wider audience, then probably http://qt-apps.org/ will be the best choice.

Last edited by merez (2011-07-04 08:50:13)

Offline

#55 2011-09-01 06:06:27

zester
Member
From: Wilkes Barre Pa
Registered: 2011-08-13
Posts: 156
Website

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

Havent had much time to look at your xdg class but depending on how your doing it this might be easyer.

    QSettings settings("/home/steven/Desktop/dolphin.desktop", QSettings::IniFormat);
    settings.beginGroup("Desktop Entry");
        qDebug() << settings.value("Name").toString();
        qDebug() << settings.value("Exec").toString();
        qDebug() << settings.value("Icon").toString();
        qDebug() << settings.value("Type").toString();
        qDebug() << settings.value("Terminal").toString();
        qDebug() << settings.value("MimeType").toString();
    settings.endGroup();

This is the output

"Dolphin"
"dolphin %i -caption %c%u"
"system-file-manager"
"Application"
"false"
"inode/directory"

Not sure if you know about QFreeDesktopMime http://qt-apps.org/content/show.php/QFr … tent=86454

You can use this class for your Pager
The QxtScreen class provides access to screen settings.
http://libqxt.bitbucket.org/doc/tip/qxtscreen.html

This one is for a taskbar
The QxtWindowSystem class provides means for accessing native windows.
http://libqxt.bitbucket.org/doc/tip/qxt … ystem.html

There part of Nokias http://dev.libqxt.org/libqxt/wiki/Home library

And not sure if you seen my last post in my thread but.

You can add this for external stylesheets instead of having everything
hard coded.

QFile file("/root/.qtpanel/style.qss");  <----- Just replace the hard coded path with a path variable
file.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(file.readAll());
setStyleSheet(styleSheet);

Just letting you know because it might make things easyer for yah. wink

Keep up the good work... Zester

Last edited by zester (2011-09-01 06:07:02)

Offline

#56 2011-10-10 18:28:47

Mad Fish
Member
Registered: 2009-09-22
Posts: 295

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

Fixed a problem with tray icons of wrong size.

Tried to implement support for non-composited tray icons (legacy, but still used e.g. in wine), but that didn't go well. Is there someone with experience to help with that?

Offline

#57 2011-12-10 21:48:56

Mad Fish
Member
Registered: 2009-09-22
Posts: 295

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

Few more improvements and polish just landed. See git log for details.
Also, added configuration option for top/bottom panel position.

Offline

#58 2012-05-08 23:15:19

Thrall
Member
Registered: 2012-04-24
Posts: 15

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

Firstly, thanks for a great little panel!

However, I did have an issue with _NET_WM_STRUT_PARTIAL on a multihead setup:
The panel is on monitor 1, at the bottom, but monitor 2 is lower than monitor 1, meaning the bottom of the overall multihead "screen" is not the same as the bottom of monitor 1. The result is that the strut hint covers an area below monitor 1, at the bottom of the "screen", not the area covered by the panel at the bottom of the monitor.

I bodged it manually for my setup, but it would be good to take this into account automatically when you have time to code it.

Also, I made this modification which some people might find useful (middle click on windows in taskbar to close them):

diff --git a/dockapplet.cpp b/dockapplet.cpp
index 5d57281..4ea9ca0 100644
--- a/dockapplet.cpp
+++ b/dockapplet.cpp
@@ -26,7 +26,7 @@ DockItem::DockItem(DockApplet* dockApplet)
 
 	setParentItem(m_dockApplet);
 	setAcceptsHoverEvents(true);
-	setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton);
+	setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton | Qt::MiddleButton);
 
 	m_textItem = new TextGraphicsItem(this);
 	m_textItem->setColor(Qt::white);
@@ -242,6 +242,11 @@ void DockItem::mouseReleaseEvent(QGraphicsSceneMouseEvent* event)
 			menu.addAction(QIcon::fromTheme("window-close"), "Close", this, SLOT(close()));
 			menu.exec(event->screenPos());
 		}
+		
+		if(event->button() == Qt::MiddleButton && !m_dragging)
+		{
+			this->close();
+		}
 	}
 }

Offline

#59 2012-05-09 19:28:41

Mad Fish
Member
Registered: 2009-09-22
Posts: 295

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

Thrall wrote:

However, I did have an issue with _NET_WM_STRUT_PARTIAL on a multihead setup:
The panel is on monitor 1, at the bottom, but monitor 2 is lower than monitor 1, meaning the bottom of the overall multihead "screen" is not the same as the bottom of monitor 1. The result is that the strut hint covers an area below monitor 1, at the bottom of the "screen", not the area covered by the panel at the bottom of the monitor.

I have a straightforward dual-display configuration with equal sizes, so I need your help to try this diff:

diff --git a/panelwindow.cpp b/panelwindow.cpp
index f400b0a..b76e288 100644
--- a/panelwindow.cpp
+++ b/panelwindow.cpp
@@ -224,12 +224,12 @@ void PanelWindow::updatePosition()
 		switch(m_horizontalAnchor)
 		{
 		case Min:
-			values[0] = width();
+			values[0] = x + width();
 			values[4] = y;
 			values[5] = y + height();
 			break;
 		case Max:
-			values[1] = width();
+			values[1] = QApplication::desktop()->width() - x;
 			values[6] = y;
 			values[7] = y + height();
 			break;
@@ -239,12 +239,12 @@ void PanelWindow::updatePosition()
 		switch(m_verticalAnchor)
 		{
 		case Min:
-			values[2] = height();
+			values[2] = y + height();
 			values[8] = x;
 			values[9] = x + width();
 			break;
 		case Max:
-			values[3] = height();
+			values[3] = QApplication::desktop()->height() - y;
 			values[10] = x;
 			values[11] = x + width();
 			break;

If it works well for your case, I'm going to submit it.

Offline

#60 2012-05-09 23:01:25

Thrall
Member
Registered: 2012-04-24
Posts: 15

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

Mad Fish wrote:

I have a straightforward dual-display configuration with equal sizes, so I need your help to try this diff:
...
If it works well for your case, I'm going to submit it.

Seems to work pretty well. At least, I can't find any fault with its behaviour. Awesomesauce! Thanks!

Offline

#61 2012-05-10 15:37:24

Mad Fish
Member
Registered: 2009-09-22
Posts: 295

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

Thrall wrote:

Seems to work pretty well.

Good. The change is now pushed to public repo.

Offline

#62 2012-06-10 13:06:19

hsngrms
Member
From: Turkey
Registered: 2012-03-06
Posts: 41
Website

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

Great work @Mad Fish. Thank you for beautiful and useful panel. I think, it's better than lxpanel, pypanel, fbpanel etc.

tZTg1Zg

Last edited by hsngrms (2012-06-10 13:11:24)

Offline

#63 2012-11-27 13:27:10

totte
Member
Registered: 2011-08-22
Posts: 64

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

Has anyone managed to get this working together with XMonad? I've got both XMonad.Hooks.EwmhDesktops and XMonad.Hooks.ManageDocks enabled in ~/.xmonad/xmonad.hs:

import XMonad
import XMonad.Actions.CycleWS
import XMonad.Actions.UpdatePointer
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
import XMonad.Layout.FixedColumn
import XMonad.Layout.LimitWindows
import XMonad.Layout.Magnifier
import XMonad.Layout.NoBorders
import XMonad.Layout.Renamed
import XMonad.Layout.SimplestFloat
import XMonad.Prompt
import XMonad.Prompt.Shell
import XMonad.Prompt.Window
import System.Exit
import qualified XMonad.StackSet as W
import qualified Data.Map as M

myFont = "xft:Droid Sans:style=Bold:size=16"
mySmallerFont = "xft:Droid Sans:style=Bold:size=10"
myWhiteColor = "#ffffff"
myLightGreyColor = "#aaaaaa"
myGreyColor = "#646464"
myDarkGreyColor = "#323232"
myBlackColor = "#000000"
myBlueColor = "#2c72c7"
myRedColor = "#e20800"
myBorderWidth = 2
myTerminal = "konsole"
myBar = "xmobar"
myWorkspaces = ["ZSH","DEV","NET","SYS"]
myModMask = mod4Mask
myAltMask = mod1Mask
myLogHook = updatePointer (Relative 0.5 0.5)

myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
    [
        ((modm, xK_Escape), spawn "slock"),
        ((modm .|. shiftMask, xK_Escape), io (exitWith ExitSuccess)),
        ((modm, xK_F1), spawn "konqueror"),
        ((modm, xK_F2), spawn "qtfm"),
        ((modm, xK_F3), spawn "gwenview"),
        ((modm, xK_F4), spawn "qtcreator"),
        ((modm, xK_F5), spawn "kdbg"),
        ((modm, xK_F6), spawn "kontact"),
        ((modm, xK_F7), spawn "konversation"),
        ((modm, xK_F8), spawn "opera"),
        ((modm, xK_F9), spawn "transmission-qt"),
        ((modm, xK_F10), spawn "qmpdclient"),
        ((modm, xK_F11), spawn "ksysguard"),
        ((modm, xK_F12), spawn "systemsettings"),
        ((modm, xK_r), spawn "xmonad --restart"),
        ((modm, xK_Return), spawn $ XMonad.terminal conf),
        ((modm .|. shiftMask, xK_Return), spawn "kate"),
        ((modm, xK_n), prevWS),
        ((modm .|. shiftMask, xK_n), shiftToPrev >> prevWS),
        ((modm, xK_e), windows W.focusDown),
        ((modm, xK_i), windows W.focusUp),
        ((modm, xK_o), nextWS),
        ((modm .|. shiftMask, xK_o), shiftToNext >> nextWS),
        ((modm, xK_k), kill),
        ((modm, xK_m), windows W.swapMaster),
        ((modm, xK_comma), sendMessage Shrink),
        ((modm, xK_period), sendMessage Expand),
        ((0, 0x1008FF11), spawn "amixer set Master 2-"),
        ((0, 0x1008FF12), spawn "amixer set Master toggle"),
        ((0, 0x1008FF13), spawn "amixer set Master 2+"),
        ((modm, xK_s), spawn "scrot '%Y-%m-%d_$wx$h.png' -t 10 -e 'mv --backup=numbered {$f,$m} ~/pictures/screenshots/'"),
        ((modm, xK_space), shellPrompt myXPConfig),
        ((modm .|. myAltMask, xK_space), windowPromptGoto myXPConfig)
    ]

-- Mouse keybindings
myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
    [
        ((modm, button1), (\w -> focus w >> mouseMoveWindow w >> windows W.shiftMaster)),
        ((modm, button2), (\w -> focus w >> mouseResizeWindow w >> windows W.shiftMaster)),
        ((modm, button3), windows . W.sink)
    ]

myFull = noBorders Full
myVertical = limitWindows 3 $ magnifiercz' 1.4 $ FixedColumn 1 20 80 10
myHorizontal = limitWindows 3 $ magnifiercz' 1.4 $ Mirror $ Tall nmaster delta ratio
    where
        nmaster = 1
        delta   = 4/100
        ratio   = 80/100
myFloat = simplestFloat
myLayout =
    avoidStruts $
    smartBorders $
            renamed [Replace "Full"] myFull ||| renamed [Replace "Vertical"] myVertical ||| renamed [Replace "Horizontal"] myHorizontal ||| renamed [Replace "Float"] myFloat

myManageHook = manageDocks <+> composeAll
    [
        className =? "kontact" --> doShift "NET",
        className =? "konversation" --> doShift "NET",
        className =? "konqueror" --> doShift "NET",
        className =? "qmpdclient" --> doShift "ETC",
        className =? "qtcreator" --> doShift "VIM",
        className =? "transmission-qt" --> doShift "NET",
        className =? "xmessage" --> doCenterFloat
    ]

myPP = xmobarPP
    {
        ppCurrent = xmobarColor myWhiteColor "",
        ppVisible = xmobarColor myBlueColor "",
        ppHidden = xmobarColor myGreyColor "",
        ppHiddenNoWindows = xmobarColor myDarkGreyColor "",
        ppUrgent = xmobarColor myRedColor "",
        ppTitle = xmobarColor myWhiteColor "" . shorten 86,
        ppLayout = xmobarColor myLightGreyColor "",
        ppSep = " » ",
        ppWsSep = " "
    }

myXPConfig = defaultXPConfig
    {
        font = myFont,
        bgColor = myBlackColor,
        fgColor = myWhiteColor,
        bgHLight = myBlackColor,
        fgHLight = myBlueColor,
        borderColor = myBlackColor,
        promptBorderWidth = 0,
        position = Top,
        height = 32
    }

myConfig = defaultConfig
    {
        terminal = myTerminal,
        borderWidth = myBorderWidth,
        modMask = myModMask,
        workspaces = myWorkspaces,
        normalBorderColor = myBlackColor,
        focusedBorderColor = myGreyColor,
        keys = myKeys,
        mouseBindings = myMouseBindings,
        layoutHook = myLayout,
        manageHook = myManageHook,
        logHook = myLogHook
    }

main = xmonad =<< statusBar myBar myPP (\c -> (modMask c, xK_b)) myConfig

I use hsetroot to set my "desktop" background - not sure if it's relevant - and the xprop output on clicking it (as in the root window, not xmobar, qtpanel, konsole or whatever) looks like this - minus the ASCII art icons:

_QT_CLIPBOARD_SENTINEL(WINDOW): window id # 0x1200002, 0x1200002
_NET_SUPPORTING_WM_CHECK(WINDOW): window id # 0xc00001
_NET_SUPPORTED(ATOM) = _NET_SUPPORTING_WM_CHECK, _NET_WM_NAME, _NET_WM_STATE_HIDDEN, _NET_NUMBER_OF_DESKTOPS, _NET_CLIENT_LIST, _NET_CLIENT_LIST_STACKING, _NET_CURRENT_DESKTOP, _NET_DESKTOP_NAMES, _NET_ACTIVE_WINDOW, _NET_WM_DESKTOP, _NET_WM_STRUT
_NET_ACTIVE_WINDOW(WINDOW): window id # 0xe00017
_NET_CURRENT_DESKTOP(CARDINAL) = 0
_NET_CLIENT_LIST_STACKING(WINDOW): window id # 0xe00017, 0x240000e, 0x1e0000b, 0x1200018, 0x100000e
_NET_CLIENT_LIST(WINDOW): window id # 0xe00017, 0x240000e, 0x1e0000b, 0x1200018, 0x100000e
_NET_DESKTOP_NAMES(UTF8_STRING) = "ZSH", "VIM", "NET", "SYS"
_NET_NUMBER_OF_DESKTOPS(CARDINAL) = 4
WM_HINTS(WM_HINTS):
                bitmap id # to use for icon: 0x100000b
_NET_WM_ICON(CARDINAL) =        Icon (16 x 16):
(snip)
        Icon (32 x 32):
(snip)
        Icon (64 x 64):
(snip)
        Icon (128 x 128):
(snip)
ESETROOT_PMAP_ID(PIXMAP): pixmap id # 0x800001
_XROOTPMAP_ID(PIXMAP): pixmap id # 0x800001
_XKB_RULES_NAMES(STRING) = "evdev", "evdev", "us(colemak)", "", ""
XFree86_VT(INTEGER) = 1
XFree86_DDC_EDID1_RAWDATA(INTEGER) = 0, -1, -1, -1, -1, -1, -1, 0, 76, -93, 66, 84, 0, 0, 0, 0, 0, 18, 1, 3, -112, 33, 21, 120, 10, -121, -11, -108, 87, 79, -116, 39, 39, 80, 84, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 42, -96, 24, 82, -124, 12, 48, 64, 32, 51, 0, 75, -49, 16, 0, 0, 26, 40, 28, -96, 24, 82, -124, 12, 48, 64, 32, 51, 0, 75, -49, 16, 0, 0, 26, 0, 0, 0, -2, 0, 88, 80, 57, 55, 49, -127, 49, 53, 52, 66, 84, 10, 32, 0, 0, 0, 0, 0, 12, 16, 23, 27, 54, 105, -87, -1, 2, 1, 10, 32, 32, 0, -5

It seems to me that there is a _NET_CLIENT_LIST property on it... Moving on - xprop on xmobar:

_NET_WM_PID(CARDINAL) = 2977
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DOCK
_NET_WM_STRUT_PARTIAL(CARDINAL) = 0, 0, 32, 0, 0, 0, 0, 0, 0, 1439, 0, 0
WM_NAME(STRING) = "xmobar"
WM_CLASS(STRING) = "xmobar"

xprop on qtpanel:

_NET_WM_USER_TIME(CARDINAL) = 19648683
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 44040201
_KDE_OXYGEN_BACKGROUND_PIXMAP(CARDINAL) = 0
_KDE_OXYGEN_BACKGROUND_GRADIENT(CARDINAL) = 1
_NET_SYSTEM_TRAY_VISUAL(VISUALID): visual id # 0x72
_KDE_NET_WM_BLUR_BEHIND_REGION(CARDINAL) = 0, 0, 1440, 32
_NET_WM_STRUT(CARDINAL) = 0, 0, 32, 0
_NET_WM_STRUT_PARTIAL(CARDINAL) = 0, 0, 32, 0, 0, 0, 0, 0, 0, 1440, 0, 0
_NET_WM_DESKTOP(CARDINAL) = 4294967295
XdndAware(ATOM) = BITMAP
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
WM_CLIENT_LEADER(WINDOW): window id # 0x2a00005
_NET_WM_PID(CARDINAL) = 5577
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DOCK, _NET_WM_WINDOW_TYPE_NORMAL
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x3e, 0x7e, 0x0, 0x0
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_NAME(STRING) = "qtpanel"
WM_LOCALE_NAME(STRING) = "en_GB.UTF-8"
WM_CLASS(STRING) = "qtpanel", "Qtpanel"
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: True
                Initial state is Normal State.
                window id # of group leader: 0x2a00005
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                user specified location: 0, 0
                program specified location: 0, 0
                user specified size: 1440 by 32
                program specified size: 1440 by 32
                window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "wraith"
WM_COMMAND(STRING) = { "qtpanel" }

xprop on plasma-desktop (the KDE panel-thingy - not sure if one can run only the panel itself - and, again, without ASCII icons)

_KDE_NET_WM_BLUR_BEHIND_REGION(CARDINAL) = 0, 0, 1440, 27
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
_NET_WM_STRUT(CARDINAL) = 0, 0, 27, 0
_NET_WM_STRUT_PARTIAL(CARDINAL) = 0, 0, 27, 0, 0, 0, 0, 0, 0, 1439, 0, 0
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 44040437
_KDE_OXYGEN_BACKGROUND_PIXMAP(CARDINAL) = 0
_KDE_OXYGEN_BACKGROUND_GRADIENT(CARDINAL) = 1
_NET_STARTUP_ID(UTF8_STRING) = "0"
_KDE_SLIDE(_KDE_SLIDE) = 0xffffffff, 0x1
WM_WINDOW_ROLE(STRING) = "panel_1"
_NET_WM_DESKTOP(CARDINAL) = 4294967295
_KDE_NET_WM_SHADOW(CARDINAL) = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
_NET_WM_ICON(CARDINAL) =        Icon (16 x 16):
(snip)
        Icon (32 x 32):
(snip)                                        
        Icon (64 x 64):
(snip)                                                                        
        Icon (128 x 128):
(snip)
XdndAware(ATOM) = BITMAP
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
WM_CLIENT_LEADER(WINDOW): window id # 0x2a00004
_NET_WM_PID(CARDINAL) = 5603
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DOCK
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x3e, 0x7e, 0x0, 0x0
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_NAME(STRING) = "plasma-desktop"
WM_LOCALE_NAME(STRING) = "en_GB.UTF-8"
WM_CLASS(STRING) = "Plasma", "Plasma"
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: True
                Initial state is Normal State.
                bitmap id # to use for icon: 0x2a000f2
                window id # of group leader: 0x2a00004
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "wraith"
WM_COMMAND(STRING) = { "plasma-desktop" }

I've been skimming through the qtpanel source, especially x11support.cpp, but haven't found anything yet.

Offline

#64 2012-11-27 13:40:04

Mad Fish
Member
Registered: 2009-09-22
Posts: 295

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

totte, what exactly does not work (how it looks and behaves)?

Offline

#65 2012-11-27 14:11:29

totte
Member
Registered: 2011-08-22
Posts: 64

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

Mad Fish wrote:

totte, what exactly does not work (how it looks and behaves)?

Oops, forgot that part. smile Same as for cf8, link, if qtpanel is set to the vertical position "top" it fills up the entire screen except for the space at the top of the screen where it should be. If I switch to another workspace and then back to the one with qtpanel, it is displayed somewhat correctly but at the bottom of the display instead of the top. If I switch between open windows (qtpanel, konsole etc) the other windows will behave the same way that qtpanel does in the second case, i.e. shrink into a small bar along the bottom of the screen.

Offline

#66 2012-11-27 14:28:17

Mad Fish
Member
Registered: 2009-09-22
Posts: 295

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

qtpanel sets its size and position directly, so xmonad may not be handling _NET_WM_WINDOW_TYPE correctly. It is set to _NET_WM_WINDOW_TYPE_DOCK, which means that window manager should not mess with it. It does. Oh well.
Maybe it's because _NET_WM_WINDOW_TYPE is set to two values, in order of preference? (note that this is allowed by standard and is what's done by Qt in this case) You may want to experiment there. Do other panels work?

Anyway, it looks like a problem on xmonad side. I never used it myself, so... smile

Offline

#67 2012-11-27 15:41:26

totte
Member
Registered: 2011-08-22
Posts: 64

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

Yeah I've tested a whole bunch of other panels - but most of them are GTK-based, so I thought it was of no interest to this discussion (they all seemed to work). Aside from this and the KDE plasma-whatchamacallits I haven't found any other Qt-based panels. There's the Razor-Qt project, but it didn't seem like there was an easy way to only use the panel or run the whole thing with XMonad. Anyway, I found this issue over at the XMonad issue tracker on Google Code. It seems somewhat related to what I experienced. Yesterday, I asked the nice people in #xmonad how XMonad handles multiple _NET_WM_WINDOW_TYPEs and was told the same thing, more or less, that BurntSushi stated earlier in this thread:

BurntSushi wrote:

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

I don't know much about XMonad and Haskell, but adding this line to my ManageHook (in ~/.xmonad/xmonad.hs) at least has qtpanel stick to the top of the screen and be displayed on all workspaces:

resource =? "qtpanel" --> doIgnore

The applications menu works, as does the system tray! Not sure if this is a proper solution though.

There doesn't seem to be much documentation (no man page?) about the project... what happened to user settings? Did you settle for ~/.config/madfish/qtpanel.conf or do you have other plans? Have you considered adding a pager? I guess I ought to look into whatever it is that XMobar does to get and print the current layout name and see if I can get it here as well. Great work anyhow, thanks. smile

Last edited by totte (2012-11-27 16:11:29)

Offline

#68 2012-11-27 19:02:53

Mad Fish
Member
Registered: 2009-09-22
Posts: 295

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

totte wrote:

There doesn't seem to be much documentation (no man page?) about the project... what happened to user settings? Did you settle for ~/.config/madfish/qtpanel.conf or do you have other plans? Have you considered adding a pager? I guess I ought to look into whatever it is that XMobar does to get and print the current layout name and see if I can get it here as well. Great work anyhow, thanks. smile

There is no documentation. Everything should be obvious as it is. Hopefully. smile
Yes, simple config file seems totally fine for configuration - not that there is much of configuration anyway.
For a pager - since I don't use multiple desktops, don't expect me to do it, but if someone implements it, I will accept it.

Offline

#69 2012-11-28 09:46:31

totte
Member
Registered: 2011-08-22
Posts: 64

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

Very cool, I'd love to do it myself since I know exactly how I want it to work and be displayed. I'm a beginner though when it comes to C++ and Qt so I'm not sure if it's possible to have XMonad communicate with qtpanel the way it does with XMobar to get the current desktop, layout and focused window. I'm also thinking that the menu bar for the current window could be displayed in the qtpanel task bar area (since I don't use that in XMonad - I only need the current window) like in OS X. Thomas Luebking who made the Bespin theme put together some sort of plasmoid called Xbar that imitates this functionality. I haven't tested it though so I dunnu how stable it is. The latest Ubuntu seems to be into this OS X-like deal as well, aside from it's "dock" being glued to the left side of the screen.

Just brainstorming a bit, going to clone the repository tonight and see what I can make out of it. smile

Offline

#70 2012-12-02 16:53:12

fluxboxer
Member
Registered: 2012-12-02
Posts: 118

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

Thank you for the beautiful and functional Qt panel. What parameter to change in which source file to reduce its length a bit? I need a little space for my very minimal conky (and for right-click fluxbox menu when the rest of the screen covered by app windows). Naturally I also need it not to be centered in this custom config.

Offline

#71 2012-12-02 17:07:05

Mad Fish
Member
Registered: 2009-09-22
Posts: 295

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

fluxboxer wrote:

Thank you for the beautiful and functional Qt panel. What parameter to change in which source file to reduce its length a bit? I need a little space for my very minimal conky (and for right-click fluxbox menu when the rest of the screen covered by app windows). Naturally I also need it not to be centered in this custom config.

Configuration is applied in PanelApplication::init. Adjust size in resize() call, set horizontal anchor to Min or Max, depending on where you want your panel to be, set layout policy to Normal instead of FillSpace (so that manual size is respected). All of these should have been exposed in configuration, but I never got to it. smile

Offline

#72 2012-12-02 17:44:48

fluxboxer
Member
Registered: 2012-12-02
Posts: 118

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

Thank you sir. It's very fine as it is. That is, after I've changed the date-time format!

Offline

#73 2012-12-04 11:43:15

fluxboxer
Member
Registered: 2012-12-02
Posts: 118

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

Sorry, if this has been mentioned before:

The panel border looks ugly when the background image is dark on one side of the screen and light on the other. That is, the panel seems to have a light coloured border only through half of its length.

Have built again with "borderThickness = 0" (panelwindow.cpp) and find it nicer as well.

Offline

#74 2013-02-23 21:38:13

Mad Fish
Member
Registered: 2009-09-22
Posts: 295

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

Some updates:

  • Main repo is now located on GitHub (GitHub provides more convenient web interface).

  • High-DPI (aka retina) support landed (see screenshot - 2880x1800, DPI set to 192).

Last edited by Mad Fish (2013-02-23 21:54:27)

Offline

#75 2014-06-14 11:16:28

Mr Green
Forum Fellow
From: U.K.
Registered: 2003-12-21
Posts: 5,891
Website

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

Is it possible to edit date string via qtpanel.conf? cmst does not seem to tray but that may not be a qtpanel problem


Mr Green

Offline

Board footer

Powered by FluxBB