m (formatting++)
(huge update)
Line 1: Line 1:
Some of the things I'm planning to do are on [[Projects/Plasma/4.1_Roadmap|the roadmap]]. some are only on my laptop, and will stay there. here's some stuff that I'm thinking of doing, but I'm not certain enough about it to put it on the actual roadmap page. there's a pretty good chance I'll never find time for any of it.
+
Some of the things I'd like to do need to get on [[Schedules/KDE4/4.3_Feature_Plan|the feature plan]]. some are only on my laptop, and will stay there. here's some of the stuff that I'm thinking of doing. There's a pretty good chance I'll never find time for most of it. If one of them sparks your interest, feel free to implement it. (but tell me, so we don't both end up doing the same thing ;)
 
 
====<s>mix plasma and the screensaver</s>====
 
*<s>desktop containment that can display screensavers in the background</s>
 
*<s>I want plasma on the actual screensaver too. I blogged about this before, and other people have had the same idea.</s>
 
  
 
====make a graphical timezone selector====
 
====make a graphical timezone selector====
 
*I think I've seen such a thing ona gnome computer, and it it just made *sense*.
 
*I think I've seen such a thing ona gnome computer, and it it just made *sense*.
*I'm not sure if this would be a plasma thing or a kdelibs thing.
+
*I'm not sure if this would be a plasma thing or a kdelibs thing. or a marble thing.
 +
*at the very least the existing timezone selecter needs a filter bar...
  
 
====attention plasmoid====
 
====attention plasmoid====
Line 13: Line 10:
 
*this is useful for people like me who usually don't want a taskbar, but don't want to miss that attention request.
 
*this is useful for people like me who usually don't want a taskbar, but don't want to miss that attention request.
  
====kconfig plasmoid====
+
====keyboard shortcuts====
*like the little kde3 applet - pops up a list of kconfig modules so you can go right to the one you want instea of clicking around systemsettings.
+
*shortcuts need to be configurable. I've made them into kactions, but now I need to use a kshortcutdialog to configure them, and save/load the config.
*I find that when I actually do remember where the hell a setting is stored (like when I have to keep switching proxies), this kind of ui is much faster.
+
*unfortunately there seems to be some bug with setting emacs-style shortcuts in a kshortcutdialog. I need to look into that.
 +
*also need to look into why qt4.5 made my shortcuts work on the dashboard but not the desktop.
 +
 
 +
====containment saving====
 +
*use case 1: I have a system with limited resources, and lots of activities. I want to close the ones I haven't used recently, but not delete them forever.
 +
*use case 2: I have a really cool setup, and my friend wants me to send her one of my activites because she likes it so much.
 +
*the idea is to save out the containment's config to another file (in $APPDATA or something for use case 1) and remove it, then when the user wants to load a saved containment we give them a list of the saved containments (plus an option to load from any file), then pull in the one they choose. if they choose one from the list then we remove that file so that they don't get multiple copies of the same activity.
 +
*there should be a nice friendly UI for all of this, of course. bonus points if the "share with a friend" is something cooler than having the user do "save to file, open mail client, attach that file to an email"
 +
 
 +
====corona cashew====
 +
*certain actions, like 'new activity' (and 'load activity' from the containment saving idea) really really do not belong in every single frigging containment while you're zoomed out.
 +
*the first, obvious step is that some actions should be associated with the corona instead of containments.
 +
**some (new activity) should only be shown while zoomed out
 +
**others (lock, zoom out) should be in the active containment when zoomed in, but then only shown once while zoomed out. I hope multiple views don't complicate this.
 +
*then we need some sort of "corona cashew" to display these actions. I'm thinking of a sort of bastardized toolbox that's expanded like the zoomed-out-activity ones but clings to hte edge of the screen... other ideas are welcome, though.
 +
*if you combined this with some other zui improvements you could probably make a soc project of it. only problem is the containment saving ui will be hard to do nicely without this. hey, maybe combine the two...?
  
====<s>multiple containments</s>====
+
====containment mouse interaction====
*<s>unless aaron gets there first, I'd like to get a ui in place for adding and removing desktop containments. one just isn't enough!</s>
+
*this will probably be my soc project.
 +
*right now, each containment plasmoid provides a hardcoded contextmenu, the scroll wheel changes virtual desktop, and the wallpaper can define responses to other clicks.
 +
*what we need is plugins that provide contextmenus (or perhaps something more?) and a UI to configure them and assign them to buttons 1-3 (apparently qt doesn't support extra mouse buttons).
 +
**the default would be be none for left, the usual contextmenu for right, and none for middle
 +
**would need to turn existing hardcoded contextmenu(s) into plugins.
 +
**need to properly handle extra containment-stuff: the folderview as containment has a bunch of important contextmenu actions.
 +
**buttons with nothing assigned would have the click passed to the wallpaper in case it wants to use it
 +
*also, the scroll wheel should be configurable. possible options: change virtual desktop, change activity, zoom
 +
*a loose end that needs tying up: pasting (ctrl-v or middle button) on the desktop should do the same thing as dragging stuff there by default. I keep trying to make notes by pasting text. :)
  
