dotfiles/nyxt/statusline.lisp
2024-03-23 05:46:12 +01:00

74 lines
2.8 KiB
Common Lisp
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(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)))