This forum has been archived. All content is frozen. Please use KDE Discuss instead.

[Idea - Proposal] - A Plank dock alternative for Plasma

Tags: None
(comma "," separated)
User avatar
psifidotos
Registered Member
Posts
86
Karma
0
OS
Hello everyone,

this is an idea that appeared by using my Plasma desktop and trying to making it simple and elegant...

this is my desktop:
Image

all of it, is Plasma except the panel on the left which is called Plank and is trying to mimic a mac dock way to show your tasks-windows
(I never had a mac so I dont know how is the experience :-) ).

Plank is good and I like its approach of simple configurations and only basic features for doing the job but Plank is not Plasma under its technology...
(it isnt plasma theme agnostic, Activities agnostic, based on Qt)

I thought that I could create something in order to test in QML how this could be done. I am a developer and in the past I was maintaining the WorkFlow Plasmoid for Plasma 4.

Plasma 5 is a much friendlier development environment and things are maturing day by day for the long run (concerning Wayland also).

So this is the mockup qml dock (I dont know how to name it yet)
Image

and you can download all the code from here, it is pretty small actually:
DropBox link

you can test it, inside Plasma, executing the following command in the extracted directory:
Code: Select all
qmlscene main.qml

This is where this effort stands out until now and I would like a lot your feedback:
  1. From visual and design perspective how could this fit better in Plasma.
  2. I dont know how some of the features can be supported as a plasmoid or a kwin script so in some point I would need some guidance from the community.

Phase 1:
  • create a mock qml dock for testing purposes

Phase 2:
  • decide if this should be a plamoid (added in a panel for example) or kwin script and what are the drawback in each case
  • connect with the current task manager in order to show tasks and access them
  • Plasma agnostic concerning: theme, Activities, desktops

Phase 3:
  • support launchers
  • and draging and droping them
---
P.S. Features I like in Plank and I would like to support if this is possible,
  • panel doesnt hide the background and the icons are trasparent, the user can see the background of the desktop or the window
  • when a new task is created and the dock is hidden a red glow is informing the user tha a new task exists
  • the dock doesnt hide totally behind all windows but only from the active one, if the active one window does not overlap the dock, the dock is shown even above inactive windows
User avatar
jensreuterberg
Registered Member
Posts
598
Karma
3
OS
Really wonderful work!

As for design I would minimize the scaling a tad, not by much but right now its very "slidey" with all the zoom effect. Another point I would love to mention is the replacing the glowing dots with either plain dots or perhaps extra lines.

If you got a KDE account perhaps adding this work on https://phabricator.kde.org ?


KDE Visual Design Group - "Sexy by default - Powerful through cooperation"
User avatar
psifidotos
Registered Member
Posts
86
Karma
0
OS
And now this is my desktop with the new plasmoid...
Image

on the left this is a plamoid added in a left panel... And now this is full Plasma... :)

I have chosen a transparent theme from kde-look in order to hide the panel in which the plasmoid is added...
User avatar
Kver
Registered Member
Posts
326
Karma
2
OS
In regards to "phase 2", may I suggest you instead implement it as a "panel";

I was speaking to devs about making widgets like docks, and apparently you can do that already. Not as in "putting it in a panel", but as a "panel alternative". If you make it in this method, you clamp to the edge of a screen, get to reserve screen space, and all that good stuff. I don't know who you'd talk to about doing this though...


Reformed lurker.
User avatar
psifidotos
Registered Member
Posts
86
Karma
0
OS
Kver wrote:In regards to "phase 2", may I suggest you instead implement it as a "panel";

I was speaking to devs about making widgets like docks, and apparently you can do that already. Not as in "putting it in a panel", but as a "panel alternative". If you make it in this method, you clamp to the edge of a screen, get to reserve screen space, and all that good stuff. I don't know who you'd talk to about doing this though...


Hello Kver, thanks a lot for the response...
I am not negative in implementing it as a "panel alternative", things probably will lead there even though I dont see any major benefits...
In the current implementation when you add the plasmoid in an empty panel, you can move this panel wherever you want and set its behavior also, windows can overlap it, it can autohide itself if you want to... in general all the options of a panel are there... The panel's size grows according to the plasmoid, the only option which is not an option is the "Always visible" because the user loses very much of its desktop space...

I know that the cleaner solution is that of a "panel alternative" but for the benefits I would like to hear them actually.... If a developer could point me also in that direction with a "Hello World" panel alternative, that would be enough for me... C++ and Qt programming is not a problem, in my previous project we ended creating c++ libraries, dbus interfaces, different kwin effects and plasmoids with combination in Qt and QML :)

