
Konsole for KDE 4.0

Contributing
============

If you would like to help with one of the 
TODOs mentioned, and want help getting started, 
please subscribe to the konsole-devel
mailing list and send an email to it:

https://mail.kde.org/mailman/listinfo/konsole-devel

The KDE 4.0 TODO List:
======================

=== ESSENTIAL FEATURES ===

- Input Method Event in terminal display widget

    [ IN PROGRESS - NEEDS TESTING ]


- Implement changing of the Konsole window size by
  terminal applications.
    - Consider behaviour when there are multiple views open 
      on a single session.


- Implement a DBus interface for Konsole.
  Look for Konsole bug reports on bugs.kde.org containing
  the term "DCOP" for ideas on what users would like
  to be able to do using Konsole's scripting facilities.

    In order of priority:
        - Create new Konsole sessions
        - Send text to existing Konsole sessions
        - Read text printed to screen

        ( from there konsoleprofile can be used to change other settings )


== ESSENTIAL TWEAKS ==

- Better documentation for shortcuts to move between views
  (Shift+<Arrows> and Shift+Tab)

- [BUGREPORT] Double clicking on the tab bar should open a new tab 

- [BUGREPORT] Double clicking on a tab should prompt to rename it

- Determining which view is focused in split view mode is currently difficult, the only
  indication is the cursor's appearence (and then, only with a block cursor).

  Draw a frame around the view to solve this problem?

== BUGS ==

- 'Show MenuBar' session context menu action not showing up in session context menu here,
   apparently is showing up on at least one other person's build.

- Keyboard shortcuts for session-specific actions no longer work properly in split-view mode,
  there is a warning about ambiguous shortcuts printed to the terminal.  Activating the 
  items from the menu does work. 

- Allow the user to over-ride the "no Ctrl+[Key] shortcuts" limitation with shortcuts
set in the configuration dialog, but warn the user if they try to do so.  This is the 
behaviour in KDE 3.

- Splitting the view currently triggers an image size update for each open view on the
image.  A more efficient solution such as buffering successive image size changes would
be better.  This would also help with applications such as Midnight Commander which
do not always behave well with lots of successive image size changes.

- Toggling the taglist in the Vim 7 taglist plugin causes the screen to resize to a smaller number of columns

- Scrolling the display with filters active does not clear or update the filters. 
 
- It is not clear to some users how the 'Show in Menu' (favorites) features works,
  plus the default Shell profile is not marked as a favorite by default

== DOCUMENTATION ==

- Re-write the handbook contents to be up to date with the new user interface

== NON-ESSENTIAL TWEAKS (if spare time for 4.0, otherwise for post-4.0) ==

- Support for common terminal command line options

    Nice to have:
        -fg : Specify foreground color
        -bg : Specify background color 

- Currently splitting the view creates a new terminal widget for each session
  in the new view.  This will have a perceptible performance impact for 
  users who have ten, twenty or more tabs open.  Add facilities to
  delay creating the views until they are needed.

  == > Note, Qt only actually creates the X11 window when it is shown and 
       not before.

  == > Note. Qt will do away with native X11 windows for non-toplevel widgets
       in Qt 4.4, that might solve the problem for us.

- Ability to define bold or transparent status for each
  color in the color scheme.  Make the setting of 
  boldness for characters more intuitive than in the KDE 3
  series.

  (Can be done in the .colorscheme file, currently no GUI options)

- More intelligent tab title format which can adjust its output
  to display more relevant information depending upon the 
  command being run.  eg.  If the current command is "svn"
  then the operation ( checkout, update, remove etc. ) 
  could be included as well.

== NON-ESSENTIAL FEATURES ==

- Automatic switching of profiles on 
    - Change of directory
    - Change of running program
    - Change of connection
    - Change of normal / root user command state

  Out of the box, provide automatic profile switching for
    - Normal / root command state
    - Possibly local vs. remote commands

  Again, for easier identification of what is going on in
  a Konsole window at a glance.

  -> Suggested in survey:  Random colors which are specific
  to the directory, program or host of the active session,
  using a hash of the dir/program/host name etc.

- Provide access to alternative navigation methods other than 
  tabs.  For sys-admins who use Konsole to access tens of
  different servers at once.

  eg.  List view

== USER INTERFACE ===

- Check the various dialogs etc. against the KDE 4
  HIG guidelines and identify problems.

  User interface guidelines can be found here:

  http://wiki.openusability.org/guidelines/index.php/Main_Page