====keyboard shortcuts====
+
 
*<s>having a crappy laptop mouse that's beginning to show its age, I really hate how inaccessible plasma is right now. I want to figure out a sane system for keyboard shortcuts that'll let me navigate around without eating up too much of the shortcut namespace.</s>
+
====containment removal====
*now that we have basic shortcuts in place, I want to improve them. we need user-configurable shortcuts, we need them not to be hardcoded, and it'd be really nice if we could find a way to pollute the shortcut-space less, because it's almost impossible to find a shortcut that doesn't conflict with some widget somewhere.
+
*being able to remove the current activity safely would get rid of the need for some awkward code and confusing behaviour.
 +
*this probably means attempting to jump to an unused containment, and creating a new one if none can be found.
 +
 
 +
====icon plasmoid improvements====
 +
*right now, it kinda sucks. I have links on my desktop called stuff like "http" and I can't change them. oh, and dragging a kickoff entry to the desktop then changing it has broken things horribly in the past.
 +
*what I want is a more generic launcher plasmoid that can be configured to launch whatever I want. like how you could add stuff to your panel in kde3 and configure it to run a program with extra options or whatever.
 +
 
 +
====kwin effects plasmoids====
 +
*someone on hte interwebs thought of this one: just little icons that trigger certain kwin effects. should be really easy, assuming there's a dbus way to trigger those things.
 +
 
 +
====victory calendar [mine!!]====
 +
*this is the one I keep blogging about
 +
*I need to make it possible to add rows
 +
*then I need to make it save the state of the flags
 +
*then I need to make it save them per day, and display history
 +
*eventually I might add pretty graphs
 +
 
 +
====full keyboard control====
 +
*two parts: dbus interface and a runner
 +
*first, we need a full dbus interface to plasma
 +
**I want to be able to control as much as possible. everything, really. every applet, every containment...
 +
**first, we need a way to get a listing of the containments running, and applets running in a specific containment
 +
**we need a way to refer to those specific containments and applets, to do things to them.
 +
**I should be able to do stuff like move, resize, add, remove... I'm not sure if changing configuration makes sense. being able to make it flash would be useful too (at the very least to confirm you're actually acting on the applet you think you're acting on)
 +
*second, we need a runner
 +
**this should be a less-scary way to use the dbus interface... something a bit more intuitive with less typing
 +
 
 +
====screensaver security====
 +
*category filters are already in, but they're not enough
 +
*need a list of constraints in the app (just plasma-overlay for now) and then every plasmoid's .desktop file needs those constraints for it to show up in plasma-overlay's appletbrowser. obviously it shouldn't add them unless it's actually capable of satisfying them.
 +
*also need a function in Applet so that applets can ask about the constraints and not try to do things they're not allowed to do
 +
*for scripted plasmoids we may be able to enforce the constraints from plasma instead of trusting the developers
 +
*the hard part: what should the constraints be?
 +
**they need to be straightforward enough that plasmoid developers can understand what they mean and whether their plasmoid satisfies them
 +
**there was a discussion about this last year [http://mail.kde.org/pipermail/panel-devel/2008-July/015313.html on panel-devel]
 +
*for all the plasmoids in svn that don't have specific owners (some get passed about a lot) we should probably review them before release to make sure the .desktop isn't out of date.

Revision as of 18:10, 20 February 2009

Some of the things I'd like to do need to get on the feature plan. some are only on my laptop, and will stay there. here's some of the stuff that I'm thinking of doing. There's a pretty good chance I'll never find time for most of it. If one of them sparks your interest, feel free to implement it. (but tell me, so we don't both end up doing the same thing ;)

make a graphical timezone selector

  • I think I've seen such a thing ona gnome computer, and it it just made *sense*.
  • I'm not sure if this would be a plasma thing or a kdelibs thing. or a marble thing.
  • at the very least the existing timezone selecter needs a filter bar...

attention plasmoid

  • when a task wants attention (ie. it would be flashing in the taskbar) this would show the task and get the user's attention.
  • this is useful for people like me who usually don't want a taskbar, but don't want to miss that attention request.

keyboard shortcuts

  • shortcuts need to be configurable. I've made them into kactions, but now I need to use a kshortcutdialog to configure them, and save/load the config.
  • unfortunately there seems to be some bug with setting emacs-style shortcuts in a kshortcutdialog. I need to look into that.
  • also need to look into why qt4.5 made my shortcuts work on the dashboard but not the desktop.

