psifidotos / nowdock-panel

Plasma 5 panel that that creates a plank or mac style zoom effect for its tasks (accompanies the Now Dock Plasmoid)
GNU General Public License v3.0
22 stars 6 forks source link

Request for collaboration #36

Open jsmitar opened 7 years ago

jsmitar commented 7 years ago

Hi regards.

I like your project, your concept and it all. But I think what There are still things missing for be competitive.

I think we can join our projects and make an incredible dock, as good as the plank or any other.

I am currently developing a Dock that has the following ready features. Visibility Modes.

Hide timers:

Alignments

Support partial for when KWin compositing is disabled. Just only one Config Window, for the appearance and behavior.

An Dock interface for QML

Custom window mask exposed to QML. For setting mask accord to taskmanager geometry.

Based totally on technologies KF5 as PlasmaQuick, Corona, PlasmaApplet, PlasmaContainment and etc, all plugins of plasma we can use.

My dock was done from scratch, based on plasmashell but thinking just for contain a TaskManager(or maybe a Plasma::Containment panel for be more precise) not a Desktop, Also it is written in C++14, and is a very Tiny shell :).

Missing features.

Please see this video, is a demo of Visibility Modes https://www.youtube.com/watch?v=Vm2h6Z1QnwA Project: https://github.com/audoban/Candil-Dock

What do you think the proposed?.

Sorry for my English, my native language is Spanish.

psifidotos commented 7 years ago

@audoban hello!!! :)

I am not negative in collaborating but with Now Dock 0.5 version which is going to be released the next days many of the above are already implemented, you could try the master branches to have an idea...

6 Visibility modes Below Active, Below Fullscreen, Windows Cover, Windows Go Below, Auto - Hide, Always Visible(which respects snapping)

automatic masking based always on the dock's contents the transparent areas are allowing the mouse events to go to unnderneath windows

4 Alignments Left,Center,Right, Double (a user can have items both at left and right as in the traditional panel)

respect maximum panel size set by the user

positioning the dock left, right, top, bottom

add plasma applets and plasmoids in the dock with the traditional way

support multiscreen, I believe that my current codepage supports multiscreen with no problem


VERY Interesting Features

Support partial for when KWin compositing is disabled., this is a good idea for setting the zoom factor to 1.0...

Just only one Config Window, for the appearance and behavior., this is also interesting... A good idea would be that we could use your codebase in order to provide the Plasma Panel functionality that it is needed and create one single configuration window for any changes needed...


MISSING FEATURES from Now Dock

support for Wayland, I would love to have help in this!!! my c++ plugin has been abstracted in order to provide the X functionality separately and I have created an abstract interface which must support the functions needed in order everything to work flawlessly...

Custom Interface on DBus (If necessary?), I dont know why this would be needed, what do you have in mind?

A package structure plugin-theme just for the Dock, made with KF5::KPackage, neither this one... I am learning the plasma technologies only when I need them.. :) so I dont know the uses for this.. what are you thinking?

regards, michail

jsmitar commented 7 years ago

I couldn't start NowDock :(. This is the error:

"Error: Error: Could not find a plugin for Panel named org.kde.store.nowdock.panel. at line 1\n\nBacktrace:\n<eval>() at /usr/share/plasma/layout-templates/org.kde.store.nowdock.defaultPanel/metadata.json:1\n  <native>() at -1\n  <native>('org.kde.store.nowdock.defaultPanel') at -1\n  <global>() at 1"

A package structure plugin-theme just for the Dock, made with KF5::KPackage

Is a structure defined for the Dock, as Plasma theme structure https://community.kde.org/Plasma/lookAndFeelPackage. Users can create their own custom themes.

Support for Wayland

This is difficult but I know I can.

Knowing that you already have most of the features ready, I think what is difficult join xD.

psifidotos commented 7 years ago

"Error: Error: Could not find a plugin for Panel named org.kde.store.nowdock.panel. at line 1\n\nBacktrace:\n() at /usr/share/plasma/layout-templates/org.kde.store.nowdock.defaultPanel/metadata.json:1\n () at -1\n ('org.kde.store.nowdock.defaultPanel') at -1\n () at 1"

the above means that now dock panel hasnt been installed correctly... What plasma version are u using? Did you install the Now Dock Panel with the install-global.sh script? Did it show any errors? missing libraries etc?

Is a structure defined for the Dock, as Plasma theme structure https://community.kde.org/Plasma/lookAndFeelPackage. Users can create their own custom themes.

I dont fancy a lot user theming... But we can discuss it... I prefer a lot the user to use the plasma's installed theme and changing the plasma theme based on its needs...

Support for Wayland This is difficult but I know I can.

I will help of course!!! :) But I dont have yet a working wayland environment... :(

Knowing that you already have most of the features ready, I think what is difficult join xD.

Happy to hear!!! :)

jsmitar commented 7 years ago

Log of installation.

