def NcursesInterface::init
        
        $resize_queue ||= Queue.new
        $resize_thread ||= Thread.new($resize_queue) { |q| 
          loop {
            q.pop
            Ncurses::endwin
            
            
            NcursesInterface::resize_term
            $update_wins = true
          }
        }
        
        trap('WINCH') { $resize_queue << '1' }
        
        Ncurses::initscr
        Ncurses::raw if $config['use_raw_mode']
        Ncurses::keypad Ncurses::stdscr, 1
        Ncurses::noecho if $config['use_noecho']
        Ncurses::start_color
        
        
        
        
        
        $config['color_palette'].each { |ary| Ncurses::init_pair(*ary) }
        
        
        h = []; w = []
        Ncurses::getmaxyx Ncurses::stdscr, h, w
        $config['w'] = w[0]
        $config['h'] = h[0] - 1
        
        
        
        
        
        
        
        
        
        $new_status = ''
        NcursesInterface::set_status($config['msg_welcome'] % [$VERSION])
        
        
        $a_win = 0
        $wins = []
        $config['theme']['window_order'].each { |i|
          case i
            when /feed/:  cl = NcursesInterface::ListWindow
            when /item/:  cl = NcursesInterface::ListWindow
            when /desc/:  cl = NcursesInterface::TextWindow
          else
            raise "Unknown window #{i}"
          end
          $wins << cl.new($config['theme']["win_#{i}"])
          
        }
        NcursesInterface::set_active_win(0)
        
        $a_feed, $a_item = 0, 0
        
        
        NcursesInterface::populate_feed_win
        
        NcursesInterface::select_feed(0)
        NcursesInterface::set_active_win(0)
      end