As for the phase point of development... Phase 2 has finished and from Phase 3 the launchers functionality also. Dragging and dropping launchers is not in the code yet, I will leave that for now. My next important thing is to choose which are going to be the user choices from the plasmoid's configuration windows. I have copied the current configuration window from the tasks plasmoid but I am not going to support all these choices... I find them a lot... Definitely per activity tasks and per desktop
if the user wants to, how the user wants to combine launchers with its tasks... group them together or keep them separate... but that's all..

What I would love to see is how people imagine this. I tried to use a bar line that uses the current theme in order to show the current tasks, and dots for showing the number of windows in each task but it was too flat... no beautiful borders... etc.... I ended hardcoding the oxygen panel which gives a more 3d presence for the barline..

I am in vacations but I believe that in 10 days the first ".plasmoid" file will be ready and you will be able to even install it from inside plasma, I will publish it to kde-look. After that I hope for a better momentum for the project concerning ideas, mockups, etc.

In programming I know that words do good but in the end there must be something to show, and showing something activates people a lot... :)
User avatar
psifidotos
Registered Member
Posts
86
Karma
0
OS
For anyone that wants to give this plasmoid a go and send me feedback,
the first version is online and can be downloaded from inside Plasma (>=5.7).

I have called it "Now Dock"

the kde-look link if you want to download it yourself: https://www.kde-look.org/p/1151047/

have fun everyone...
Saabhero
Registered Member
Posts
17
Karma
0
OS
I love it!

Thank you for the efforts. I have some feature requests and bug reports o)

Feature Requests:
i think it needs to be a panel itself, if this is possible.
And as panels i think it should be attachable to a screen edge of the desktop.
The solution to use it within a panel is cool but not viable for me, as i want all the effects like blur on my panels :P
And, as already talked about on kde-look, dragging/drag and drop would be nice!

The visuals are already stunning but i think there is a (very minor) bug in the visuals (Not using it in a panel atm):
If i hover over the leftmost icon and move the mouse to the left the animation starts stuttering when i exit the panel area. Same is true for the right side.
Also it doesn't follow the color theme, at least when switching workspace themes.

Hopefully this initial version gets some more attention, i think this is already almost as good as docky!

EDIT:
I don't think that the name of the dock matters that much but "now dock" seems a little weird ;)
My suggestions would be
* doK
* Plasma Dock
* Breeze Dock
* Qmlaucher
But it doesn't really matter ;)
User avatar
psifidotos
Registered Member
Posts
86
Karma
0
OS
Saabhero wrote:I love it!
i think it needs to be a panel itself, if this is possible.
And as panels i think it should be attachable to a screen edge of the desktop.
The solution to use it within a panel is cool but not viable for me, as i want all the effects like blur on my panels :P

I am researching this but the first responses from the developers are very positive that this is not
so difficult... a panel in the end is a plasmoid...

Saabhero wrote:And, as already talked about on kde-look, dragging/drag and drop would be nice!

this has been implemented in the master branch, it will be in the next release

Saabhero wrote:If i hover over the leftmost icon and move the mouse to the left the animation starts stuttering when i exit the panel area. Same is true for the right side.

this must have been fixed also in master... In the edges I had placed hidden spacers in order for the
animation to be consistent but I hadnt included them in the mouse signals

Saabhero wrote:Also it doesn't follow the color theme, at least when switching workspace themes.

the main color hasnt been hardcoded is using by the theme the color buttonFocusColor, can you give me any screenshots?

Saabhero wrote:EDIT:
I don't think that the name of the dock matters that much but "now dock" seems a little weird ;)
My suggestions would be
* doK
* Plasma Dock
* Breeze Dock
* Qmlaucher
But it doesn't really matter ;)

I feared to include Plasma or Breeze in the name because I have them in my mind as trademarks...
The corresponding teams should give first their acceptance for this...
-----

Image
New features that have been implemented:
--the icons had a little blur in them because of the buffering mechanism... this is fixed and the
icons should look very clear and sharp at least when they are not zoomed...
--three different colors can be shown if the user wants to for (minimized, active, just shown) windows
--the design of the line and dots has been merged in a single way to handle this visually,
in that way the design is simpler and more space is gained.
--dropping applications from outside, creates launchers in the plasmoid

for bugs and requests please also use the official page because it would help me to
keep them organized...
https://github.com/psifidotos/plasmaqmldock

@Saabhero, Thanks a lot for the support!!! :-) I am having a lot of fun implementing this...

regards,
michail
User avatar
psifidotos
Registered Member
Posts
86
Karma
0
OS
Well... as a proof of concept I can saw you these... :-)