-- The C compiler identification is GNU 4.8.5                                                                                                                                               
-- The CXX compiler identification is GNU 4.8.5                                                                                                                                             
-- Check for working C compiler: /usr/bin/cc                                                                                                                                                
-- Check for working C compiler: /usr/bin/cc -- works                                                                                                                                       
-- Detecting C compiler ABI info                                                                                                                                                            
-- Detecting C compiler ABI info - done                                                                                                                                                     
-- Detecting C compile features                                                                                                                                                             
-- Detecting C compile features - done                                                                                                                                                      
-- Check for working CXX compiler: /usr/bin/c++                                                                                                                                             
-- Check for working CXX compiler: /usr/bin/c++ -- works                                                                                                                                    
-- Detecting CXX compiler ABI info                                                                                                                                                          
-- Detecting CXX compiler ABI info - done                                                                                                                                                   
-- Detecting CXX compile features                                                                                                                                                           
-- Detecting CXX compile features - done                                                                                                                                                    
-- Installing in the same prefix as Qt, adopting their path scheme.                                                                                                                         
-- Found KF5Plasma: /usr/lib64/cmake/KF5Plasma/KF5PlasmaConfig.cmake (found version "5.28.0")                                                                                               
-- Found KF5PlasmaQuick: /usr/lib64/cmake/KF5PlasmaQuick/KF5PlasmaQuickConfig.cmake (found version "5.28.0")                                                                                
-- Found KF5WindowSystem: /usr/lib64/cmake/KF5WindowSystem/KF5WindowSystemConfig.cmake (found version "5.28.0")                                                                             
-- Found Gettext: /usr/bin/msgmerge (found version "0.19.2")                                                                                                                                
-- Found PythonInterp: /usr/bin/python (found version "2.7.12")                                                                                                                             
-- Found KF5KDELibs4Support: /usr/lib64/cmake/KF5KDELibs4Support/KF5KDELibs4SupportConfig.cmake (found version "5.28.0")                                                                    
-- Found KF5CoreAddons: /usr/lib64/cmake/KF5CoreAddons/KF5CoreAddonsConfig.cmake (found version "5.28.0")                                                                                   
-- Found KF5: success (found version "5.28.0") found components:  Plasma PlasmaQuick WindowSystem KDELibs4Support CoreAddons                                                                
-- Configuring done
-- Generating done
-- Build files have been written to: /home/audoban/bin/nowdock-panel-master/build
Scanning dependencies of target org.kde.store.nowdock.panel-metadata-json
[ 10%] Generating org.kde.store.nowdock.panel-metadata.json
Unknown property type for key "Keywords" -> falling back to string
Unknown property type for key "NoDisplay" -> falling back to string
Unknown property type for key "X-Plasma-API" -> falling back to string
Unknown property type for key "X-Plasma-MainScript" -> falling back to string
Unknown property type for key "X-Plasma-ContainmentType" -> falling back to string
Generated  "/home/audoban/bin/nowdock-panel-master/build/org.kde.store.nowdock.panel-metadata.json" 

[ 10%] Built target org.kde.store.nowdock.panel-metadata-json
Scanning dependencies of target translations
[ 10%] Built target translations
Scanning dependencies of target nowdockplugin_automoc
[ 20%] Automatic moc for target nowdockplugin
Generating moc source nowdockplugin_automoc.dir/moc_abstractinterf_IQOXKAVOSFY3TM.cpp
Generating moc source nowdockplugin_automoc.dir/moc_nowdockplugin_AQR2TST6CLAPP4.cpp
Generating moc source nowdockplugin_automoc.dir/moc_panelwindow_7JBWH22YM6MPPY.cpp
Generating moc source nowdockplugin_automoc.dir/moc_xwindowinterfa_2OWXFJPNWWGWU5.cpp
Generating moc compilation nowdockplugin_automoc.cpp
[ 20%] Built target nowdockplugin_automoc
Scanning dependencies of target nowdockplugin
[ 30%] Building CXX object libnowdock/CMakeFiles/nowdockplugin.dir/nowdockplugin.cpp.o
[ 40%] Building CXX object libnowdock/CMakeFiles/nowdockplugin.dir/panelwindow.cpp.o
/home/audoban/bin/nowdock-panel-master/libnowdock/panelwindow.cpp: In member function ‘virtual void NowDock::PanelWindow::mousePressEvent(QMouseEvent*)’:
/home/audoban/bin/nowdock-panel-master/libnowdock/panelwindow.cpp:687:51: warning: ‘KPluginInfo Plasma::Applet::pluginInfo() const’ is deprecated (declared at /usr/include/KF5/plasma/applet.h:288) [-Wdeprecated-declarations]
             KPluginInfo info = applet->pluginInfo();
                                                   ^
