// Package pager provides a pager (similar to less) for the terminal. // // $ cat file.txt | gum page package pager import ( "github.com/charmbracelet/bubbles/viewport" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" ) type model struct { viewport viewport.Model helpStyle lipgloss.Style } func (m model) Init() tea.Cmd { return nil } func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switch msg := msg.(type) { case tea.WindowSizeMsg: m.viewport.Width = msg.Width m.viewport.Height = msg.Height - 1 case tea.KeyMsg: switch msg.String() { case "q", "ctrl+c", "esc": return m, tea.Quit } } var cmd tea.Cmd m.viewport, cmd = m.viewport.Update(msg) return m, cmd } func (m model) View() string { return m.viewport.View() + "\n" + m.helpStyle.Render("↑/↓: Navigate • q: Quit") }