Breeze Dark theme with a transparent panel in it.... :-)

Image

Image

Image

it is hardcoded of course but it works....
Steps that were taken...

1. I added in the breeze dark theme a west panel that is full transparent and I made full transparent
some of the shadows that must not be shown because they would break the illusion to the user.

2. in the Now Dock I am using the themes visuals in order to draw in it the theme's panel-background
with its shadows

that's all actually....

This could create an illusion to the user that the icons are zoomed outside of their panel... :-)
User avatar
rapiteanu
Registered Member
Posts
10
Karma
0
OS
This is looking great! I have a feeling that this is going to become pretty soon one of the most used applets in Plasma.

I have a minor question. How you were able to put the dock inside an transparent panel. As far as I know, there aren't any plans to give the panels a transparency option. Without putting the applet into a panel, you don't have an option to rotate the dock's orientation. Also, you don't get the panel's major advantages like the Visibility options and the ability to snap it to one side of the screen with a simple configuration option.
User avatar
psifidotos
Registered Member
Posts
86
Karma
0
OS
rapiteanu wrote:This is looking great! I have a feeling that this is going to become pretty soon one of the most used applets in Plasma.

I have a minor question. How you were able to put the dock inside an transparent panel. As far as I know, there aren't any plans to give the panels a transparency option. Without putting the applet into a panel, you don't have an option to rotate the dock's orientation. Also, you don't get the panel's major advantages like the Visibility options and the ability to snap it to one side of the screen with a simple configuration option.


Thank you very much for your kind words!!! :-)
For the transparancy I hardcoded the Breeze-Dark theme, all the panels are drawn mainly from a spesific svg file in their themes... For this file is documented that somenone can specify different layouts for the panels based on their positions, e.g. West(right), North(top), East(right), South(bottom)... What I have done is that I created by hand a West fully transparent panel in that file and made full transparent the shadows that shouldnot appear.

From the plasma developers frontier the news is that there is interest around this feature and there is a big possibility to be implemented in Plasma 5.9... :)

But until then what are we doing????? :)

Well... Because there are many people that want to play with it etc. etc... I am one of them! :-) I love it in my plasma... Today I created a python script which is able to do the magic for you... It should work with most of themes and if there are cases out there that it isnt we could debug it.... The script is called transparentpanel.py, someone can run it with the command python tranparentpanel.py following its arguments...
The script takes as arguments the name of an installed plasma theme and in what panel we need transparency... And in that way it creates a new theme that provides that transparency... The new theme can be enabled as all the installed workspace theme from the system settings.... The script disables some panel shadows in order to provide that transparency correctly and informs the user what shadows disabled, but it gives also the choice to the user to enable any shadow he wants...

examples:
python transparentpanel.py --list ///shows all installed themes
python transparentpanel.py breeze-dark West ///it will create a new Breeze Dark theme with the West panel transparent
python transparentpanel.py breeze-dark South bottom topright ///it will create a new Breeze Dark theme with the South panel transparent and also the bottom and the topright shadows will be shown including those the script chose

The thing is that the script was created in just one day by me just playing around with python for the first time... :-) I hadnt ever used that language before... I propose to wait for one or two days if you want to try it, and then I will upload it...

I am thinking also that if the people need this so much, I am going to create a small Gui application in PyQt to help them for this process if they fear to use the command line with the transparentpanel.py script...
User avatar
psifidotos
Registered Member
Posts
86
Karma
0
OS
By using the transparentpanel.py script, Papirus theme with West panel transparent.... :-)

Image
User avatar
psifidotos
Registered Member
Posts
86
Karma
0
OS
Well,

as it appears the Now Dock Plasmoid when its version 0.3.0 will be ready, is going to have a company... :-)
I managed to implement a Now Dock Panel (it will be released with same version as the plasmoid 0.3.0).
This is not going to be a panel for a single widget... This is going to be a real Panel!!! :-)
This means that you will be able to add your plasmoids in it, places, trash, weather, notes, clock etc. and they
are going to behave as the Now Dock Plasmoid... zooming, etc... It is already working but I'll need
some time more to make it work right....

Image

P.S. the green lines etc. are for Layout debugging... :-)
User avatar
rapiteanu
Registered Member
Posts
10
Karma
0
OS
This is fantastic! Truth be told, that looks even better than what I was expecting. When you have a more polished version of it, you should queue it for Plasma 5.9. That would certainly be a great addition.
User avatar
andreas_k
Registered Member
Posts
561
Karma
0
+100 for bring it to plasma repository.


Bookmarks



Who is online

Registered users: bartoloni, Bing [Bot], Google [Bot], Sogou [Bot]