/home/audoban/bin/nowdock-panel-master/libnowdock/panelwindow.cpp: In member function ‘void NowDock::PanelWindow::addContainmentActions(QMenu*, QEvent*)’:
/home/audoban/bin/nowdock-panel-master/libnowdock/panelwindow.cpp:819:27: warning: ‘bool KAuthorized::authorizeKAction(const QString&)’ is deprecated (declared at /usr/include/KF5/KConfigCore/kauthorized.h:125) [-Wdeprecated-declarations]
             !KAuthorized::authorizeKAction(QStringLiteral("plasma/containment_actions"))) {
                           ^
/home/audoban/bin/nowdock-panel-master/libnowdock/panelwindow.cpp:819:88: warning: ‘bool KAuthorized::authorizeKAction(const QString&)’ is deprecated (declared at /usr/include/KF5/KConfigCore/kauthorized.h:125) [-Wdeprecated-declarations]
             !KAuthorized::authorizeKAction(QStringLiteral("plasma/containment_actions"))) {
                                                                                        ^
[ 50%] Building CXX object libnowdock/CMakeFiles/nowdockplugin.dir/xwindowinterface.cpp.o
[ 60%] Building CXX object libnowdock/CMakeFiles/nowdockplugin.dir/abstractinterface.cpp.o
[ 70%] Building CXX object libnowdock/CMakeFiles/nowdockplugin.dir/nowdockplugin_automoc.cpp.o
[ 80%] Linking CXX shared library libnowdockplugin.so
[ 80%] Built target nowdockplugin
Scanning dependencies of target org.kde.store.nowdock.emptyPanel-metadata-json
[ 90%] Generating org.kde.store.nowdock.emptyPanel-metadata.json
Unknown property type for key "X-Plasma-Shell" -> falling back to string
Unknown property type for key "X-Plasma-ContainmentCategories" -> falling back to string
Generated  "/home/audoban/bin/nowdock-panel-master/build/layout-templates/org.kde.store.nowdock.emptyPanel-metadata.json" 

[ 90%] Built target org.kde.store.nowdock.emptyPanel-metadata-json
Scanning dependencies of target org.kde.store.nowdock.defaultPanel-metadata-json
[100%] Generating org.kde.store.nowdock.defaultPanel-metadata.json
Unknown property type for key "X-Plasma-Shell" -> falling back to string
Unknown property type for key "X-Plasma-ContainmentCategories" -> falling back to string
Generated  "/home/audoban/bin/nowdock-panel-master/build/layout-templates/org.kde.store.nowdock.defaultPanel-metadata.json" 

[100%] Built target org.kde.store.nowdock.defaultPanel-metadata-json
[ 10%] Built target org.kde.store.nowdock.panel-metadata-json
[ 10%] Built target translations
[ 20%] Automatic moc for target nowdockplugin
[ 20%] Built target nowdockplugin_automoc
[ 80%] Built target nowdockplugin
[ 90%] Built target org.kde.store.nowdock.emptyPanel-metadata-json
[100%] Built target org.kde.store.nowdock.defaultPanel-metadata-json
Install the project...
-- Install configuration: "RELEASE"
-- Installing: /usr/share/locale/el/LC_MESSAGES/plasma_applet_org.kde.store.nowdock.panel.mo
-- Installing: /usr/share/locale/pl/LC_MESSAGES/plasma_applet_org.kde.store.nowdock.panel.mo
-- Installing: /usr/share/locale/ro/LC_MESSAGES/plasma_applet_org.kde.store.nowdock.panel.mo
-- Installing: /usr/share/locale/zh_TW/LC_MESSAGES/plasma_applet_org.kde.store.nowdock.panel.mo
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/code
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/code/LayoutManager.js
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/config
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/config/main.xml
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/icons
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/icons/splitter.png
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/images
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/images/panel-west.png
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/ui
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/ui/AddWidgetVisual.qml
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/ui/AppletItem.qml
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/ui/ConfigOverlay.qml
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/ui/MagicWindow.qml
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/ui/PanelBox.qml
-- Up-to-date: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/ui/main.qml
-- Installing: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/contents/ui/NowDockConfiguration.qml
-- Installing: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/metadata.desktop
-- Installing: /usr/share/plasma/plasmoids/org.kde.store.nowdock.panel/metadata.json
-- Installing: /usr/share/metainfo/org.kde.store.nowdock.panel.appdata.xml
-- Installing: /usr/share/kservices5/plasma-applet-org.kde.store.nowdock.panel.desktop
-- Installing: /usr/lib64/qt5/qml/org/kde/nowdock/libnowdockplugin.so
-- Up-to-date: /usr/lib64/qt5/qml/org/kde/nowdock/qmldir
-- Up-to-date: /usr/share/plasma/layout-templates/org.kde.store.nowdock.defaultPanel
-- Up-to-date: /usr/share/plasma/layout-templates/org.kde.store.nowdock.defaultPanel/contents
-- Up-to-date: /usr/share/plasma/layout-templates/org.kde.store.nowdock.defaultPanel/contents/layout.js
-- Installing: /usr/share/plasma/layout-templates/org.kde.store.nowdock.defaultPanel/metadata.desktop
-- Installing: /usr/share/plasma/layout-templates/org.kde.store.nowdock.defaultPanel/metadata.json
-- Installing: /usr/share/metainfo/org.kde.store.nowdock.defaultPanel.appdata.xml
-- Installing: /usr/share/kservices5/plasma-layout-template-org.kde.store.nowdock.defaultPanel.desktop
-- Up-to-date: /usr/share/plasma/layout-templates/org.kde.store.nowdock.emptyPanel
-- Up-to-date: /usr/share/plasma/layout-templates/org.kde.store.nowdock.emptyPanel/contents
-- Up-to-date: /usr/share/plasma/layout-templates/org.kde.store.nowdock.emptyPanel/contents/layout.js
-- Installing: /usr/share/plasma/layout-templates/org.kde.store.nowdock.emptyPanel/metadata.desktop
-- Installing: /usr/share/plasma/layout-templates/org.kde.store.nowdock.emptyPanel/metadata.json
-- Installing: /usr/share/metainfo/org.kde.store.nowdock.emptyPanel.appdata.xml
-- Installing: /usr/share/kservices5/plasma-layout-template-org.kde.store.nowdock.emptyPanel.desktop
jsmitar commented 7 years ago

the build is normal, there was no problem. I am using Plasma 5.8.2 and KF5 5.28.0, and yes, I use install-global.sh script

KPluginInfo info = applet->pluginInfo();
Regarding warnings, you should stop using Plasma::Applet::pluginInfo() method and use Plasma::Applet::pluginMetaData() instead, Just a suggestion :+1:
psifidotos commented 7 years ago

the build is normal, there was no problem. I am using Plasma 5.8.2 and KF5 5.28.0, and yes, I use install-global.sh script

I have in my system Plasma 5.8.4 and KF5 5.28.0, in Frameworks 5.28 the json metadata were introduced so as it seems they broke something , and they shouldnt!!! I think that even though everything is working correctly I didnt try with KF5-5.28 to add a new now dock panel, I am using the one added in previous iterations... I will see what is happening also in my system concerning this... https://github.com/psifidotos/nowdock-panel/issues/37

KPluginInfo info = applet->pluginInfo();

I saw that this is deprecated but when I tried to use Plasma::Applet::pluginMetaData() I saw that it was introduced >=5.27 , am I wrong? So I decided to wait a bit more because many distributtions will stack to 5.26 a little more...

psifidotos commented 7 years ago

the build is normal, there was no problem. I am using Plasma 5.8.2 and KF5 5.28.0, and yes, I use install-global.sh script

in my Plasma 5.8.4 and Frameworks 5.28 it works ok.... Did you make a log out, log in after you installed it? After each update of the dock, I make in my system:

kquitapp plasmashell | kstart plasmashelll

psifidotos commented 7 years ago

https://github.com/psifidotos/nowdock-plasmoid/issues/58#issuecomment-264864489 , this is a discussion for next 0.5 release!

psifidotos commented 7 years ago

@audoban how are you ?? Do you still want to collaborate?

I would love to have you feedback around 0.5 version of Now Dock... The Now Dock has reached a point in which its own panel implementation might be needed in order to provide a unified settings experience...

What do you think ?

One more information, I had a little discussion with Martin from KWin around Wayland support... I think that through the discussion, an implementation road appeared through KWayland. Now Dock 0.5 has already prepared the use-case for Wayland from the interaction and behavior point of view. What is missing is the wayland implementation for the class found in nowdock plugin. the discussion: https://mail.kde.org/pipermail/plasma-devel/2016-December/062937.html

jsmitar commented 7 years ago

I would love to have you feedback around 0.5 version of Now Dock...

I'm not home right now. But at night I try it Congratulations for your release. :+1:

@psifidotos I currently working on my Dock. I'm writing a containment from scratch, and I have configuration solved. But I could help you with that.

About KWayland, I have not yet begun to study it, but I think his contribution is excellent. Now also I will could add support to my dock.

psifidotos commented 7 years ago

@psifidotos I currently working on my Dock. I'm writing a containment from scratch, and I have configuration solved. But I could help you with that.

nice to hear!!! I have to think though if I am also going to follow the from scratch road or interact with the plasma developers to add functionality and support in the default plasma implementation to support the use case...

psifidotos commented 7 years ago

@audoban I look a bit your code at: https://github.com/audoban/Candil-Dock , it looks really nice !!! Nice job!! :)

I am starting to think also what can be done in order to drop the plasma's default configuration and use my code to do this job.

Question 1: As I understand it this could be possible my providing a second panel implementation for plasma (either one that subclasses panel or the containment class) do you know if this is possible? (this will probably act as a plugin for plasma)

Question 2: In your code you subclass also the corona class and through this you provide a different executable... Can you give me some insight about this design decision?

thanks a lot!!!

jsmitar commented 7 years ago

I am no yet try NowDock, sorry I promise which today I try it 👍

Question 1: As I understand it this could be possible my providing a second panel implementation for plasma (either one that subclasses panel or the containment class) do you know if this is possible? (this will probably act as a plugin for plasma)

I had thought of that before, But apparently you can't not replace or add a new panel for plasma shell and change behavior and UI original configuration. I don't know, but CandilDock uses PlasmaQuick api wich is the api private of plasmashell, CandilDock, currently is not a panel plugin, is a plasma Shell Containment Custom Panel written from scratch, inspired on original code of plasmashell panel and without (Desktop containment), then is a very very tiny shell. But is not a plug in.

Question 2: In your code you subclass also the corona class and through this you provide a different executable... Can you give me some insight about this design decision?

I want have the totally control of panel geometry, add a visibilitymanager, also wanted to have full control of the window mask, also wanted just only one UI Configuration window. Also I wanted screen managment. I want a zoom effect wich easy to implement.

Then I inherit of plasmaquick::containment and the compatibility with plasmoids is ensured, write my Plasma::Corona, and I have control the default shell and plugins. I have my own DockView.qml and I can managed perfectly the window mask. I control plugin configuration interface with, PlasmaQuick::Containment::showConfigurationInterface(), And I have a visibility manager for dodge window, dodge all windows, auto hide and reserve a screen edge.

I also made a fork PlasmaCore::IconItem for improve scaling with zoomeffect, because KQuickControlsAddons::QIconItem consumes lots ram

psifidotos commented 7 years ago

Oh.... You have done fantastic job!!!

Your implementation fixes many of my issues!!!

including!!!

I also made a fork PlasmaCore::IconItem for improve scaling with zoomeffect, because KQuickControlsAddons::QIconItem consumes lots of ram

yes it does!!! If you managed this, this is great news!!!

I also like the idea that by owning your executable, crashing is not affecting the plasmashell and the opposite!!!

I start to fancy that road a lot!!!

One small notice about auto-hide, I show in your implementation that you use kwin slide in and out... Unfortunately this is not going to work well, qt stops painting when the window is out of the boundaries of the screen and as consequense all the animations are played all together when the window in back in the boundaries of the screen. To solve this I use just masking for the window and a slide in-out only for the contents which are inside that window.

I think that for Now Dock 0.6 I will try your path!!!! :) I hope we can co-operate in this!!! We could even rename it to Candi Dock if things move well...

