Главная | Actual Topics | Обратная связь | Guest Book | В избранное | Сделать домашней
 System & Utilities
 Unix News
 OS Emulator
Каталог статей
Все статьи

Биллу Гейтсу тоже предлагают избавиться ...
Вымогательство в борьбе со спамом

July, 2018
Какой из этих ОС Вы отдаете большее предпочтение?

Mac OS
Windows XP
Windows 2003
Что такое ОС? :)

Другие опросы

Всего голосов: 326
Комментарии: 0

Архив Новостей
 July 2018 (6)
 June 2018 (13)
 May 2018 (10)
 April 2018 (14)
 March 2018 (11)
 February 2018 (13)
 January 2018 (13)
 December 2017 (14)
 November 2017 (15)
 October 2017 (19)
 September 2017 (18)
 August 2017 (13)
 February 2017 (14)
 January 2017 (19)
 December 2016 (16)
 November 2016 (16)
 October 2016 (21)
 September 2016 (18)
 August 2016 (16)
 July 2016 (16)
 June 2016 (20)
 May 2016 (18)
 April 2016 (15)
 March 2016 (22)
 February 2016 (17)
 January 2016 (15)
 December 2015 (15)
 November 2015 (22)
 October 2015 (20)
 September 2015 (17)
 August 2015 (25)
 July 2015 (20)
 June 2015 (23)
 May 2015 (21)
 April 2015 (17)
 March 2015 (19)
 February 2015 (9)
 January 2015 (23)
 December 2014 (9)
 November 2014 (13)
 October 2014 (12)
 September 2014 (18)
 August 2014 (20)
 July 2014 (10)
 June 2014 (12)
 May 2014 (12)
 April 2014 (10)
 March 2014 (22)
 February 2014 (10)
 January 2014 (8)
 December 2013 (26)
 November 2013 (53)
 October 2013 (40)
 September 2013 (48)
 August 2013 (63)
 July 2013 (56)
 June 2013 (52)
 May 2013 (49)
 April 2013 (67)
 March 2013 (74)
 February 2013 (63)
 January 2013 (62)
 December 2012 (62)
 November 2012 (66)
 October 2012 (68)
 September 2012 (48)
 August 2012 (75)
 July 2012 (60)
 June 2012 (71)
 May 2012 (69)
 April 2012 (85)
 March 2012 (86)
 February 2012 (90)
 January 2012 (81)
 December 2011 (103)
 November 2011 (118)
 October 2011 (74)
 September 2011 (2)
 June 2011 (110)
 May 2011 (118)
 April 2011 (111)
 March 2011 (112)
 February 2011 (101)
 January 2011 (119)
 December 2010 (117)
 November 2010 (118)
 October 2010 (131)
 September 2010 (117)
 August 2010 (226)
 July 2010 (351)
 June 2010 (305)
 May 2010 (319)
 April 2010 (343)
 March 2010 (329)
 February 2010 (311)
 January 2010 (312)
 December 2009 (266)
 November 2009 (156)
 July 2009 (101)
 June 2009 (279)
 May 2009 (365)
 April 2009 (348)
 March 2009 (347)
 February 2009 (323)
 January 2009 (318)
 December 2008 (237)
 November 2008 (155)
 October 2008 (334)
 September 2008 (310)
 August 2008 (343)
 July 2008 (362)
 June 2008 (322)
 May 2008 (501)
 April 2008 (1276)
 March 2008 (1658)
 February 2008 (250)
 January 2008 (6)
 November 2007 (1)
 September 2007 (1)
 June 2007 (1)
 May 2007 (1)
 March 2007 (1)
 January 2007 (2)
 December 2006 (1)
 October 2006 (2)
 September 2006 (1)
 August 2006 (2)

Marco Martin (notmart): Introducing Notification Icons

System & Utilities

This is the period of the year when Plasma developers exits from under their rocks it seems, so there i am too, i wanted to blog about that since quite some time, but i am really too lazy lazy lazy to blog :p

As Aaron said, last months i've been quite busy with the implementation of the new systemtray specification. At Tokamak we gathered around a whiteboard and discussed what sucked about the current X systemtray, so... what if we could design it from scratch? well, let's do it! this thinghie interested me so much that i jumped over it in a coding frenzy with i hope a sane amount of pauses to think about it and keep the design sane, scrapping stuff when the design direction seemed to take an ugly direction, process that is still ongoing, so all i will talk about here is still subject to changes, rennnames, replacements etc, nothing "production" still :p

