diff -crB ./src/command_network.cc ../rtorrent-0.9.2/src/command_network.cc
*** ./src/command_network.cc	2012-03-20 20:25:05.000000000 +0400
--- ../rtorrent-0.9.2/src/command_network.cc	2012-05-06 00:35:03.249954526 +0400
***************
*** 241,246 ****
--- 241,255 ----
  
    CMD2_VAR_BOOL    ("log.handshake", false);
  
+   CMD2_ANY         ("colors.done_fg_color",       tr1::bind(&ui::Root::get_done_fg_color,   control->ui()));
+   CMD2_ANY_VALUE_V ("colors.done_fg_color.set",   tr1::bind(&ui::Root::set_done_fg_color,   control->ui(), tr1::placeholders::_2));
+   CMD2_ANY         ("colors.done_bg_color",       tr1::bind(&ui::Root::get_done_bg_color,   control->ui()));
+   CMD2_ANY_VALUE_V ("colors.done_bg_color.set",   tr1::bind(&ui::Root::set_done_bg_color,   control->ui(), tr1::placeholders::_2));
+   CMD2_ANY         ("colors.active_fg_color",     tr1::bind(&ui::Root::get_active_fg_color, control->ui()));
+   CMD2_ANY_VALUE_V ("colors.active_fg_color.set", tr1::bind(&ui::Root::set_active_fg_color, control->ui(), tr1::placeholders::_2));
+   CMD2_ANY         ("colors.active_bg_color",     tr1::bind(&ui::Root::get_active_bg_color, control->ui()));
+   CMD2_ANY_VALUE_V ("colors.active_bg_color.set", tr1::bind(&ui::Root::set_active_bg_color, control->ui(), tr1::placeholders::_2));
+ 
    // CMD2_ANY_STRING  ("encoding_list",    tr1::bind(&apply_encoding_list, tr1::placeholders::_2));
    CMD2_ANY_STRING  ("encoding.add", tr1::bind(&apply_encoding_list, tr1::placeholders::_2));
  
diff -crB ./src/display/canvas.cc ../rtorrent-0.9.2/src/display/canvas.cc
*** ./src/display/canvas.cc	2012-01-19 14:18:01.000000000 +0400
--- ../rtorrent-0.9.2/src/display/canvas.cc	2012-05-06 00:06:25.656718308 +0400
***************
*** 99,104 ****
--- 99,108 ----
    m_isInitialized = true;
  
    initscr();
+   start_color();
+   use_default_colors();
+   init_pair(2, -1, -1);
+   init_pair(1, -1, -1);
    raw();
    noecho();
    nodelay(stdscr, TRUE);
diff -crB ./src/display/window_download_list.cc ../rtorrent-0.9.2/src/display/window_download_list.cc
*** ./src/display/window_download_list.cc	2012-02-14 07:32:01.000000000 +0400
--- ../rtorrent-0.9.2/src/display/window_download_list.cc	2012-05-06 00:16:51.209242337 +0400
***************
*** 37,42 ****
--- 37,43 ----
  #include "config.h"
  
  #include <rak/algorithm.h>
+ #include <torrent/rate.h>
  
  #include "core/download.h"
  #include "core/view.h"
***************
*** 96,102 ****
      char* last = buffer + m_canvas->width() - 2 + 1;
  
      print_download_title(buffer, last, *range.first);
!     m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
      
      print_download_info(buffer, last, *range.first);
      m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
--- 97,117 ----
      char* last = buffer + m_canvas->width() - 2 + 1;
  
      print_download_title(buffer, last, *range.first);
!     m_canvas->print(0, pos, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
!     if( (*range.first)->is_done() ) {
!       if( (*range.first)->download()->info()->up_rate()->rate() != 0 ) {
!         m_canvas->set_attr(0, pos, m_canvas->width()-1, A_BOLD, 2);
!       } else {
!         m_canvas->set_attr(0, pos, m_canvas->width()-1, A_NORMAL, 2);
!       }
!     } else if( (*range.first)->is_active() ) {
!       if( (*range.first)->download()->info()->down_rate()->rate() != 0 ) {
!         m_canvas->set_attr(0, pos, m_canvas->width()-1, A_BOLD, 1);
!       } else {
!         m_canvas->set_attr(0, pos, m_canvas->width()-1, A_NORMAL, 1);
!       }
!     }
!     pos++;
      
      print_download_info(buffer, last, *range.first);
      m_canvas->print(0, pos++, "%c %s", range.first == m_view->focus() ? '*' : ' ', buffer);
***************
*** 108,111 ****
--- 123,162 ----
    }    
  }
  