jsmitar commented 7 years ago

Oh.... You have done fantastic job!!!

Thank's a lot.

I also made a fork PlasmaCore::IconItem for improve scaling with zoomeffect, because KQuickControlsAddons::QIconItem consumes lots of ram

You can copy IconItem of my repository, if you want.

I show in your implementation that you use kwin slide in and out...

If you refer to Screen edge API, I don't uses it, because I can't add timers, then I don't like api. The slide effect is done in QML with margins. Dock.qml maybe still there some glitches in the animation?

I hope we can co-operate in this

Sure I help you

We could even rename it to Candi Dock if things move well...

Wow change the name!!, well, I am also willing to change the name of my Dock, or maybe join two names,

But I don’t know, because my implementation is very distinct of plasmashell, and I am sure which NowDock-plasmoid will need much changes into CandilDock shell. Specially the geometry the window because is delegated to qml view, IconSize and factorZoom, and user don't have control about panel length, because is auto calculated.

However you can always take part of my code and adapt it.

You decided.

And I would be happy to collaborate and make the best Dock for KDE 💯

Thanks a lot for your feedback 👍 , I will install now NowDock 0.5 and write feedback for you.

jsmitar commented 7 years ago

Hi @psifidotos I've tried NowDock 0.5

But I found some issues. The zoom effect not function when mouse enter to dock