Soooo, why we were really unhappy about the system tray we have now so much at the point to want to design a brand new thing? (and enlightenment people too, and this makes me happy since will permit us to have a really cross desktop design from day one)

There are several reasons, so let's see one by one:

Painting, positioning and behaviour

Right now systemtray icons uses the Xembed protocol, that basically means they are windows owned by the client application process (very very roughly and pardon for the inaccuracy, kinda like the systray was their window manager). This means the painting of the icon is controlled exclusively by the client application, the systray itself has not much to say about that.

It means also, since systray icons have windows, i can't have two system trays, (they would steal icons each other, since the window representing the icon s well, one) and, since plasma is canvas based, the implementation detail of whet xembed is will brutally come out as soon as you try to put another applet over the systray or try to rotate the applet or zoom the view where the applet is, as you can see here :p (yes, that could be kinda achieved with composite, but still a real hack)

OGG version

Moreover, nowdays our panel is a window that uses argb visuals, so it's translucent when desktop effects are on (that means basically force 32 bits color depth on all windows representing icons). and that's a thing that neither X or graphics drivers (or even qt, before 4.5) were ready for, the amount of bug reports about visual garbage into the system tray or icons that becomes invisible (nowdays still happens with intel cards and the problem doesn't seem to be headed for a solution) were really many and quite discouraging.

Communication between system tray and icon

Or better, lack of thereof in the current spec. Now, the system tray limits itself to embed all the icons there are around (basically windows with _NET_SYSTEM_TRAY_S atom set) and after that, it knows exactly zero about them. Why it's useful for those guys to talk to each other? Well, we all know the problem of cruft in the system tray, having 10-20 icons that steals half of the panel length or more is quite common, unfortunately...

Windows starting from XP made a timid attempt to solve the problem, by auto hiding system tray icons that din't have activity for a given period of time (don't know how since i don't know how their protocol works) or alternatively manually hide icons you hate (ideally shouldn't be necessary but the world is not, nice and fluffy with rocket launcher equipped ponies, misbehavers will always be here)

Now, in KDE (and any desktop that works on X by the way) we can hide icons but only manually, because the system tray has no idea what icons have activity, what are trying to notify something or things like that.

another interesting tought can come by looking at a typical crowded (and not even really crowded) system tray, icon by icon:

average systray
  • The package manager screaming that i need super-important security updates: it's a system service that needs user intervention every now and then, so it uses the system tray to notify that to the user.
  • KMix: it's an hardware control utility, it sits in the systray to give the user a quick way to control the volume without having to dig into the applications menu or systemsettings.
  • Keyboard layout: it's a system service, also there to give a shortcut rather than notify something
  • Nepomuk: it's a system service usually it's not really useful to have it in the systray, but becomes neat as soon as it goes into the systray just when it's indexing, to notify the user that is doing many disk operations, so giving to him a quick way to pause the indexing if he needs hard disk performance in that moment.
  • Klipper: it's a system service, that lets the user manage the clipboard, perhaps it would even make sense to have it in the panel out of the system tray..
  • Kwallet: also a system service, access to the saved passwords, not a notifying function at all, it's the typical icon that should be hidden until the user goes explicitly hunting for it.
  • Konversation: it's the status of a normal application, but it can be seen also as a communication thing, since those kind of applications tend to notify a lot they can be seen as a separate category (i.e, somebody is trying to talk to you, as in this icon)
  • Amarok: it's the status of an application, the icon itself says if amarok is paused or playing and the progress itself. quite used because once amarok plays it can be keeped as a background thing (i.e not in the taskbar and forget about it as long as it emits noise :))
  • Skype: as konversation, it's a communication thing, and also there the icon blinks when somebody tries to contact you
  • Kopete: communication thing too

So what we have there: several categories:

  1. Application status, like amarok in this case
  2. System service: like nepomuk
  3. Hardware status: like kmix or a battery or things like that

