[Kde-hardware-devel] Fw:KScreen OSD

Leslie Zhai xiang.zhai at i-soft.com.cn
Mon Jul 27 02:23:47 UTC 2015



On 2015年07月24日 19:34, Daniel Vrátil wrote:
> On Friday, July 24, 2015 05:35:49 PM 翟翔 wrote:
>>> ------------------ Original ------------------
>>> *From: * "Daniel Vráti"<dvratil at kde.org>;
>>> *Date: * Fri, Jul 24, 2015 04:55 PM
>>> *To: * "xiang.zhai"<xiang.zhai at i-soft.com.cn>;
>>> "kde-hardware-devel"<kde-hardware-devel at kde.org>;
>>> *Subject: * KScreen OSD
>>> Hi Leslie,
>>>
>>> I noticed today that you started working on KScreen OSD. Although I'm
>>> glad
>>> someone stepped up to start working on it, it's unfortunate that you
>>> did not
>>> contact the maintainers (me or Alex Fiestas) nor mentioned your
>>> intentions
>>> anywhere on a mailing list (CC'ed kde-hardware-devel) so that we could
>>> coordinate the works and discuss how it should be properly implemented.
>> I am so sorry that I have not contacted kscreen project`s maintainers ;-(
>>
>> The same story about plasma-desktop/applets/kickoff and
>> plasma-desktop/kcms/useraccount
>> http://quickgit.kde.org/?p=plasma-desktop.git&a=shortlog&h=c2b7a63e54375d49d
>> 0204e97fc521ea27caec719
>>
>> And plasma-workspace/ksmserver/kscreenlocker
>> http://quickgit.kde.org/?p=plasma-workspace.git&a=shortlog&h=69b966a0fea255e
>> f3eb0f2f581567777f50e8e75
>>
>> I want to add AccountsService support for kickoff, useraccount and
>> kscreenlocker https://twitter.com/xiangzhai/status/624509473734823936
>>
>> plfiorini, sddm core developer https://github.com/sddm/sddm/
>> he merged my migration for AccountsService Qt binding
>> https://github.com/hawaii-desktop/qtaccountsservice/commits/master
>>
>> So I just start my work without mentioned us, I am so sorry for that!
> Awesome! I recommend that you contact the respective developers for those
> projects as well (generally mailing to plasma-devel mailing list would be
> fine, all the relevant devs read it).
Thanks for your advice ;-) I have subscribed kde-hardware-devel and 
plasma-devel mailing list with my working email, I will contact with 
these projects` core developers && maintainers via mailing list ASAP.

>
>
>>> I just went through the code briefly, but unfortunatelly the way it is
>>> done
>>> right now is absolutely unmergeable and does not align at all with our
>>> plans.
>> I will 100% use libkscreen!
>>
>> Recently it is skeleton, so I simply use xrandr, I will use libkscreen`s
>> SetConfigOperation ;-)
> Yes, that was one of the major concerns :) The other major concern of mine is
> that you hardcode some of the things (like detecting laptop screen by using
> "LVDS" is wrong, some laptop screens are called "eDP" for example - you want
> to use KScreen::Output::type() and check for KScreen::Output::Panel)
I am reading libkscreen source code more carefully, try to be familiar 
with it, and I added log info for Config`s canBeApplied, it helps me to 
know what configuration tring to set is wrong.

>
>>> Would you mind describing your intentions, what functionality are you
>>> planning
>>> and what's the general usecase for your OSD? We could then discuss how to
>>> implement it in a way that will be possible to merge into main
>>> branches and
>>> get into releases?
>> I just copy the Windows 8 right side hot zone for multiply outputs
>> settings usecase.
> Yes, we wanted to do something like that too, because it's really nice.
>
> The plan we had in mind was to use the same thing that "Add Widget" or
> "Activities" panels in Plasma use or what KWin is using when you press Alt+Tab
> to show list of windows. I was told that the panel a simple Plasma Dialog -
> which means we could easily implement that in QML. I also think there is no
> need to have a standalone  application for that, instead we could just show
> the dialog from the KDED module.
kscreen`s plasma is for KDE4, I want to migrate it to KF5, please count 
me in ;-)

And I am familiar with QML https://github.com/xiangzhai/qwx the UI of 
WeChat client is 100% QML, I will use QML to implement the osd (simple 
Plasma Dialog).

I tried to add 'the dialog' OsdWidget from the kded module 
http://quickgit.kde.org/?p=kscreen.git&a=commit&h=164a874aae80a7c6b4163ea0c33822797072ea8a

but sorry for my poor unstanding of the usage of libkscreen, I directly 
use xrandr in kded/osd, for example, xrandr --output LVDS1 --off 
--output VGA1 --auto, then the kded && plasama segfault ;-( the 
backtrace info is about xcb relative!

so I just move the osd out of kded 
http://quickgit.kde.org/?p=kscreen.git&a=shortlog&h=827aa545ba32562dedfb2034d2a90d5786eabe02

when new monitor plugged in, if there are 2 outputs connected, the osd 
show, so it does not need to press Qt::Key_Display hot key grabbed in 
kded module.
if more than 2 outputs, then advanced kcm_kscreen show.

The same situation - I have to read libkscreen source code more 
carefully ;-)

>
> The KDED module already implements the logic for switching between mirror
> (clone), extend left, extend right, laptop only, so you would only have to
> implement to show the OSD when something changes, saving you lots of work :)
Yes, there is display switch implementation in kded 
https://projects.kde.org/projects/kde/workspace/kscreen/repository/revisions/master/entry/kded/generator.cpp#L148

It is a good example for me to use libkscreen SetConfigOperation correctly!

and it is easy to change the switch mode to meet Windows 8 alike 
usecase: PC screen (laptop) only, mirror (clone), extend right, Second 
screen only.

>
> For the icons, I don't know where they came from :) but they don't follow the
> Breeze icon set very much. I am on Akademy (the annual KDE conference )right
> now, so I can try to talk to someone from Visual Design Group to design the
> icons for us if you want.
My colleague, a UI designer, did that ;-) I will let him join in the VDG 
to learn how to follow the Breeze theme standard.

Hooray! happy Akademy! my sincere thanks goes to you and VDG`s designer ;-)

>
> Also for future reference, please avoid hardcoding colors into code - it may
> look OK on your computer, but people who use different color theme for KDE
> will have it look ugly and may end up with dark text on dark background or
> vice-versa :-)
I am removing the setStyleSheet, the UI design part, instead follow the 
current Breeze theme 
https://projects.kde.org/projects/kde/workspace/kscreen/repository/revisions/osd/entry/osd/osdwidget.cpp#L81

>
>> There are PC screen only, mirror, extend and second screen only for
>> Laptop users.
>>
>> I want to be merged into master branch, I learn how to contact with
>> other developers, sorry for my poor English ;P
> Awesome! Let me know what you think about what I suggested above, I'm of
> course opened to discussion :-)
Thanks again for your advice ;-)

>
> Daniel
>
>>> Cheers,
>>> Daniel
>> Regards,
>> Leslie Zhai - a KDE developer


-- 
Regards,
Leslie Zhai - a KDE developer





More information about the Kde-hardware-devel mailing list