Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request for collaboration #36

Open
jsmitar opened this issue Dec 4, 2016 · 82 comments
Open

Request for collaboration #36

jsmitar opened this issue Dec 4, 2016 · 82 comments

Comments

@jsmitar
Copy link

jsmitar commented Dec 4, 2016

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.

  • Panel normal(reserve area on the screen)
  • Auto hide
  • Dodge Active window (Inspired on Plank)
  • Dodge Windows (Inspired on Plank)

Hide timers:

  • Show timer
  • Hide timer

Alignments

  • Left, Center with offset, right or fill screen width or height as Plank

Positioning

  • Common: TopEdge, BottomEdge, LeftEdge, RightEdge

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.

  • TaskManager (This is where your Dock enter)
  • A plasmoid containment(Again your Dock)
  • Support for Wayland
  • Support multiscreen
  • Custom Interface on DBus (If necessary?)
  • A package structure plugin-theme just for the Dock, made with KF5::KPackage

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
Copy link
Owner

psifidotos commented Dec 4, 2016

@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
Copy link
Author

jsmitar commented Dec 5, 2016

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
Copy link
Owner

"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!!! :)

@psifidotos psifidotos changed the title Request for colaboration Request for collaboration Dec 5, 2016
@jsmitar
Copy link
Author

jsmitar commented Dec 5, 2016

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
Copy link
Author

jsmitar commented Dec 5, 2016

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 👍

@psifidotos
Copy link
Owner

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...
#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
Copy link
Owner

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
Copy link
Owner

psifidotos/nowdock-plasmoid#58 (comment) , this is a discussion for next 0.5 release!

@psifidotos
Copy link
Owner

@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
Copy link
Author

jsmitar commented Dec 15, 2016

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. 👍

@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
Copy link
Owner

@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
Copy link
Owner

@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
Copy link
Author

jsmitar commented Dec 17, 2016

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
Copy link
Owner

psifidotos commented Dec 17, 2016

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
Copy link
Author

jsmitar commented Dec 17, 2016

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
Copy link
Author

jsmitar commented Dec 17, 2016

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
Copy link
Owner

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
Copy link
Owner

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
Copy link
Author

jsmitar commented Dec 18, 2016

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
Copy link
Owner

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
Copy link

rokups commented Dec 19, 2016

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
Copy link
Owner

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

  • plasmoid.immutable changes are not triggered... I can not lock/unlock my widgets

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?

  • the second issue, no menus... right clicking on plasmoids or on the dock (containment) to menus appearing... I can emulate it if I want to (by using in my dock the containment interface code that is responsible for this) but I think that this is a connection that I have established some how...

thanks a lot ...

@psifidotos
Copy link
Owner

psifidotos commented Dec 20, 2016

@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
Copy link
Author

jsmitar commented Dec 20, 2016

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

@jsmitar
Copy link
Author

jsmitar commented Dec 20, 2016

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

@psifidotos
Copy link
Owner

psifidotos commented Dec 20, 2016 via email

@psifidotos
Copy link
Owner

psifidotos commented Dec 20, 2016 via email

@psifidotos
Copy link
Owner

@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
Copy link
Owner

@audoban , everything ok with the astyle and I have sent also the commit, this is for .cpp and .h files. Are we going to use something similar for qml files?

@psifidotos
Copy link
Owner

psifidotos commented Dec 24, 2016

@audoban

If you want use your VisibilityManager, please consider add timers for hide and show, is a very important feature.

yes of course, there is already one timer in VisibilityManager I could add and a second one. One small detail, to check we are talking about the same thing...\

hide timer: after the mouse leaves the dock, is the time waited before goes hidden in a case the mouse does not enter again.

show timer: the dock is hidden, if an event received (e.g. active window changed) except mouse triggered the edge, the timer holds the time after which the dock could be shown.

is that what we are talking about?

Question: How did you handle in your code the edge triggerring event? (currently if the dock is covered from other windows (fullscreen, active etc.) does not trigger to show)

In my old code I had a second hidden window which was ontop of everything and was triggering the dock that was underneath to show above...

@jsmitar
Copy link
Author

jsmitar commented Dec 24, 2016

Hi @psifidotos

in order to not update the mask all the time I have 4 states for masking:

My strategy is similar to Plank Dock

dockview.h has a function for set the mask, it's all. But shell/Dock.qml I manage the mask the accord to thickness and length panel and position of the containment. And when the dock is hidden I setting thickness mask to 1 pixel. Also dock window is always on top, and I never change this.

Question: How did you handle in your code the edge triggerring event? (currently if the dock is covered from other windows (fullscreen, active etc.) does not trigger to show)

When a window is top o fullscreen, you can't show dock because the dock window is behind of active window. Even plank and plasmashell panel, has problem with this. I think it's a limitation of X or WindowManager, this can not be fixed. When a window is active but is not has not top state, I don't having problems, because always exist 1 pixel of mask in the edge.

In my old code I had a second hidden window which was ontop of everything and was triggering the dock that was underneath to show above...

it was an ingenious solution but a bit ugly xD. In the next dock, just we a need dockview window.

what is atomic?

My VisibilityManager just know the geometry absolute of dock in the current screen (x, y, LengthxThickness), id Window view, and it does not matters mask of dock. When I update the panel geometry, VisibilityManager recalculate the state(Visible, Hidden), and update struts whether mode is Normal.
VisibilityManager just have 4 functions.

  • show: used when mouse move to edge, then update state to Visible when timer for show is triggered,
  • restore: used when mouse move out of edge, then update to last state(Hidden or Visible), when timer hide is triggered.
  • showTemporarily: show the dock for some seconds.
  • showImmediately: same as above, but skipping timer for show, used when a task need attention.
  • showForce: force Visible state, used for configview when is open.

