duvholt / i3-pager

Plasmoid pager for integrating i3 with KDE Plasma
GNU General Public License v3.0
36 stars 14 forks source link

New features #9

Open SimonBrandner opened 4 years ago

SimonBrandner commented 4 years ago

I've recently implemented new features to i3-pager and I have ideas for some more. I thought it'd be great to try to get some feedback before trying to implement them. So I am going to describe them here.

All the features I'd like to implement require config, so the easiest way to list them is the way they'd be in the plasmoid config. I've also marked the already implemented ones.

General

Screens

Workspaces

duvholt commented 4 years ago

Ordering seems like a nice addition :+1:

Set screen color

Should the screen color override the default underline color? I don't have any specific design in mind but maybe it would make sense to introduce a new indicator for screen info?

Set icons using UI

Moving icons away from the workspace name is a good idea as the format I'm using in non-standard and probably looks weird with other i3 tools. We should also let the user select their own icon font instead of only allowing Font Awesome. Later on we could probably create some fancy icon selector, but I think it makes sense to start with a simple text input where the user can paste the unicode symbols.

SimonBrandner commented 4 years ago

Thanks for feedback

Ordering seems like a nice addition +1

Thanks

it would make sense to introduce a new indicator for screen info?

I absolutely agree. I think otherwise it would be just confusing.

Later on we could probably create some fancy icon selector, but I think it makes sense to start with a simple text input where the user can paste the unicode symbols.

I agree once again

First I'd like to try to implement the screen features (ordering and colouring). It may take me some time as I am quite new to QML.

SimonBrandner commented 3 years ago

I implemnted Screen ordering and colouring.

I am going to take a break from this project so if anyone wants to add the features mentioned here, please go ahead!

SpyrosMourelatos commented 2 years ago

I was trying to implement the feature order workspace by index and I have some notes to submit. First thing first on my trial I made a new not requested feature that is quite better as it is more flexible. I will name the feature "order workspaces by names" and I will submit a pr to integrate it here. So my notes:

  1. It is nearly impossible to implement this feature as i3ipc++ doesn't return an index on workspace_t http://drmgc.github.io/docs/api-ref/i3ipc++/latest/d3/d09/structi3ipc_1_1workspace__t.html This has been noticed in other contexts also as a missing feature of i3, and it is not this projects problem.
  2. These three lines are very problematic and should change as the name of the member variables are based on a very unsafe and unchecked convention and may be misleading, but I can't propose something better. I understand some compromises should be made...
            workspace.index = splitName[0];
            workspace.name = splitName.size() == 1 ? splitName[0] : splitName[1];
            workspace.icon = splitName.size() == 3 ? splitName[2] : "";
  3. The feature "order by names" is easy to implement (I implemented it but, I should see its interaction with the order by screen feature(what should happen if they are both true?should I forbid combining them from the GUI?)) and also more flexible as one can name the workspaces with numbers like so: (this makes the two features equivalent)
    set $ws1 1
    set $ws2 2
    set $ws3 3

    PS thanks for the beautiful pager and the simple readable code :+1: Edit: I decided what to do, the two features "short by screen" and "short by name" can coexist if we prioritize one, I think I will prioritize "order by screen" as it seems more reasonable e.g.: Let's say we have two workspaces named "2" and "4" in our primary screen and two workspaces named "1" and "3" on our secondary screen then the correct order with both options enabled should be "2","4" (notice that this doesn't happen currently because if the workspace named "4" is instanced before the "2" then the plugin orders them as :"4","2"). Well, that's only if you agree it is not that significant for me.