The timer for showing is very important, because sometimes the user for mistake move the mouse into the panel, and will could breaks flow work of user.

Otherwise works well :) and looks great

psifidotos commented 7 years ago

But I don’t know, because my implementation is very distinct of plasmashell, and I am sure which NowDock-plasmoid will need much changes into CandilDock shell. Specially the geometry the window because is delegated to qml view, IconSize and factorZoom, and user don't have control about panel length, because is auto calculated.

I am not so concerned about that... I am more concerned in a more general way... Now Dock should behave exactly as a plasma corona (excluding the DesktopContainment) and a plasma containment(panel) because the user should be able to add any plasmoids wants to, including the now dock plasmoid one and the plasmoids should work as expected... The window geometry is not such a big issue because in Now Dock 0.5 I subclassed a QQuickWindow through the qml plugin in order to provide the mask. Mask is set all the time from inside the qml Now Dock Containment code... I believe that being as close as possible to the original plasma codebase many issues from the above will be solved (meaning plasmoid compatibility).

There are of course two things that are in question: Currently Now Dock in order for the user to add plasmoids in it or set its properties, the desktop's widgets must be in unlocked state (!immutable). So there are also the following concerns, I dont know if there is a dbus interface for plasmashell which allows me to do:

  1. track plasmashell immutable state
  2. change plasmashell immutable state
  3. show plasmashell's widgets explorer

the above are not so necessary but they add a lot in a more unified experience with plasma..

But I found some issues. The zoom effect not function when mouse enter to dock

zoom effect works only when the widgets are in locked state

The timer for showing is very important, because sometimes the user for mistake move the mouse into the panel, and will could breaks flow work of user.

If we are talking about the same thing there is a timer for showing/hiding etc. but the plasma must be in a locked state.

Otherwise works well :) and looks great

thanks a lot!!!

psifidotos commented 7 years ago

I managed to use your code :-) and very soon I obdained my corona and containments... I even used my containment layout and I added plasmoids in it... Many things are missing but I believe that soon enough something working will arise... My only disappointment that far is that unlocking/locking plasmashell does not affect the Now Dock corona... I wish there was a way to solve this...

jsmitar commented 7 years ago

I managed to use your code :-) and very soon I obdained my corona and containments... I even used my containment layout and I added plasmoids in it... Many things are missing but I believe that soon enough something working will arise...

awesome!!

My only disappointment that far is that unlocking/locking plasmashell does not affect the Now Dock corona... I wish there was a way to solve this...

Maybe with dbus? If you find out, let me know.

psifidotos commented 7 years ago

Maybe with dbus? If you find out, let me know.

dbus is the only way I know but plasmashell dbus interface does not support yet these three functions. It isnt difficult to have a patch during the week but I hope the Plasma 5.9 window hasnt closed yet and the plasma developers will accept patches for it

rokups commented 7 years ago

Maybe to increase chances of potential contributors we could get some kind of manual on how to set up development environment for nowdock? Some kind of testing/debugging tutorial maybe? Due to panel being involved this is probably more complex than testing simple plasmoid eh?

psifidotos commented 7 years ago

@audoban things are moving here... I have two issues I dont know if you have some ideas to throw in the table:

I have tried in my dockview code:

  1. QAction *act = m_corona->actions()->action(QStringLiteral("lock widgets"));
  2. m_corona->setImmutability(Plasma::Types::UserImmutable);
  3. containment()->setImmutability(Plasma::Types::UserImmutable);

the above even though are changing the plasmoid.immutable value in the docks contents the signaling is not occuring...

do you have any ideas?

thanks a lot ...

psifidotos commented 7 years ago

@rokups I think that this could be done in the process... If someone wants to contribute, I can guide him in the basics and this process could become a small guide... Either way these days are so fragile from development point of view... version 0.6 probably will change a lot in the architecture in order to solve some fundamentals problems... I dont know if this is the right moment to create the manual...

version 0.6 probably will live outside plasma on its own executable but it will behave the same and will provide a unified experience with plasma...

jsmitar commented 7 years ago

@psifidotos Do you implement the shell kpackage plugin? You use your own toolbox or use org.kde.toolbox?

jsmitar commented 7 years ago

I have some contextual menus. Preferences. Lock or unlock. And add widgets

psifidotos commented 7 years ago

I based my kpackage structure to your implementation but I havent created yet the configuration window, I didnt notice anything about toolbox, what is it needed? Where can I look in your code?

Στις 20 Δεκ 2016 12:55, ο χρήστης "Smith AR" notifications@github.com έγραψε:

@psifidotos https://github.com/psifidotos Do you implement the shell kpackage plugin? You use your own toolbox or use org.kde.toolbox?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/psifidotos/nowdock-panel/issues/36#issuecomment-268214262, or mute the thread https://github.com/notifications/unsubscribe-auth/ACHSGgn9xuPDtfaYAWqyxX_CRZAveAnXks5rJ7Q4gaJpZM4LDrsZ .

psifidotos commented 7 years ago

I didnt see anything relevant in your code where do l look? Candil didnt show me a right click menu either I thought it didnt provide any...

Στις 20 Δεκ 2016 12:58, ο χρήστης "Smith AR" notifications@github.com έγραψε:

I have some contextual menus. Preferences. Lock or unlock. And add widgets

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/psifidotos/nowdock-panel/issues/36#issuecomment-268214709, or mute the thread https://github.com/notifications/unsubscribe-auth/ACHSGiOdXmvshivoQibVTC5pcxASOMPEks5rJ7S_gaJpZM4LDrsZ .

psifidotos commented 7 years ago

@audoban you can follow also the discussion at: https://phabricator.kde.org/D3754 concerning things that are missing from dbus in order to provide good communication through dbus that we discussed earlier...

psifidotos commented 7 years ago

I have some contextual menus. Preferences. Lock or unlock. And add widgets

@audoban I can not find in your code how you did set the contextual menus even though I can trigger them in Candil..

the above was accepted in plasma so from Plasma 5.9 you will be able to open the widgets explorer through dbus...

jsmitar commented 7 years ago