Some pros is that my visibilitymanager is already abstracted for X case

Is a good point.

I'm accord of use your class, but I think we can simplify the interface.

lets go for mine and we can move it if you want to in another repository

Yes, I want a new repository.

@jsmitar
Copy link
Author

jsmitar commented Dec 24, 2016

@psifidotos

hide timer: after the mouse leaves the dock, is the time waited before goes hidden in a case the mouse does not enter again.

show timer: the dock is hidden, if an event received (e.g. active window changed) except mouse triggered the edge, the timer holds the time after which the dock could be shown.

Yes, If that's what I'm talking about, but just for mouse events.

@jsmitar
Copy link
Author

jsmitar commented Dec 24, 2016

@psifidotos

, everything ok with the astyle and I have sent also the commit, this is for .cpp and .h files. Are we going to use something similar for qml files?

I using qtcreator qml formatter. It is not the best, but it is what there is.
I am very obsessed with the style and order of the code, please use it with 4 spaces, not tabs characters.
The reason is that the tabs are very variable, sometimes they are 4 or 8 spaces, I don't like tabs

@jsmitar
Copy link
Author

jsmitar commented Dec 24, 2016

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

Do you have any suggestions ??

I suggest Iris Dock.

@psifidotos
Copy link
Owner

But shell/Dock.qml I manage the mask the accord to thickness and length panel and position of the containment. And when the dock is hidden I setting thickness mask to 1 pixel. Also dock window is always on top, and I never change this.

ok, I was already supporting this behavior but it wasnt the default, now it is the default ;) . If we stick with this a lot of code from VisibilityManager and qml can be removed... ;)

I'm accord of use your class, but I think we can simplify the interface.

of course, no problem at all... If we stick with Dock Type window all the time then much code can be cleaned up from visibilitymanager and xwindowinterface and abstractinterface also...

Yes, If that's what I'm talking about, just for mouse events.

easy .... :)

The reason is that the tabs are very variable, sometimes they are 4 or 8 spaces, I don't like tabs.

I added the astylerc from candil... I believe this is ok there...

I suggest Iris Dock.

Give me 2-3 days in case I come up with another proposal... But I kind of like it already !!!

image

Do you mean the flower or the eye or the combination of colors in general?
I kind of fond the flower...

Yes, I want a new repository.

would you like to push everything from nowdockpanel into an IrisDock repository or create a new one with not history in it (based on the corona branch)? in my space? either way we must be both administrators and commiters... Is this possible in github?

@jsmitar
Copy link
Author

jsmitar commented Dec 24, 2016

@psifidotos

Do you mean the flower or the eye or the combination of colors in general?
I was thinking of both
would you like to push everything from nowdockpanel into an IrisDock repository or create a new one with not history in it (based on the corona branch)? in my space? either way we must be both administrators and commiters... Is this possible in github?

Just create a repository where we both have all permissions, but we need decide a name. Without history.

@jsmitar
Copy link
Author

jsmitar commented Dec 24, 2016

@psifidotos

of course, no problem at all... If we stick with Dock Type window all the time then much code can be cleaned up from visibilitymanager and xwindowinterface and abstractinterface also...

Please leave this task to me.

@psifidotos
Copy link
Owner

we need decide a name

Ok, I have also 2 suggestions:

Plaid Dock
(from the fabric)
image

(ContarDo)ck
-from the coffee- but I dont know how to call it in english... :)
image

@jsmitar
Copy link
Author

jsmitar commented Dec 24, 2016

Plaid Dock

I don't like xD

(ContarDo)ck
-from the coffee- but I dont know how to call it in english... :)

Latte Dock, art in coffee? Arte del latte

@psifidotos
Copy link
Owner

psifidotos commented Dec 24, 2016 via email

@jsmitar
Copy link
Author

jsmitar commented Dec 24, 2016

Contar have another mean in Spanish, sounds rare for me.
I prefer Latte Dock.

@psifidotos
Copy link
Owner

psifidotos commented Dec 24, 2016 via email

@jsmitar
Copy link
Author

jsmitar commented Dec 25, 2016

Ok, I like the new name.

@psifidotos
Copy link
Owner

psifidotos commented Dec 25, 2016 via email

@psifidotos
Copy link
Owner

psifidotos commented Dec 25, 2016 via email

@psifidotos
Copy link
Owner

psifidotos commented Dec 25, 2016 via email

@jsmitar
Copy link
Author

jsmitar commented Dec 25, 2016

Latte.org have linux binary, but is a very old software 1999. And math latte have recent versions. We can use latte-shell, latte-dock, lattedock for binary.

@psifidotos
Copy link
Owner

psifidotos commented Dec 25, 2016 via email

@psifidotos
Copy link
Owner

@audoban

https://github.com/psifidotos/Latte-Dock I have send you an invitation!! Lets Latte it!!! :)

@psifidotos
Copy link
Owner

@JenaPlinsky
Copy link

Merry Christmas Latte-Dock

@psifidotos
Copy link
Owner

Merry Christmas to everyone!!!! ;)

@jsmitar
Copy link
Author

jsmitar commented Dec 25, 2016

Merry Christmas

@psifidotos
Copy link
Owner

image

@psifidotos
Copy link
Owner

@audoban , do you have time to look at some logos ? https://github.com/psifidotos/Latte-Dock/issues/1

@kupiqu
Copy link

kupiqu commented Jan 13, 2017

Guys, you are amazing!

I just moved to Latte, and it works like a charm.

Congrats!

@psifidotos
Copy link
Owner

thank u!!! ;)

@jsmitar
Copy link
Author

jsmitar commented Jan 13, 2017

thanks a lot. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants