OneFinger: TO-DO LIST
======================


1. TO DO THINGS
---------------

before 2.0
----------

* Create new pages on the web site, with a guide to "install, setup and
  use". Point INSTALL files to that one.


After 2.0
---------

* Bug: the window-list position is not remembered correctly - it is
  placed a bit lower and a bit to the right.

* Add tooltips to the buttons inside the lists.

* BUG: The execution won't work if the file name contains the letter .

* Bug: If you try to enter a protected directory such as /root, you
  should have an error message. Instead you get File
  "/usr/bin/one-finger", line 477, in redraw_files files_without_path
  = [x for x in os.listdir(cur_dir)] OSError: [Errno 13] Permission
  denied: '/root'


* after you drag files, update the file stats.

* write uninstall script

* Difficult: Read program icons from .desktop files.

* Use KDE icons for files.

* At the beginning, as the recently used verbs, give a merge of default
  verbs and the parse of bash_history.

* when purging the database, also remove nonfile arguments that were
  used only once and those that weren't used recently?

* BUG: OneFinger seems to hang with gimp. Test if it happens without
  enabling utility windows in the gimp prefs.

* BUG: if you rename the current dir, OneFinger misbehaves. The right
  way to fix this bug is to lock the cur_dir while you are redrawing
  the file panel.

Add a tutorial panel, which teaches you to accomplish common tasks,
such as "move a file to a directory". First, a dialog-based wizard
will ask you for the files and the destination directory (how?), then
an animation will show you how to accomplish the task with OneFinger.

BUG: OneFinger sometimes crashes when closing KDE.

"mv X X" should be "mv ...debian  ...ry-long-name"



See if the other technique of button flashing fixes the flashing bug
in mandrake and debian.

difficult: after drag, if drag worked, clear command area.

Add two buttons to delete forward and backward in the command area.

The flashing of lists is now eye-catching if you are not looking at
the list, but prevents you from reading if you are already looking at
the list. We must reintroduce the flashing border? But it takes
space... or can we only flash the title of the list?

konsole is slow opening. Solution: Substitute konsole windows with
your own child windows (use libkonsole -- otherwise you loose search
functions, readline functions...).

There is no reliable way to automatically close finished konsole
sessions. Solution: Reprogram your konsole with libkonsole.

Abolish executing a command without a terminal. Only after you have
programmed a faster konsole.

Don't reset scrolling if I go the the previous dir: remember scroll
position for each dir.

OneFinger should remember args for programs not in path.

After you implemented dropping in applet, disable the behavior of
minimizing OneFinger when you switch task? But 1. this is needed for
ksnapshot to work; 2. you can't drag text from one app to another.


Consider selecting item icons to select the items for use in
metacommands such as drag.


use kio to better detect mimetypes.


When activating a window, mind transient_for flags?

k3b's modal progress dialog doesn't go on top of the window list, even
if activated.

optimize: discover why resizing the  OneFinger window is so slow

checking whether an argument is on the disk reads the cdrom...

add drop target to the taskbar. if you drop a dir, open it in the file
manager. if you drop exactly one nondir or one more file-or-dir, add
them to the command area.

in the taskbar, group never activated windows on top, and add a label.

add the mounted disks to the important locations

fallback to gnome-terminal

watch directories with FAM, so you don't need to refresh.

At regular intervals, parse ~/.bash_history.

When the user presses tab, autocomplete over the recent
arguments. Another tab cycles the completions.

Read .desktop files to get programs' description and icon. [But it
that even possible? when enumerating kio.KService.allServices(), I get
some programs twice, each time called with a different option. So I
don't have a list of program with names, but a list of program
invocations with names.]

Some users don't like to have to open everything in the terminal. Why?
Should we include a log window?

BUG: OneFinger won't restart if you close it in the directory
/media/cdrecorder (on suse). A temporary fix is to delete
"~/.one-finger/cur_dir" .

If you type the program by hand, the argument list does not appear. 

decide what must happen when two programs with same name are installed
in different paths.


don't add "" around clicked stuff uselessly. Read the bash guide to
know what the special characters are.

decide how to deal with commands like "./foo bar"

add toolbar button to insert relative filenames.

don't reset program scrolling. when you have frequent usage it's
difficult to repeat the same program twice.

don't reset files scrolling after executing a command. suppose you
sort by name, and want to execute a program (e.g. chmod) to all
files. Each time you have to scroll downwards.+

internationalization

allow the user to associate metadata to program arguments, so it does
not need to remember what they mean! This is important because if I
click dpkg-deb, OneFinger gives me the list of options, but even
looking at the options it is difficult to remember what they do. A
short explanation would make me recall.


each letter you type, OneFinger makes bash parse the string. Sometimes
bash fails, obviously, and prints an error on stdout. Verify what
happens on errors, and remove the message on stdout.


Add narrowing program-> file. It would be nice, when a program p is
clicked, to narrow all the files that wouldn't work with it. Doing so
automatically would require OneFinger to be omniscent, and we cannot
support it. A good compromise is to add a button besides programs to
narrow the files.


Discuss some way to know how to do some common actions like "play
music" for newbies that can't use the CLI. Maybe reintroduce a concept
index a-la segusoLand?  This is partially solved by showing
descriptions alongside programs: e.g. totem (multimedia player). The
user thath searches for the word play will fnid totem. But the program
list is not browsable! We could add another sorting mode "most common
programs first", which includes totem, etc.


allow files to be shown in a concise way in the command window.

make adding items to the list quicker, in order to remove the
truncation of the program list (which is done for efficiency).




2. DISCARDED IDEAS
------------------

Make the buttons flash more apparently with plastik. (it was a bug in
debian's kdeartwork, it's ok with suse)

Undo functionality? No. What would it undo?

make the wrappingbuttons appear pressed for a while? No it would make
the UI less responsive.

change ListBox to draw adjacent items with two different background
colors. useless: I separated the items with a nonconstant factor.

if the file has no extension, the bulb should be disabled? No.


find a way to put some "verbs" into the program list. Configuration
verbs, like a verb to add a dir to the important list. Or put a
dialog? Or simply a configuration file to edit by hand?

disable the clear buttons? no, you wouldn't have tooltips. OTOH they
are not needed.


If you add a togglebutton to select files for dragging, you can
automatically show the Windows panel when the first file is
selected. But the panel must be open anyway...
