La bibliothèque curses sait gérer le fenêtrage. Voici un programme qui montre comment faire.

C’est une traduction en ruby d’un programme C issu d’un tutoriel sur ncurses (dont je ne retrouve plus la référence dans l’immédiat).

require 'curses'
include Curses

def create_newwin(height, width, top, left)
  local_win = Window.new(height, width, top, left)
  local_win.box(?|, ?-)
  local_win.refresh
  local_win
end

def destroy_win(w)
  w.clear
  w.refresh
  w.close
end

begin
  init_screen
  cbreak
  stdscr.keypad(true)
  height = 3
  width = 10
  top = (lines - height) / 2
  left = (cols - width) / 2
  addstr("Press F1 to exit")
  refresh
  my_win = create_newwin(height, width, top, left)

  while (ch = getch) != KEY_F1
    case ch
    when KEY_LEFT then left -= 1
    when KEY_RIGHT then left += 1
    when KEY_UP then top -= 1
    when KEY_DOWN then top += 1
    end
    destroy_win(my_win)
    my_win = create_newwin(height, width, top, left)
  end
ensure
  close_screen
end

En étudiant ce programme avec en parallèle la documentation ruby de curses, vous devriez comprendre sans problèmes la gestion des fenêtres.

À demain.