Download Current Version: tkdesk-2.0.tar.gz
TkDesk Needs Developers!TkDesk, like any free software project, cannot survive without the support of developers who use it, enjoy it, and want to improve it. To contribute your TkDesk-related coding efforts, simply email your changes to me. Maybe we'll even get to argue about them for a while before they get included. That's always fun...
Please note that we can always use help with documentation, translations, etc., so you do not have to be a programmer to contribute. Please do not be afraid to volunteer your time and skills, whatever they may be.
Below is a collection of features we'd like to see added to TkDesk. A few are already being explored. Most are still in the "wouldn't that be nice..." stage. If you see something you'd like to work on, please let me know. It's not required, of course, but we'd like to avoid a duplication of effort. Similarly, if you've thought of some feature you'd like TkDesk to have, let me know. Perhaps we'll argue about it for a while before it gets put on the list. That's always fun...
Speaking of arguing... er, developer communication that is... There's a TkDesk mailing list just for developers. You can subscribe here: https://lists.sourceforge.net/lists/listinfo/tkdesk-code. To post questions, updates, polite arguments, etc., send email to email@example.com (please subscribe first).
TkDesk Development Roadmap - Release 2.xI'm working on a plan for future TkDesk releases, starting with 2.0, based partly on items from the wish list below, and partly from whatever ideas pop into my head on any given day. Suggestions are always welcome.
The TkDesk Wish List
Item Notes[These notes are mostly Christian's, but I've made some changes here and there, plus added some new items, so blame me for any wrongdoing. My personal view of adding features to TkDesk is that we should adopt the emac^H^H^H^H kitchen-sink strategy. I never liked a feature I didn't see...]
Like every self-respecting software that's older than a couple of months, TkDesk is not very well structured anymore. In fact, TkDesk never was as well structured as it probably could be, and that is mainly to my ignorance of using the object-oriented possibilities itcl in a more consequent fashion. This now creates problems e.g. with virtualizing the file system to be able to browse tar archive, ftp services etc. just like the local file system. So the goal of this item really is to get TkDesk into a cleaner and more modular structure, with virtualizing as much as possible.
Virtualization can be achieved by creating a class hierarchy, that allows for building on base classes providing functionality that is used by other parts of TkDesk. For example:
This is definitely the item most people ask about (whether it's available, not whether they should implement it, unfortunately). This should probably be based on work done for the restructure item to have a clean interface for the virtual file system (VFS).
Most every other available file manager seems to have something like a VFS implemented, or at least something to be able to transparently access an FTP server. As most of these are released under the GPL we should be able to take a close look at them and see what we can use for TkDesk (of course only after kindly asking the respective developers). Some of these include:
This item consists of two major parts: The VFS interface that's used outside of the VFS and provides methods for listing, traversing, copying, moving, deleting, opening etc. FS objects, and the various implementations for the local FS, tar files, rpm archives, FTP servers etc.
This might help to simplify the adoption of more GUI-based configuration.
Probably leads to some security concerns...
Another item many users ask for. Having to edit flat configuration files with Tcl code is not very user-friendly at all, but it's beein the easiest way for configuring TkDesk from a programmer-standpoint, as these files can be simply sourced into TkDesk.
This item should try to get rid of the config files as the primary place of user configuration and should replace them with nice and friendly GUI panels, arranged in a notebook or tree (like Netscape or MS do). The challenge is that these panels should be as simple as possible yet retain the power that direct editing of the config files provides.
The following areas of TkDesk can currently be configured:
The number of views on the file system TkDesk currently provides is very limited. Building on the work done for the restructure item additional views should be implemented plus the current ones enhanced.
Additional views should include:
BLT's drag'n'drop which is used by TkDesk is not very verbose and not in very wide-spread use anymore. It's probably a good idea to evaluate whether it's possible to to replace it with a different mechanism to improve interoperability with other mechanisms, such as:
Alternatively we could just wait for Tk to get its own DND mechanism (apparently planned for Tk 8.2), but it's not clear whether this would be able to exchange data with non-Tk apps.
This item's task would be to remove all hard coded text message strings from TkDesk's Tcl library, save these strings to a language specific message catalog, and use some indexing mechanism to reference them from the Tcl library, e.g. associative arrays.
Hm - not much to say about this item. Work for this would "simply" involve translating the user guide's source file guide.sgml to another language. Note that this file is in SGML format and uses the LinuxDoc DTD, but should still be fairly easy to translate as all SGML directives are wrapped in < and >.
The source file for the User's Guide can be found in the doc subdirectory of the distribution, and may also be downloaded here: guide.sgml. To download click the right mousebutton over the link and select "Save Link As...".
TkGoodstuff contains some nice features which would be useful for TkDesk as well, e.g. the ability to "swallow" other X applications and to communicate with FVWM. Apparently TkGoodstuff is no longer maintained, so it might even make sense to merge it into TkDesk.
Many people have asked why TkDesk cannot display transparent icons for the desktop items. The reason is that to achieve this the SHAPE extension of the X server would need to be used, and I know far too little about X programming to be able to get this functionality into Tk (plus, I didn't car too much to be honest). This might even have been done already, but I didn't look very hard yet.
The idea here is to add a button to the Appbar (or anywhere else) that would parse the current X selection and either invoke an appropriate action or present a menu of actions that could be used on the current selection. E.g., selecting the string "#include <stdio.h>" and clicking on the wizard button could open a new editor window displaying /usr/include/stdio.h.
This is inspired be the ACME system, so it might be interesting to look what these folks did.
It'd be nice to have a sort of "shelf" in the browser windows where files and directories could be moved for quick access, similar to the NEXTSTEP file manager. This shelf would probably need to be scrollable, and should use large icons. It should also be possible to expand and collapse the shelf.
The "Find Files" dialog could be improved such that it provides access to the functionality of the "locate" command. It would also be helpful if the matches found after a string/regexp search would be listed underneath the respective file name in the results window. Double-clicking on these should open an editor window at the corresponding line.
We should use "paned" geometry management of the file listboxes in the browser window to allow individual width changes of each of these. There are quite a few Tcl libraries available that provide this functionality, so hopefully this shouldn't involve too much work.
Currently TkDesk uses only the configuration files found in each user's ~/.tkdesk directory. This makes site-wide or domain-wide configuration impossible. This should be changed, somehow.
E.g. TkDesk could be changed so that on initial invokation it does not copy the default config files to ~/.tkdesk but merely symlinks them. Only when a file really is to be changed the file is copied. For this approach a higher granularity of config files would certainly be useful.
This item obviously has dependencies on the GUI configuration item.
TkDesk should support the scrolling of file lists, etc., with mouse wheels. Tk has support for this now, so the functionality should not be hard to implement.
TkDesk already has built-in dialup support, but the config. is awkward and the functionality is limited. I'd like to see a gui dialup configuration with more features and connection monitoring. Perhaps integrate some GPL'd dialup app?
J. Chris Coppick
Copyright © 2001 J. Chris Coppick - Please do not reproduce without permission.