+ void
+ WindowDownloadList::set_done_fg_color(int64_t color) {
+   short fg, bg;
+   pair_content(2, &fg, &bg);
+   if( color < 0 ) color = -1;
+   color = color % 8;
+   init_pair(2, (short)color, bg);
+ }
+ 
+ void
+ WindowDownloadList::set_done_bg_color(int64_t color) {
+   short fg, bg;
+   pair_content(2, &fg, &bg);
+   if( color < 0 ) color = -1;
+   color = color % 8;
+   init_pair(2, fg, (short)color);
+ }
+ 
+ void
+ WindowDownloadList::set_active_fg_color(int64_t color) {
+   short fg, bg;
+   pair_content(1, &fg, &bg);
+   if( color < 0 ) color = -1;
+   color = color % 8;
+   init_pair(1, (short)color, bg);
+ }
+ 
+ void
+ WindowDownloadList::set_active_bg_color(int64_t color) {
+   short fg, bg;
+   pair_content(1, &fg, &bg);
+   if( color < 0 ) color = -1;
+   color = color % 8;
+   init_pair(1, fg, (short)color);
+ }
+ 
  }
diff -crB ./src/display/window_download_list.h ../rtorrent-0.9.2/src/display/window_download_list.h
*** ./src/display/window_download_list.h	2012-01-19 14:18:01.000000000 +0400
--- ../rtorrent-0.9.2/src/display/window_download_list.h	2012-05-06 00:17:54.384949888 +0400
***************
*** 60,65 ****
--- 60,70 ----
  
    void                set_view(core::View* l);
  
+   void                set_done_fg_color(int64_t color);
+   void                set_done_bg_color(int64_t color);
+   void                set_active_fg_color(int64_t color);
+   void                set_active_bg_color(int64_t color);
+ 
  private:
    core::View*         m_view;
  
diff -crB ./src/main.cc ../rtorrent-0.9.2/src/main.cc
*** ./src/main.cc	2012-03-20 19:09:58.000000000 +0400
--- ../rtorrent-0.9.2/src/main.cc	2012-05-06 00:18:35.825432600 +0400
***************
*** 400,405 ****
--- 400,410 ----
      CMD2_REDIRECT        ("ip",         "network.local_address.set");
      CMD2_REDIRECT        ("port_range", "network.port_range.set");
  
+     CMD2_REDIRECT       ("done_fg_color", "colors.done_fg_color.set");
+     CMD2_REDIRECT       ("done_bg_color", "colors.done_bg_color.set");
+     CMD2_REDIRECT       ("active_fg_color", "colors.active_fg_color.set");
+     CMD2_REDIRECT       ("active_bg_color", "colors.active_bg_color.set");
+ 
      CMD2_REDIRECT_GENERIC("dht",      "dht.mode.set");
      CMD2_REDIRECT_GENERIC("dht_port", "dht.port.set");
  
diff -crB ./src/ui/download_list.cc ../rtorrent-0.9.2/src/ui/download_list.cc
*** ./src/ui/download_list.cc	2012-03-13 16:10:49.000000000 +0400
--- ../rtorrent-0.9.2/src/ui/download_list.cc	2012-05-06 00:19:37.916122052 +0400
***************
*** 138,143 ****
--- 138,149 ----
    current_view()->next_focus();
  }
  