containment saving

  • use case 1: I have a system with limited resources, and lots of activities. I want to close the ones I haven't used recently, but not delete them forever.
  • use case 2: I have a really cool setup, and my friend wants me to send her one of my activites because she likes it so much.
  • the idea is to save out the containment's config to another file (in $APPDATA or something for use case 1) and remove it, then when the user wants to load a saved containment we give them a list of the saved containments (plus an option to load from any file), then pull in the one they choose. if they choose one from the list then we remove that file so that they don't get multiple copies of the same activity.
  • there should be a nice friendly UI for all of this, of course. bonus points if the "share with a friend" is something cooler than having the user do "save to file, open mail client, attach that file to an email"

corona cashew

  • certain actions, like 'new activity' (and 'load activity' from the containment saving idea) really really do not belong in every single frigging containment while you're zoomed out.
  • the first, obvious step is that some actions should be associated with the corona instead of containments.
    • some (new activity) should only be shown while zoomed out
    • others (lock, zoom out) should be in the active containment when zoomed in, but then only shown once while zoomed out. I hope multiple views don't complicate this.
  • then we need some sort of "corona cashew" to display these actions. I'm thinking of a sort of bastardized toolbox that's expanded like the zoomed-out-activity ones but clings to hte edge of the screen... other ideas are welcome, though.
  • if you combined this with some other zui improvements you could probably make a soc project of it. only problem is the containment saving ui will be hard to do nicely without this. hey, maybe combine the two...?

containment mouse interaction

  • this will probably be my soc project.
  • right now, each containment plasmoid provides a hardcoded contextmenu, the scroll wheel changes virtual desktop, and the wallpaper can define responses to other clicks.
  • what we need is plugins that provide contextmenus (or perhaps something more?) and a UI to configure them and assign them to buttons 1-3 (apparently qt doesn't support extra mouse buttons).
    • the default would be be none for left, the usual contextmenu for right, and none for middle
    • would need to turn existing hardcoded contextmenu(s) into plugins.
    • need to properly handle extra containment-stuff: the folderview as containment has a bunch of important contextmenu actions.
    • buttons with nothing assigned would have the click passed to the wallpaper in case it wants to use it
  • also, the scroll wheel should be configurable. possible options: change virtual desktop, change activity, zoom
  • a loose end that needs tying up: pasting (ctrl-v or middle button) on the desktop should do the same thing as dragging stuff there by default. I keep trying to make notes by pasting text. :)


containment removal

  • being able to remove the current activity safely would get rid of the need for some awkward code and confusing behaviour.
  • this probably means attempting to jump to an unused containment, and creating a new one if none can be found.

icon plasmoid improvements

  • right now, it kinda sucks. I have links on my desktop called stuff like "http" and I can't change them. oh, and dragging a kickoff entry to the desktop then changing it has broken things horribly in the past.
  • what I want is a more generic launcher plasmoid that can be configured to launch whatever I want. like how you could add stuff to your panel in kde3 and configure it to run a program with extra options or whatever.

kwin effects plasmoids

  • someone on hte interwebs thought of this one: just little icons that trigger certain kwin effects. should be really easy, assuming there's a dbus way to trigger those things.

victory calendar [mine!!]

  • this is the one I keep blogging about
  • I need to make it possible to add rows
  • then I need to make it save the state of the flags
  • then I need to make it save them per day, and display history
  • eventually I might add pretty graphs

full keyboard control

  • two parts: dbus interface and a runner
  • first, we need a full dbus interface to plasma
    • I want to be able to control as much as possible. everything, really. every applet, every containment...
    • first, we need a way to get a listing of the containments running, and applets running in a specific containment
    • we need a way to refer to those specific containments and applets, to do things to them.
    • I should be able to do stuff like move, resize, add, remove... I'm not sure if changing configuration makes sense. being able to make it flash would be useful too (at the very least to confirm you're actually acting on the applet you think you're acting on)
  • second, we need a runner
    • this should be a less-scary way to use the dbus interface... something a bit more intuitive with less typing

screensaver security

  • category filters are already in, but they're not enough
  • need a list of constraints in the app (just plasma-overlay for now) and then every plasmoid's .desktop file needs those constraints for it to show up in plasma-overlay's appletbrowser. obviously it shouldn't add them unless it's actually capable of satisfying them.
  • also need a function in Applet so that applets can ask about the constraints and not try to do things they're not allowed to do
  • for scripted plasmoids we may be able to enforce the constraints from plasma instead of trusting the developers
  • the hard part: what should the constraints be?
    • they need to be straightforward enough that plasmoid developers can understand what they mean and whether their plasmoid satisfies them
    • there was a discussion about this last year on panel-devel
  • for all the plasmoids in svn that don't have specific owners (some get passed about a lot) we should probably review them before release to make sure the .desktop isn't out of date.

Content is available under Creative Commons License SA 4.0 unless otherwise noted.