I didnt see anything relevant in your code where do l look? Candil didnt show me a right click menu either I thought it didnt provide any...

screenshot_20161220_125533

The configure action is provide for org.kde.toolbox.

Add widgets action is provide for containment class. containment_p.cpp We should replace the default behavior. To make a call from dbus.

jsmitar commented 7 years ago

With this signal we can add functionality to add widgets. (https://github.com/KDE/plasma-framework/blob/16b478a8275f7718f13f6d29a0f6a6caafbc78f8/src/plasma/containment.h#L237)

psifidotos commented 7 years ago

With this signal we can add functionality to add widgets.

nice!!!!

I believe that I can try to merge in the plasma the other 3 missing from dbus plasmashell interface:

@audoban I found also my error!!!

  1. the loadLayout was missing from my corona creation
  2. I added your configuration window and after your window was triggering a saveConfig ,then on the next restart the dock shows the contextmenus correctly!!!

one small problem the configuration windows from plasmoids do not use the plasma's theme... following screenshot shows the issue...

image

jsmitar commented 7 years ago

easy, set this var. https://github.com/audoban/Candil-Dock/blob/containment-dev/main.cpp#L64

jsmitar commented 7 years ago

@psifidotos We should disable "add widgets" action for plasma minor to 5.8

psifidotos commented 7 years ago

@audoban

easy, set this var. https://github.com/audoban/Candil-Dock/blob/containment-dev/main.cpp#L64

actually by removing it, fixed that issue for me, and it fixed also the font in the configuration window of Now Dock

psifidotos commented 7 years ago

@audoban

We should disable "add widgets" action for plasma minor to 5.8

I aggree...

you could also take a look at: https://phabricator.kde.org/D3769 I hope this is accepted also...

jsmitar commented 7 years ago

actually by removing it, fixed that issue for me, and it fixed also the font in the configuration window of Now Dock

very rare.

jsmitar commented 7 years ago

Why a boolean? If there are 3 types of immutability. Plasma::Types::ImmutabilityType

psifidotos commented 7 years ago

Because then it should be integer and I dont know how the plasma devs would respond... Can you think of a case in your app that needs separation between SystemImmutable and UserImmutable?

Στις 21 Δεκ 2016 00:56, ο χρήστης "Smith AR" notifications@github.com έγραψε:

Why a boolean? If there are 3 types of immutability. Plasma::Types::ImmutabilityType https://api.kde.org/frameworks/plasma-framework/html/classPlasma_1_1Types.html#a1945675d1b90a6c292e7ad186f39e8b9

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/psifidotos/nowdock-panel/issues/36#issuecomment-268383507, or mute the thread https://github.com/notifications/unsubscribe-auth/ACHSGl8i3ZLLJsyPGjkxeIZ-RfqrWvprks5rKF0JgaJpZM4LDrsZ .

jsmitar commented 7 years ago

Suppose immutability is System Immutable. Then from NowDock or CandilDock, the user want unlock the widgets. The dock should call toggleImmutable, but this not unlock because, is SystemImmutable. What should happen?

Please view this. plasma/plasmashell/unlockedDesktop

jsmitar commented 7 years ago

perhaps there is no problem. What do you think?

psifidotos commented 7 years ago

I dont think there will be any problem... I tested the patch and it works as expected... On the other hand if plasmashell has been locked in a way that this Qaction does not unlock it, then an external app it shouldnt be able to unlock it I think.

Even with the simplicity of the current patch I am not sure that plasma devs will accept this functionality to become public

Στις 21 Δεκ 2016 1:46 π.μ., ο χρήστης "Smith AR" notifications@github.com έγραψε:

perhaps there is no problem. What do you think?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/psifidotos/nowdock-panel/issues/36#issuecomment-268392525, or mute the thread https://github.com/notifications/unsubscribe-auth/ACHSGtzgXy23VRLfhnKwtyfldKg0ueH0ks5rKGjdgaJpZM4LDrsZ .

psifidotos commented 7 years ago

@audoban unfortunately both commits for plasma were dropped from plasma devs.

And there is also an information that in wayland a window can not even alter its position except if it has specific authorization from kwin

psifidotos commented 7 years ago

@audoban Martin responded that from Plasma 5.10 or 5.11 there will be a way for external docks to gain access in the kwayland through a root owned configuration file. That means that the user will be able to allow a dock to gain access in KWayland...

I suppose after a very difficult contact I had with the plasma developers, very difficult day for me in that matter. The only that remains is to follow our lonely road and try to create are own executable. DBus methods concerning the functionality we need will not be added in the plasmashell, this is a desing decision from its developers.

So, do we continue are road?

jsmitar commented 7 years ago

Is sad. Your requests seem to me very necessary to achieve a better experience.

I will not abandon the initial design, because it gives me a lot of freedom. You have a great advantage in that sense because you can have both implementations. As a plasmashell plugin and standalone executable.

Let's continue to collaborate to provide a good NowDock and CandilDock experience.

With regard to KWayland I am concerned that we can not know the geometry of windows and use the window tasks plugin. Hopefully, Martin will make it easy for other shells.

psifidotos commented 7 years ago

Is sad. Your requests seem to me very necessary to achieve a better experience.

I agree, I am also disappointed and a little angry. The only good is that I have done what it was necessary in my regard...

I suppose that when a concrete standalone dock exists the users will start to wonder why the dock is not cooperating smoothly with the plasmashell, only that this time I will forward to them the two patches that wasnt accepted in plasmashell and the discussion in the mailing list concerning this situation. I was thinking at some point yesterday that plasmashell does not provide an api for panels, this is enough for external developers to not support alternative panels and docks inside plasma.

I will not abandon the initial design, because it gives me a lot of freedom. You have a great advantage in that sense because you can have both implementations. As a plasmashell plugin and standalone executable.

I dont know. All this effort for Now Dock 0.5 in order to become a plasmashell plugin and now a needed change to create it standalone. Needs a lot of effort and energy, I will lower the engines :) we have also a life to live...

