         size >>size
     ] change-font f >>line-height drop
     ostream output-stream set ;
+
+<PRIVATE
+
+:: adjust-listener-font-size ( listener delta -- )
+    listener input>> :> interactor
+    interactor output>> :> output
+    interactor
+        [ clone [ delta + ] change-size ] change-font
+        f >>line-height
+    font>> size>> font-size output style>> set-at ;
+
+PRIVATE>
+
+: com-font-size-plus ( listener -- )
+    2 adjust-listener-font-size ;
+
+: com-font-size-minus ( listener -- )
+    -2 adjust-listener-font-size ;
+
+listener-gadget "fonts" f {
+    { T{ key-down f { A+ } "+" } com-font-size-plus }
+    { T{ key-down f { A+ } "=" } com-font-size-plus }
+    { T{ key-down f { A+ } "_" } com-font-size-minus }
+    { T{ key-down f { A+ } "-" } com-font-size-minus }
+} define-command-map

listener-gadget default-font-size  { 50 58 } n*v set-tool-dim

: listener-streams ( listener -- input output )
    [ input>> ] [ output>> <pane-stream> ] bi ;

: init-input/output ( listener -- listener )
    <interactor>

    ] with-default-style nl nl ;

: listener-thread ( listener -- )
    dup input>> dup output>> [
        [ com-browse ] help-hook set
        '[ [ _ input>> ] 2dip debugger-popup ] error-hook set
        error-summary? off
