dunlin/musing.md

1.7 KiB

what if ... a web browser, but tabs were more like emacs buffers?

buffer attributes:

  • url
  • viewport (this is a departure from the emacs buffer)

commands

A command is a description of a function that may be invoked interactively, and the parameters it expects.

(define-command "visit-location"
 visit-location
 {:url Type.Url input-from-minibuffer})

;; hit "g" and then enter the location in the minibuffer
(bind-key "g" (command "visit-location"))
;; hit "h" to go straight to your home page
(bind-key "h" (command "visit-location")
  {:url (Type.Url "https://home.example.com")})
;; left mouse click on minibuffer hit "h" to go straight to your home page
(bind-event Dunlin.minibuffer :button-1-click (command "visit-location"))

when it is run from the command prompt, each parameter is prompted, with appropriate defaults.

when it is bound to a key chord/sequence, the binding may specify where it gets its parameters from - otherise

visit-location visit-location-in-new-buffer run-command back switch-to-buffer save-file save-link

objects/data types

buffer Buffer.find ;; by name, title, url Buffer.by_name (maybe?)

buffer has-a webview but it is not shown by default. Later we may add some kind of webview reuse so that invisible and old buffers don't need to have a webview until needed.

frame Frame.the-frame frame.set-buffer (buffer) frame.get-buffer => buffer frame.commander - text entry widget frame.actions - container of toolbar buttons

location (url) document document element(?) webview lua's standard types

getting started

gtk stuffz for frame/commander/initial buffer command parser hooked to commander visit-location command