diff --git a/etc/default-theme.conf b/etc/default-theme.conf index f199b60..fd3d0e0 100644 --- a/etc/default-theme.conf +++ b/etc/default-theme.conf @@ -611,6 +611,10 @@ gemini-subscription-window.input.selected.background = cyan gemini-subscription-window.input.selected.foreground = black +gemini-subscription-window.uri.foreground = #ffac00 + +gemini-subscription-window.count.foreground = #ffac00 + # gemini text table of contents window gemini-toc-window.height = 1 diff --git a/src/gemini-subscription-window.lisp b/src/gemini-subscription-window.lisp index 9e867ed..f7ea756 100644 --- a/src/gemini-subscription-window.lisp +++ b/src/gemini-subscription-window.lisp @@ -39,19 +39,33 @@ object) (defun gemlog->text (gemlog-db-row window) - (format nil - "~a ~s ~a/~a" - (tui:text-ellipsis (db:row-title gemlog-db-row) - (truncate (/ (win-width window) - 3))) - (if (db:row-subtitle gemlog-db-row) - (tui:text-ellipsis (db:row-subtitle gemlog-db-row) - (truncate (/ (win-width window) - 3))) - (_ "No subtitle")) - (db:row-unseen-count gemlog-db-row) - (+ (db:row-unseen-count gemlog-db-row) - (db:row-seen-count gemlog-db-row)))) + (let ((unseen-count (db:row-unseen-count gemlog-db-row))) + (reduce (lambda (a b) (cat-tui-string a b :color-attributes-contagion nil)) + (list (make-tui-string (format nil + " ~a/~a " + unseen-count + (+ unseen-count + (db:row-seen-count gemlog-db-row))) + :fgcolor (when (> unseen-count 0) + (swconf:gemini-subscription-count-fg))) + (make-tui-string (format nil + "~a" + (tui:text-ellipsis (db:row-url gemlog-db-row) + (truncate (* (win-width window) + 1/3)))) + :fgcolor (when (> unseen-count 0) + (swconf:gemini-subscription-url-fg))) + (make-tui-string (format nil + " ~a ~s" + (tui:text-ellipsis (db:row-title gemlog-db-row) + (truncate (* (win-width window) + 1/3))) + (if (db:row-subtitle gemlog-db-row) + (tui:text-ellipsis (db:row-subtitle gemlog-db-row) + (truncate (* (win-width window) + 1/3))) + (_ "No subtitle"))) + :attributes (attribute-bold)))))) (defmethod resync-rows-db ((object gemini-subscription-window) &key diff --git a/src/package.lisp b/src/package.lisp index 9730b57..99b8dd4 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -1218,6 +1218,8 @@ :gemini-h3-prefix :gemini-bullet-prefix :gemini-preformatted-fg + :gemini-subscription-url-fg + :gemini-subscription-count-fg :gemini-certificates-window-colors :gemini-toc-padding-char :signature-file-path diff --git a/src/software-configuration.lisp b/src/software-configuration.lisp index f194aea..4c4d97a 100644 --- a/src/software-configuration.lisp +++ b/src/software-configuration.lisp @@ -479,6 +479,7 @@ position exclusive mode + count toc downloading animation @@ -494,6 +495,7 @@ padding value scheme + uri link links http @@ -776,6 +778,18 @@ +key-foreground+) :white)) +(defun gemini-subscription-url-fg () + (access-non-null-conf-value *software-configuration* + +key-gemini-subscription-window+ + +key-uri+ + +key-foreground+)) + +(defun gemini-subscription-count-fg () + (access-non-null-conf-value *software-configuration* + +key-gemini-subscription-window+ + +key-count+ + +key-foreground+)) + (defun gemini-certificates-window-colors () "return three color values" (values (access:accesses *software-configuration* @@ -1464,6 +1478,8 @@ #'gemini-h2-prefix #'gemini-h3-prefix #'gemini-bullet-prefix + #'gemini-subscription-url-fg + #'gemini-subscription-count-fg #'signature-file-path #'window-titles-ends #'tags-new-message-mark