== "ARTWORK" ==

- Design a small set of attractive color schemes to ship with Konsole
  in KDE 4.  Look in the developer-doc/research/konsole-survey-findings
  file for information on current Konsole user's preferred color schemes
  and comments on those colors.

  The color schemes need to be tested with popular terminal applications
  such as Vi, Midnight Commander and so on.

  They can be created using Konsole's built-in color scheme editor ( the 
  new KDE 4 one ).

=== KNOWN BUGS ===

- Some of the menu items are not showing up in the correct order,
  which produces menus that appear to have a strange layout to them.

  Find a fix for this problem.  May require kdelibs fixes.

- Launching of links when clicked on is not working properly.
  This only consists of one very simple line of code in Konsole which
  uses facilities from kdelibs - so the problem is likely
  incorrect use of the kdelibs class or a bug in kdelibs

=== KNOWN ISSUES ===

- Profile shortcuts only work for favorite profiles.

=== TESTING ===

- Test various terminal applications in Konsole, particularly
  complex interactive ones and report problems encountered
  with them.

- Test the unicode support in Konsole, find text that
  doesn't display properly and fix that if possible.

- Test font support in Konsole, find fonts that do 
  not look correct ( compared with other KDE applications )
  or have other problems and fix them.

- General Konsole testing.  Find inputs that cause it
  to crash and burn and fix them.

- Test Konsole's terminal features using the "vttest"
  program produces by the Xterm authors.  Fix any
  bugs which that testing finds.


=== DONE ===

- Display a warning if, on an un-composited desktop, the user chooses a colour scheme which uses
  transparency.

- Get the Konsole part working properly in other
  major KDE programs, such as Dolphin,
  KDevelop, Kate etc.

  Essential:    Make the part function and be stable in
                Dolphin, KDevelop and Kate

- Support for common terminal command line options
    Essential:
        -e  : Execute command with arguments
    Nice To Have:
        - Ability to pass string for profile options on 
          command line (same syntax as for konsoleprofile)

- Pressing a keyboard scroll key combination causes the view to scroll
  to the bottom of the output

- Pressing and releasing the Alt key does not focus the menu as it should.  
  This prevents keyboard navigation of the menu items.  MUSTFIX for KDE 4.

  >> Appears to be a style-dependant problem.  Works with supplied Qt styles.

- When composing the short directory name for the tab title, 
  add a means to strip or ignore common prefixes such 
  as 'src','build','tmp','bin','lib' etc. to provide better
  differentiated tab titles when tabs are open in multiple
  different directories.

  eg.

  If tabs are open in:

    /path/to/konsole/src/

    and

    /path/to/kate/src/

  '%d' in tab titles would be replaced with 'konsole/s' and
  'kate/s' instead of 'src' in both.

- Random background colors in color schemes, for easy
  identification of Konsole windows when several are open
  at once.

- KEYBOARD:  Backspace key in Vim does not work.
- KEYBOARD:  Pressing Alt+Number just prints the number instead of 
             something else.

- Alt modifiers cannot be used to access menu items because they are 
  used by the terminal.

  FIX:  Press and release Alt key to focus menu

- When loading a profile from disk, load the parent profile if necessary
  and assign it to be the parent of the new profile.

- Editing of key bindings
  ( this is the list which maps key sequences pressed by
    the user to the corresponding text sequences
    which are send to the terminal )


- When splitting the view, avoid scrolling existing views.

- Changing of profile settings via a command-line tool
  ( konsoleprofile )

- Allow the window title set by the terminal program
  to be used in the title bar of the Konsole window,
  and/or the tab for the relevant terminal session.

- When new output is added to a session, views should avoid
  scrolling if possible unless they are tracking the output
  or if the lines that the view was showing have been removed
  ( because the history is only storing a fixed number of lines,
    and that limit has been reached so lines are being removed )

- Proper transparency for Konsole windows

    ( Konsole currently allows the user to specify
      the amount of transparency for each color
      scheme, and change it in the settings dialog -
      what remains to be done is actually make use
      of that setting when drawing the terminal
      display )

- Changing of profile used by current session
- Make custom shortcuts work to create new sessions. 

- Detect availability of composite transparency on startup
  ( before Konsole::Application constructor ) and start
  the application using the appropriate visuals and
  colormap.  If the visual/colormap needed for
  transparency is used when compositing is not available,
  lots of visual glitches with menus etc. occur