Application status icons in the future can be integrated into the taskbar for instance (did i heard somebody whispering dock? he will be punished :p), and even the other two categories could be separated in two different system trays, it gives more freedom to implement something that could exit from an usability study, with less fears of saying "ehmm, no sorry that can't be done actually..."

The icons can have several statuses, we can think about 3:

  1. passive: informational, but doesn't require really user interaction, so it's a thing that the system tray can decide to not show if not explicitly asked (in this example would be the package manager when doesn't have updates, kwallet or nepomuk when idle).
  2. active: the service is doing something or is a control that could be needed any time (nepomuk indicizing, package manager checking for updates, kmix that could always be handy there, battery indicator...)
  3. Notifying: the icon requires an action from the user, for instance the package manager with new updates, or somebody that tries to contact you from kopete.

So we can now display the notifying ones in a different area of the systray, with a different background and we can hide the passive ones, and show them only when the user presses the unhide arrow.

so what we have now?

The main implementation skeleton is done, the specification it's all based on dbus message passing, since it has to be a cross desktop thing. It's divided in 3 parts: a kded service that keeps the list of the applications that wants to use the system tray (so the list won't be lost due to a plasma restart) the protocol support in the systemtray applet (our systemtray could already support multiple protocols, since it was designed already with this possibility in mind since the refactor in KDE 4.2) and a client library in playground with a tiny test application used as a proof of concept, that can be seen in this video (yes, not a mind boggling spectacular thing, but still important), with also an interesting feature: when you stop the systemtray bookkeeping daemon, the icon magically falls back to the usual legacy system tray icon, so an application using this new protocol would still get systemtray icons when running in a desktop environment that doesn't support the new protocol.

OGG version

The client library and the dbus interface itself will pass trough a tough api review, so they can still change in a quite significant way (that's why i didn't go really in details in this post).

So don't expect in KDE 4.3 all KDE applications to have been magically converted to this new protocol, but i hope all the plumbing will be there to permit application developers to start considering using this, and i'm really looking forward for other projects to cooperate to have a new unified shiny stuff :D


Разместил: Planet KDE | Дата: 27.03.2009 | Прочитано: 1249 | Раздел: System & Utilities   

Рейтинг статьи

Средняя оценка: 0.00/0Средняя оценка: 0Всего голосов:0

Хорошо Нормально Пойдёт Плохо

Смотрите также связанные темы

15.12.2015 QNX and AdasWorks Collaborate on Automated Driving Technology
"Companies integrating software technologies to enable intelligent, multi-camera surround-view systems. Ottawa, Ontario and Budapest, Hungary December 10, 2015 QNX Software Systems Limited, a subsidiary of BlackBerry Limited, and AdasWorks, an innovative startup developing artificial intelligence-based software for automated driving, today announced a technology partnership focused on advanced driver assistance systems ADAS and autonomous vehicles. As part of the new initiative, the companies are porting several AdasWorks functions, including lane detection, moving-object detection, and objec...
29.12.2015 Luxoft Teams Up with QNX on Automotive ADAS Technologies
"Collaboration focused on advanced technologies, including road scene reconstruction and augmented navigation, which can enable semiautonomous driving.December 15, 2015 Luxoft Holding, Inc. NYSE:LXFT, a leading provider of software development services and innovative IT solutions to a global client base, and QNX Software Systems Limited, a subsidiary of BlackBerry Limited, today announced a new technology partnership focused on ADAS systems used by automotive original equipment manufacturers OEMs and Tier 1 suppliers. As part of the initiative, Luxoft will leverage its expertise in road-model...
"New platform offers unified management of all acoustics in the car, enabling customers to reduce the cost, complexity, and time-to-production of audio signal-processing systems. Las Vegas, International CES 2016, LVCC North Hall, Booth 325 - January 6 - QNX Software Systems Limited, a subsidiary of BlackBerry Limited, today announced the new QNXreg; Acoustics Management Platform AMP, a comprehensive solution that allows automakers to enhance the audio and acoustic experience for drivers and passengers, while reducing system costs and complexity.Modern vehicles contain multiple acoustic and au...
30.05.2016 Ещё одна критическая уязвимость в ImageMagick
В ImageMagick и GraphicMagick обнаружена ещё одна уязвимость (CVE-2016-5118), приводящая к выполнению произвольных shell-команд при обработке файлов со специальными именами. Уязвимость заключается в отсутствии проверки имени файлов на наличие недопустимых символов:% rm -f hello.txt % convert '|echo Hello > hello.txt;' null: % ls hello.txt hello.txt Как и в случае с предыдущей уязвимостью, возможна атака с помощью специально сформированных SVG-файлов (которые позволяют указывать внутри себя ссылки на другие файлы):xlink:href="|echo Hello > hello.txt; cat /usr/lib/firefox/browser/icon...
16.05.2008 x11-wm/pekwm - 0.1.6,1
- Update to 0.1.6. - Make fetchable again. - Update pkg-desc. PR: ports/123126, ports/117900 Submitted by: Martin Tournoij <>, Henrik Friedrichsen <> Approved by: gabor (mentor), Martin Tournoij <> (maintainer)
07.03.2008 games/linux-ut - 436,1
- Added support(*) for other UT99 CD's such as the Anthology CD. This also added the WITHOUT_MAPS option. - Reverted the default patch installed from v451 to v436 hence the PORTEPOCH. Patch v451 has some issues with the client (some keyboard mappings) but is recommended for the server. The are both network compatible. If v451 is desired for running a server, WITH_451PATCH may be defined. - Change my E-mail from to * Thanks go to Martin Tournoij who wrote the Anthology patch as well as all the testing he did on the tweaks I made. Added file(s): - pkg-m...
08.03.2008 Peeling the VI onion: introducing the VI Team Blog
The VI Team has opened the doors on their brand spankin' new blog over at They'll be posting occasional pieces on their view of virtualization, the technology, where it's headed, how it all fits together, and what they're hearing...
25.03.2008 Перевод статьи о переносимости ПО
Существует хорошая статья о разработке переносимого ПО - "Fighting the Lemmings", автор Martin Husemann. Давно хотел её перевести, и вот наконец дошли руки. По ссылке можно найти англоязычный оригинал и русский перевод. В статье описываются типичные проблемы, возникающие при разработке переносимого кода, а так-же способы их решения. Рекомендуется к прочтению тем, кто пишет ПО для систем отличных от x86.
30.03.2008 Экспериментальные проекты Мозиллы и будущее Лисы
В Мозилле разрабатываются два экспериментальных проекта: Weave, инфраструктура для создания online-сервисов. Исходя из этого, уже ведутся Источник
04.04.2008 games/wrogue - 0.8.0
- Update to 0.8.0 PR: ports/120027 Submitted by: Martin Tournoij <> (maintainer)
Нет комментариев. Почему бы Вам не оставить свой?
Вы не можете отправить комментарий анонимно, пожалуйста зарегистрируйтесь.
Google Search


Топ Новостей
1: Linux distros aren\'t updating WebKit, making web browsers and email clients vulnerable
Просмотров - 4986

2: Akonadi/KMail issues on Tumbleweed?
Просмотров - 627

3: Netrunner Desktop 16.09 "Avalon" Linux OS Is Out with Kernel 4.7, KDE Plasma 5.7
Просмотров - 593

4: KDE\'s Kirigami 2.0 Framework for Convergent UIs Enters Beta with New Features
Просмотров - 581

5: KDevelop 5.0.2 released for Windows and Linux
Просмотров - 575

6: HIG about Simple vs. Advanced Settings
Просмотров - 570

7: Interview with Esfenodon
Просмотров - 548

8: 3.0 Pre-alpha 3 is out!
Просмотров - 510

9: Multi-screen woes in Plasma 5.7
Просмотров - 503

10: Embrace Open Source culture: the 5 common transformations.
Просмотров - 496

11: GSoC Update 1: The Beginning
Просмотров - 485

12: Fedora and KDE/spin\'s treatment - Discussion
Просмотров - 479

13: [TORRENT] chakra-2016.02-ian-x86_64.iso
Просмотров - 479

14: Qt SCXML and State Chart Support in Qt Creator
Просмотров - 460

15: Interview with Neotheta
Просмотров - 452

Google 120X240

Главная | Actual Topics | Статьи | Обратная связь | Guest Book
Генерация: 1.858 сек. и 13 запросов к базе данных за 1.803 сек.
Powered by SLAED CMS © 2005-2007 SLAED. All rights reserved.