[Konsole2.Requirements]

The current state of konsole asks for a redesign.

While lower level material, especially the emulation
comes out to be very stable over the years, the upper
level level shifts because of new uses and fulfilled
wishes.

These cannot be implemented by evolutionary modification
but require complete redesign/rewrites.

This file is to collect requirements and ideas for this.

- Here are some candidates -----------------------------

- proper partification

  While konsole became a proper platform for terminal
  oriented working, fine integration with the desktop
  did not happen yet.

- connection/disconnect session to/from individual windows

- gui style configuration for $KDEDIR/share/apps/konsole/*

- improved history algorithm

  Current history algorithm does not allow to limit the
  histories size. Also, it descreases the speed.

- improve unicode support

  this is both an ncurses and terminfo issue.
  We may need to provide some help for these packages.

- tty vs. fullscreen mode solution.

  The visual appearence of the problem is that information
  may get lost when the screen is resized. Likely, lines
  scrolled into the history could be unfolded.

- systematic solution for the configuration issue.

  Konsole can be configured from many sources.
  Adding or changing configuration items needs
  to be localized.

  The compiled-in defaults should consistently
  be handled like the default.Keytab.

- Multi session startup

  Having multible sessions in the beginning 
  would be a nice option.

- Event flow and class design.

  The Emulation::setConnect logic has severe flaws.
  The whole class design needs to be revisited in
  light of the session material that came in, too.
  Likely, cut&paste happily flows from the back
  through the chest right into the eye.

- Improved integration of technical documentation.

  This is a freeware project and so, proper technical
  documentation is even more importent than in a
  commertial environment.

- A more generic handling of different sorts of emulations.

  This means to fix a long term problem in mc(1) first,
  to allow using terminfo entries other then 'xterm'.

  We could use these then to weed out obsolete material
  and to make konsole having an ECMA compatible emulation
  by default. This would perhaps allow to pull the emulation
  straight again.

... Check through wishlist and FIXME/Notes/PROJECTS

--------------------------------------------------------
- copy of the earlier file PROJECTS --------------------

The state of konsole is that the lower level mechanics are very
stable, while the overall program still shifts purpose.

After a year or two of these shifts the upper levels ask for a
redesign. This will come out to be konsole2.

I'll start a Konsole2.requierements instead of this file.

- current issues -------------------------------------------------

- add configuration for function keys. (allmost done)
  document broken keypad (It's a QT issue really)
  document VT100 keypad codes (doc/missing.keys)

* configuration

  - codec selection unfinished.
  - command line options
    font, menu, scrollbar, schema, kdelnk, codec, keytrans, ...

* improve/complete documentation

  - include README.* into doc.
  - explain configuration files



* future stuff, perhaps ------------------------------------------


* stuff centered around resizing and text vs. matrix:

  [This needs a bit explaination]

  - make resizing more clever
    to see the issue, 'ls /dev', make window smaller
    and then larger again.
  - introduce the concept of "logical lines" for resizing and
    cut'n'paste.
  - selecting lines that wrap insert a '\n' in the middle of the
    line when pasting. A related problem occures with resizing.

* write configuration utility for configuration files.
  (*.schema,*.kdelnk.*.keytab)

- when manipulating binary files, sometimes one
  screws up ones terminal settings.  xterm has
  a convenient 'hard reset' menu choice.

- keep session open after client program termination.
  Useful for things like 'konsole -e ls'.

- deflicker, setting all the attributes separately
  both when creating and changing to a session
  creates 3 setimage and 1 paint events. (This may
  have improved, lately).