+ display::WindowDownloadList*
+ DownloadList::current_window_list() {
+   return dynamic_cast<ElementDownloadList*>(m_uiArray[DISPLAY_DOWNLOAD_LIST])->window();
+ }
+ 
+ 
  void
  DownloadList::activate_display(Display displayType) {
    if (!is_active())
diff -crB ./src/ui/download_list.h ../rtorrent-0.9.2/src/ui/download_list.h
*** ./src/ui/download_list.h	2012-01-19 14:18:01.000000000 +0400
--- ../rtorrent-0.9.2/src/ui/download_list.h	2012-05-06 00:20:00.377223859 +0400
***************
*** 101,106 ****
--- 101,107 ----
    void                activate_display(Display d);
  
    core::View*         current_view();
+   display::WindowDownloadList* current_window_list();
    void                set_current_view(const std::string& name);
  
    void                slot_open_uri(SlotOpenUri s) { m_slotOpenUri = s; }
diff -crB ./src/ui/element_download_list.h ../rtorrent-0.9.2/src/ui/element_download_list.h
*** ./src/ui/element_download_list.h	2012-01-19 14:18:01.000000000 +0400
--- ../rtorrent-0.9.2/src/ui/element_download_list.h	2012-05-06 00:20:39.136381275 +0400
***************
*** 60,65 ****
--- 60,66 ----
    void                disable();
  
    core::View*         view() { return m_view; }
+   WDownloadList*      window() { return m_window; }
    void                set_view(core::View* l);
  
    void                receive_command(const char* cmd);
diff -crB ./src/ui/root.cc ../rtorrent-0.9.2/src/ui/root.cc
*** ./src/ui/root.cc	2012-01-19 14:18:01.000000000 +0400
--- ../rtorrent-0.9.2/src/ui/root.cc	2012-05-06 00:22:56.284169060 +0400
***************
*** 45,50 ****
--- 45,51 ----
  
  #include "core/manager.h"
  #include "display/frame.h"
+ #include "display/window_download_list.h"
  #include "display/window_http_queue.h"
  #include "display/window_title.h"
  #include "display/window_input.h"
***************
*** 66,72 ****
    m_windowTitle(NULL),
    m_windowHttpQueue(NULL),
    m_windowInput(NULL),
!   m_windowStatusbar(NULL) {
  }
  
  void
--- 67,77 ----
    m_windowTitle(NULL),
    m_windowHttpQueue(NULL),
    m_windowInput(NULL),
!   m_windowStatusbar(NULL),
!   done_fg_color(-1),
!   done_bg_color(-1),
!   active_fg_color(-1),
!   active_bg_color(-1) {
  }
  
  void
***************
*** 98,103 ****
--- 103,112 ----
    setup_keys();
  
    m_downloadList->activate(rootFrame->frame(1));
+   m_downloadList->current_window_list()->set_done_fg_color(done_fg_color);
+   m_downloadList->current_window_list()->set_done_bg_color(done_bg_color);
+   m_downloadList->current_window_list()->set_active_fg_color(active_fg_color);
+   m_downloadList->current_window_list()->set_active_bg_color(active_bg_color);
  }
  
  void
***************
*** 273,276 ****
--- 282,325 ----
    return m_windowInput->input();
  }
  
+ int
+ Root::get_done_fg_color() {
+   return done_fg_color;
+ }
+ 
+ void
+ Root::set_done_fg_color(int64_t color) {
+   done_fg_color = color;
+ }
+ 
+ int
+ Root::get_done_bg_color() {
+   return done_bg_color;
+ }
+ 
+ void
+ Root::set_done_bg_color(int64_t color) {
+   done_bg_color = color;
+ }
+ 
+ int
+ Root::get_active_fg_color() {
+   return active_fg_color;
+ }
+ 
+ void
+ Root::set_active_fg_color(int64_t color) {
+   active_fg_color = color;
+ }
+ 
+ int
+ Root::get_active_bg_color() {
+   return active_bg_color;
+ }
+ 
+ void
+ Root::set_active_bg_color(int64_t color) {
+   active_bg_color = color;
+ }
+ 
  }
diff -crB ./src/ui/root.h ../rtorrent-0.9.2/src/ui/root.h
*** ./src/ui/root.h	2012-01-19 14:18:01.000000000 +0400
--- ../rtorrent-0.9.2/src/ui/root.h	2012-05-06 00:23:45.134981128 +0400
***************
*** 83,88 ****
--- 83,97 ----
    void                set_down_throttle_i64(int64_t throttle) { set_down_throttle(throttle >> 10); }
    void                set_up_throttle_i64(int64_t throttle)   { set_up_throttle(throttle >> 10); }
  
+   int                 get_done_fg_color();
+   void                set_done_fg_color(int64_t color);
+   int                 get_done_bg_color();
+   void                set_done_bg_color(int64_t color);
+   int                 get_active_fg_color();
+   void                set_active_fg_color(int64_t color);
+   int                 get_active_bg_color();
+   void                set_active_bg_color(int64_t color);
+ 
    void                adjust_down_throttle(int throttle);
    void                adjust_up_throttle(int throttle);
  
***************
*** 105,110 ****
--- 114,124 ----
    WStatusbar*         m_windowStatusbar;
  
    input::Bindings     m_bindings;
+ 
+   int64_t             done_fg_color;
+   int64_t             done_bg_color;
+   int64_t             active_fg_color;
+   int64_t             active_bg_color;
  };
  
  }