Let's continue to collaborate to provide a good NowDock and CandilDock experience.

I definitely agree in that. Being honest I hope that in some point we will be able to merge them....

With regard to KWayland I am concerned that we can not know the geometry of windows and use the window tasks plugin. Hopefully, Martin will make it easy for other shells.

With the latest mails we exchanged, Martin said that no kcm can be provided for this feature (allowing other applications except plasmashell to access kwayland) and this could be only the admins and distros responsibility to alter. So a user with root access and distros can fix this...

you can read the discussion at: https://mail.kde.org/pipermail/plasma-devel/2016-December/063391.html

jsmitar commented 7 years ago

I definitely agree in that. Being honest I hope that in some point we will be able to merge them....

I am ready for merging our projects. Let's just discuss how we're going to do it.

Let's concentrate on launching a version for X and then after one for wayland.

JenaPlinsky commented 7 years ago

Great guys !!! ...keep it up

psifidotos commented 7 years ago

Let's concentrate on launching a version for X and then after one for wayland.

oh, yes!! Let's through out what we have in our minds freely and with open heart!!

Ok, I am going to tell you in what point I am right now in nowdock in order to use your architecture as foundation. This is the design I had in my mind and it is almost finished actually but I dont even take it for granted, I like a lot your coding style:

yesterday I was adding functionality from the plasma plugin into the corona infrastructure and more spesific the old settings window.... This went so good that only thing that remains, in order to have a fully functional nowdock in a stadanlone executable, is to add the visibility and masking techniques that were used in the previous version. I dont think this is more that one day work, only problem is that next week I'll be missing for holidays... :)

So what I throw on the table is to use the above as a start and build on top of it. Of course that is just a proposal...

Naming for the new thing: Actually my only small concern is that Now Dock has a small brand already in the kde community. But to be honest I might also fancy the idea to give it another name in order to give a point of this change in the codebase (that this is not a plasma plugin any more (except the plasmoid) but a standalone executable)

after the name, we of course need a logo also... :) We could ask the plasma VDG or I fancy a lot the work of https://store.kde.org/member/438078/ (we could beg him for a logo... :) )

jsmitar commented 7 years ago

Actually my only small concern is that Now Dock has a small brand already in the kde community. But to be honest I might also fancy the idea to give it another name in order to give a point of this change in the codebase (that this is not a plasma plugin any more (except the plasmoid) but a standalone executable)

I agree. I think we should choose a new name that marks the beginning of our new Dock.

Ok, I am going to tell you in what point I am right now in nowdock in order to use your architecture as foundation. This is the design I had in my mind and it is almost finished actually but I don’t even take it for granted, I like a lot your coding style:

shell (qml code for the shell) corona (the main executable of the app) containment (qml code for containment) plasmoid (the tasks plasmoid) panel layouts (are going to be dropped totally as they are not needed any more) localization support, will remain for both the app and the plasmoid

I'm reading your code of the branch Corona, and I see which you use some things from CandilDock. But your class VisibilityManager, is a very different to my class, you consider which your class is better for our next Dock?, or you want reuse and add more functionality to my class?, because I consider which my class is more atomic. If you want use your VisibilityManager, please consider add timers for hide and show, is a very important feature.

I want to continue using your UI style for dock, is beautiful.

The mask, please explain your strategies for managing this, I had some visual glitches on CandilDock.

Let's use my fork PlasmaCore::IconItem uses less ram and scale very well.

Your cmake scripts for generate .desktop files are great, let's continue using them, also I see which you drop KDE4Libs dependence, it's a good decision, because I do not like to use old apis :).

Do you want use your branch Corona or my containmet-dev branch as base?.

I want to support custom themes. This week I present a proposal of how the themes will be.

suggest Let's use astyle before each commit to keep a clean code, and a uniform style. astylerc script You can integrate astyle with qtcreator.