kde4 类Mac全局菜单方案列表 |
发布: 2010-12-30 21:30 |
* bespin + xbar方式 * plasma-globalmenu-mod http://kde-apps.org/content/show.php/?content=129006 * http://qt.gitorious.org/~agateau/qt/agateau-qt 第一种比较成熟,使用了一段时间,它还有功能是kde程序外观功能,要比默认的kde cleanlook好看些。 第二种准备测试 突然想起来一问题,kde桌面的oxgen网络在系统设置项中怎么找不到了??奇怪 2010-12-30 我的全局菜单方案新进展 还是使用bespin中的xbar,外加kde-misc/smooth-tasks(取代了daisy,这个放在plasma作为plasma mod时有问题), 安装gnome-extra/gnome-globalmenu-0.7.10,让gtk程序也能在kde桌面显示全局菜单,需要一个环境变量export GTK_MODULES=globalmenu-plugin , 需要写在.kde4/env/myenv.sh和.bashrc两个地方,这样从控制台启动的gtk程序和使用kde启动器启动的gtk程序都能用到全局菜单。 给bespin打了个小补丁,加长xbar菜单的默认长度, cat /usr/local/portage/layman/kde/x11-themes/bespin/files/ [code type="diff"] xbar_init_size_bigger.patch Index: XBar/xbar.cpp =================================================================== --- XBar/xbar.cpp (revision 1315) +++ XBar/xbar.cpp (working copy) @@ -639,7 +639,7 @@ else { QAction *action = new QAction(myMainMenu); - action->setText("Customizable menu, see http://CloudCity.SF.net/xbar.html"); + action->setText("-----------------(Customizable menu, see http://CloudCity.SF.net/xbar.html)-----------------") ; action->setData("http://CloudCity.SF.net/xbar.html"); connect ( action, SIGNAL(triggered()), SLOT(runFromAction()) ); myMainMenu->addAction(action); [/code] 当然还有一些问题,如xbar菜单长度不能自适应,对短菜单,会留有空白空间,对长菜单,可能与smooth-tasks区域重叠。 看能不能再改改bespin让它能自适应不同长度的菜单。 另一个问题有些gtk程序问题比较多,pidgin不但全局菜单上显示菜单,自已的窗口上还显示一个菜单。 像libreoffice根本就不理全局菜单。 一种基本能让xbar菜单长度自动适应长度的补丁,但只对菜单长度在900以内的管用,如果太长,仍旧会出问题,另外,xbar的长度会不断变长,现在还没有变短的机制,否则会让任务栏变动频繁,消耗比较多的CPU来重绘任务样部分。 [code type="diff"] Index: XBar/xbar.cpp =================================================================== --- XBar/xbar.cpp (revision 1315) +++ XBar/xbar.cpp (working copy) @@ -640,6 +640,7 @@ { QAction *action = new QAction(myMainMenu); action->setText("Customizable menu, see http://CloudCity.SF.net/xbar.html"); + action->setText("-----------------(Customizable menu, see http://CloudCity.SF.net/xbar.html)-----------------"); action->setData("http://CloudCity.SF.net/xbar.html"); connect ( action, SIGNAL(triggered()), SLOT(runFromAction()) ); myMainMenu->addAction(action); @@ -711,6 +712,15 @@ int dy = (contentsRect().height() - item->rect().height())/2; item->setPos(contentsRect().x(), contentsRect().y()+dy); item->show(); + + QSizeF csize = item->sizeHint(Qt::PreferredSize, QSizeF()); + if (csize.width() < 500) { + + } else if (csize.width() > 900) { + + } else { + this->updateConstraints(Plasma::SizeConstraint); + } } void [/code] 图1, 图2, 图3, |
原文: http://qtchina.tk/?q=node/532 |
Powered by zexport
|