Sesje i odłączanie

repartee może działać w tle po zamknięciu terminala i pozwolić na ponowne podłączenie później -- jak tmux lub screen, ale wbudowane w klienta.

Jak to działa

Kiedy uruchamiasz repartee, program rozdziela się na dwa procesy:

  • Backend -- bezgłówkowy demon zarządzający połączeniami IRC, stanem i gniazdem Unix
  • Shim -- lekki most terminalowy, który renderuje interfejs i przekazuje dane wejściowe

Gdy się odłączysz, shim kończy pracę i wraca wiersz poleceń powłoki. Backend kontynuuje działanie -- połączenia IRC pozostają aktywne, wiadomości są nadal logowane, a skrypty działają. Po ponownym podłączeniu nowy shim łączy się z gniazdem backendu i kontynuujesz dokładnie tam, gdzie skończyłeś.

Odłączanie

Trzy sposoby na odłączenie się od działającej sesji:

MetodaOpis
/detachWpisz polecenie w pasku wejściowym
Ctrl+\Skrót klawiszowy (backslash)
Ctrl+ZSkrót klawiszowy

Po odłączeniu terminal jest przywracany i wraca wiersz poleceń powłoki. Proces repartee kontynuuje działanie w tle.

Ponowne podłączanie

repartee a           # podłącz do jedynej działającej sesji
repartee a 12345     # podłącz do konkretnej sesji po PID
repartee attach      # pełna forma

Jeśli działa wiele sesji, repartee a wyświetla ich listę do wyboru:

Active repartee sessions:
  PID 12345 — ~/.repartee/sessions/12345.sock
  PID 67890 — ~/.repartee/sessions/67890.sock
Specify a PID: repartee a <pid>

Uruchamianie bez terminala

Możesz uruchomić repartee bez terminala:

repartee -d          # uruchom odłączony (bezgłówkowo)
repartee --detach    # pełna forma

Uruchamia to backend bezpośrednio -- nie otwiera się terminal, nie wyświetla się ekran powitalny. Połączenia IRC są nawiązywane, skrypty ładowane, a gniazdo tworzone natychmiast. Podłącz się, gdy będziesz gotowy, za pomocą repartee a.

Przydatne dla serwerów, skryptów startowych lub uruchamiania repartee jako usługi systemd.

Pliki sesji

Sesje są śledzone za pomocą gniazd Unix w ~/.repartee/sessions/:

~/.repartee/sessions/
  12345.sock    # socket for PID 12345
  67890.sock    # socket for PID 67890

Nieaktualne gniazda po zawieszonych lub zabitych procesach są automatycznie czyszczone przy uruchomieniu i podczas listowania sesji.

Wiele sesji

Możesz uruchomić wiele niezależnych instancji repartee, każda z własnym PID i gniazdem. Jest to przydatne do łączenia się z odrębnymi sieciami pod różnymi tożsamościami.

Każda sesja uruchamia własną pętlę zdarzeń, połączenia IRC i skrypty. Użyj repartee a <pid>, aby podłączyć się do konkretnej sesji.

Co przetrwa odłączenie

Wszystko:

  • Połączenia IRC -- pozostają połączone, kontynuują odbieranie wiadomości
  • Historia czatu -- bufory przewijania są zachowywane w pamięci
  • Zapis logów -- wiadomości są nadal zapisywane do SQLite
  • Skrypty -- skrypty Lua działają dalej (timery, handlery zdarzeń)
  • Stan kanału -- listy nicków, topiki, tryby, listy banów
  • Historia poleceń -- historia wprowadzonych poleceń jest zachowywana

Zmiana terminala

Gdy podłączasz się ponownie z innego terminala (lub innego emulatora terminala), repartee automatycznie:

  • Wykrywa możliwości protokołu obrazów nowego terminala (Kitty, iTerm2, Sixel)
  • Aktualizuje pomiary rozmiaru czcionki dla prawidłowego skalowania obrazów
  • Dostosowuje interfejs do wymiarów nowego terminala

Oznacza to, że możesz odłączyć się z iTerm2 na laptopie i podłączyć się ponownie z kitty na komputerze stacjonarnym -- podglądy obrazów będą używać prawidłowego protokołu dla każdego terminala.

Obsługa SIGHUP

Jeśli terminal zostanie nieoczekiwanie zamknięty (zamknięcie okna, rozłączenie SSH itp.), repartee przechwytuje SIGHUP i automatycznie się odłącza zamiast się wywalać. Sesja pozostaje uruchomiona i można się do niej ponownie podłączyć.

Wbudowana powłoka

Zamiast odłączać się, żeby uruchomić szybkie polecenie, możesz otworzyć powłokę bezpośrednio wewnątrz repartee:

/shell                               # otwórz $SHELL
/shell cmd htop                      # uruchom konkretne polecenie
/shell cmd vim "ścieżka ze spacjami" # argumenty w cudzysłowie są parsowane bezpośrednio bez rozwijania przez powłokę
/shell list                          # wyświetl otwarte powłoki
/shell close                         # zamknij aktywną powłokę

Bufory powłoki pojawiają się w grupie "Shell" na pasku bocznym. Naciśnij Ctrl+], aby przejść z powrotem do trybu wejścia IRC, lub użyj skrótów nawigacji między oknami (Alt+1–9/0, Alt+Lewo/Prawo, Alt+A bądź własnych skrótów nawigacji z /bind), aby przełączyć bezpośrednio na inny bufor. Wszystkie pozostałe naciśnięcia klawiszy są przekazywane do powłoki.

Pełnoekranowe programy TUI (btop, vim, irssi, weechat) działają prawidłowo, w tym obsługa myszy, 256 kolorów i alternatywny bufor ekranu.

Zobacz dokumentacja polecenia /shell, aby poznać szczegóły.

Wskazówki

  • Sprawdź działające sesje: repartee a bez argumentów wyświetla wszystkie aktywne sesje
  • Czyste zamknięcie: użyj /quit z podłączonej sesji, aby rozłączyć się z IRC i zamknąć backend
  • Wymuszone zakończenie: kill <pid> wysyła SIGTERM -- repartee wysyła QUIT do serwerów IRC i zamyka się czysto
  • Skrypt startowy: dodaj repartee -d do profilu powłoki lub skryptu startowego systemu, aby zawsze mieć gotową sesję