dotfiles/nyxt/statusline.lisp

74 lines
2.8 KiB
Common Lisp
Raw Normal View History

2024-03-23 05:46:12 +01:00
(in-package #:nyxt-user)
;; Set StatusLines Mode Icons
(define-configuration status-buffer ((glyph-mode-presentation-p t)))
(define-configuration nyxt/force-https-mode:force-https-mode ((glyph "")))
(define-configuration nyxt/blocker-mode:blocker-mode ((glyph "")))
(define-configuration nyxt/proxy-mode:proxy-mode ((glyph "")))
(define-configuration nyxt/reduce-tracking-mode:reduce-tracking-mode ((glyph "")))
(define-configuration nyxt/certificate-exception-mode:certificate-exception-mode ((glyph "")))
(define-configuration nyxt/style-mode:style-mode ((glyph "")))
(define-configuration nyxt/help-mode:help-mode ((glyph "")))
(define-configuration nyxt/web-mode:web-mode ((glyph "ω")))
(define-configuration nyxt/auto-mode:auto-mode ((glyph "α")))
;;;; Set StatusLines URL Icons
(defun laconic-format-status-load-status (buffer)
(if (web-buffer-p buffer)
(case (slot-value buffer 'nyxt::load-status)
(:unloaded "∅")
(:loading "∞")
(:finished ""))
""))
Remove https/www from URL
(defun laconic-format-status-url (buffer)
(markup:markup
(:span
(format nil "~a ~a"
(laconic-format-status-load-status buffer)
(ppcre:regex-replace-all
"(https://|www\\.|/$)"
(render-url (url buffer))
"")))))
;;
;;;; Set StatusLines Webpage Loadtime
(defun laconic-format-status-modes (buffer window)
(str:concat
(format-status-modes buffer window)
" | "
(format nil "~d:~d"
(mod (+ 5 (local-time:timestamp-hour (local-time:now))) 24)
(local-time:timestamp-minute (local-time:now)))))
;;
;;;; Configure StatusLines Design
(defun laconic-format-status (window)
(flet ((input-indicating-background ()
(format nil "background-color: ~:[#50fa7b~;#ff5555~]"
(or (current-mode 'vi-insert)
(current-mode 'input-edit)))))
(let ((buffer (current-buffer window)))
(markup:markup
(:div :id "container"
(:div :id "controls"
:style (input-indicating-background)
(markup:raw ""))
(:div :class "arrow arrow-right"
:style (input-indicating-background) "")
(:div :id "url"
(markup:raw
(laconic-format-status-url buffer)))
(:div :class "arrow arrow-right"
:style "background-color:#21222C" "")
(:div :id "tabs"
(title buffer))
(:div :class "arrow arrow-left"
:style "background-color:#21222C" "")
(:div :id "modes"
:title (nyxt::list-modes buffer)
(laconic-format-status-modes buffer window)))))))
;;
;;;; Define Current Configuration
(define-configuration window
((status-formatter #'laconic-format-status)))