[StumpWM, Bin] Rework modeline appearance, make it Powerlined!
Also create script `mu-unread' in order to get the amount of unread emails I have in my maildir.
This commit is contained in:
parent
52705bf2a0
commit
501c8040eb
@ -255,6 +255,18 @@ sudo chmod a+rw /opt/flutter/version
|
|||||||
sudo chown $USER:(id -g $USER) /opt/flutter/bin/cache
|
sudo chown $USER:(id -g $USER) /opt/flutter/bin/cache
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
** mu-unread
|
||||||
|
:PROPERTIES:
|
||||||
|
:HEADER-ARGS: :shebang "#!/usr/bin/env sh" :tangle ~/.local/bin/mu-unread
|
||||||
|
:CUSTOM_ID: cli-utilities-mu-unread-f8t7tf20o8j0
|
||||||
|
:END:
|
||||||
|
~mu-unread~ is a very simple utility that simply returns the amount of
|
||||||
|
unread emails I have through the use of ~mu~.
|
||||||
|
#+begin_src sh
|
||||||
|
UNREAD=$(mu find "flag:unread AND (maildir:/Inbox OR maildir:/Junk)" | wc -l)
|
||||||
|
printf "Mail: %s" $UNREAD
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Pinfo :noexport:
|
** Pinfo :noexport:
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:HEADER-ARGS: :shebang "#!/usr/bin/env fish" :tangle no
|
:HEADER-ARGS: :shebang "#!/usr/bin/env fish" :tangle no
|
||||||
|
@ -370,7 +370,7 @@ Let’s also indicate how the groupname is displayed.
|
|||||||
The window format should display first its window number, then its
|
The window format should display first its window number, then its
|
||||||
titled, limited to 30 characters.
|
titled, limited to 30 characters.
|
||||||
#+begin_src lisp
|
#+begin_src lisp
|
||||||
(setf *window-format* "%n: %30t")
|
(setf *window-format* "%n: %t")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Here are some modules that we will load for the modeline:
|
Here are some modules that we will load for the modeline:
|
||||||
@ -391,7 +391,7 @@ Here are some modules that we will load for the modeline:
|
|||||||
"\n")
|
"\n")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS[75023085d7c69ae09044826218830e6b678d5959]: gen-load-modeline-modules
|
#+RESULTS[125d7bbaa15ee28f0baf4cad59c4742ac372853b]: gen-load-modeline-modules
|
||||||
#+begin_src lisp
|
#+begin_src lisp
|
||||||
(load-module "battery-portable")
|
(load-module "battery-portable")
|
||||||
(load-module "cpu")
|
(load-module "cpu")
|
||||||
@ -399,18 +399,75 @@ Here are some modules that we will load for the modeline:
|
|||||||
(load-module "wifi")
|
(load-module "wifi")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
We can indicate what to display in our modeline. Be aware the ~^>~
|
|
||||||
string will align the rest of the string to the right of the modeline.
|
|
||||||
~%g~ will display the group list, while ~%v~ will display the list of
|
|
||||||
windows that are in the current group, with the active one
|
|
||||||
highlighted, and ~%u~ will display urgent windows if there are any. ~%d~
|
|
||||||
on the other hand will display the date in the format set above, while
|
|
||||||
~%B~ will display the battery level of the laptop.
|
|
||||||
#+begin_src lisp
|
#+begin_src lisp
|
||||||
(setq cpu::*cpu-modeline-fmt* "%c"
|
(setq cpu::*cpu-modeline-fmt* "%c"
|
||||||
mem::*mem-modeline-fmt* "%a %p"
|
mem::*mem-modeline-fmt* "%a %p"
|
||||||
wifi:*wifi-modeline-fmt* "%e %P"
|
wifi:*wifi-modeline-fmt* "%e %P"
|
||||||
,*screen-mode-line-format* (list "%g %v %u ^> %I | %C | %M | %B | %d"))
|
wifi:*use-colors* nil
|
||||||
|
,*mode-line-highlight-template* "<~A>"
|
||||||
|
,*hidden-window-color* "^**")
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
We can indicate what to display in our modeline. Each formatter will
|
||||||
|
be separated by a Powerline separator with the code point ~0xE0B0~ in
|
||||||
|
the font I am using (see §[[#Theme-Fonts-28pc8141v5j0]]).
|
||||||
|
#+name: modeline-format
|
||||||
|
| Formatter | What it does | Command? |
|
||||||
|
|-----------+-------------------------------------------------------+----------|
|
||||||
|
| ~%g~ | Display list of groups | |
|
||||||
|
| ~%W~ | Display list of windows in the current group and head | |
|
||||||
|
| ~^>~ | Rest of the modeline will be aligned to the right | |
|
||||||
|
| ~mu-unread~ | Display number of unread emails | yes |
|
||||||
|
| ~%I~ | Display Wifi status | |
|
||||||
|
| ~%C~ | Display CPU status | |
|
||||||
|
| ~%M~ | Display RAM status | |
|
||||||
|
| ~%B~ | Display battery status | |
|
||||||
|
| ~%d~ | Display date | |
|
||||||
|
|
||||||
|
#+name: modeline-format-gen
|
||||||
|
#+begin_src emacs-lisp :var elements=modeline-format :exports none
|
||||||
|
(mapcar (lambda (element)
|
||||||
|
(cons (format "\"%s\""
|
||||||
|
(string-replace (regexp-quote "~")
|
||||||
|
""
|
||||||
|
(car element)))
|
||||||
|
(string= "yes" (caddr element))))
|
||||||
|
elements)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS[5d43e832fca88ddfffecd2a55d63bbb767e2e315]: modeline-format-gen
|
||||||
|
: (("%g") ("%W") ("^>") ("mu-unread" . t) ("%I") ("%C") ("%M") ("%B") ("%d"))
|
||||||
|
|
||||||
|
#+begin_src lisp :noweb yes
|
||||||
|
(defcommand reload-modeline () ()
|
||||||
|
"Reload modeline."
|
||||||
|
(setq *screen-mode-line-format* nil)
|
||||||
|
(let ((invertedp nil))
|
||||||
|
(dolist (element '<<modeline-format-gen()>>)
|
||||||
|
(setf invertedp (not invertedp))
|
||||||
|
(setf *screen-mode-line-format*
|
||||||
|
(cons (if invertedp
|
||||||
|
(format nil
|
||||||
|
" ^(:fg \"~A\")^(:bg \"~A\")^f1^f0^** "
|
||||||
|
phundrak-nord15
|
||||||
|
phundrak-nord1)
|
||||||
|
(format nil
|
||||||
|
" ^(:fg \"~A\")^(:bg \"~A\")^f1^f0^(:fg \"~A\") "
|
||||||
|
phundrak-nord1
|
||||||
|
phundrak-nord15
|
||||||
|
phundrak-nord3))
|
||||||
|
,*screen-mode-line-format*))
|
||||||
|
(let ((formatter (car element))
|
||||||
|
(commandp (cdr element)))
|
||||||
|
(setf *screen-mode-line-format*
|
||||||
|
(cons (if commandp
|
||||||
|
`(:eval (run-shell-command ,formatter t))
|
||||||
|
(format nil "~A" formatter))
|
||||||
|
,*screen-mode-line-format*)))))
|
||||||
|
(setf *screen-mode-line-format* (reverse (cons " " *screen-mode-line-format*)))
|
||||||
|
(pop *screen-mode-line-format*))
|
||||||
|
|
||||||
|
(reload-modeline)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
This variable as you can see is a list of elements, although here I am
|
This variable as you can see is a list of elements, although here I am
|
||||||
@ -419,10 +476,6 @@ CLisp code in here that returns some string if the user needs some
|
|||||||
code to return data that cannot be easily accesible otherwise. I might
|
code to return data that cannot be easily accesible otherwise. I might
|
||||||
add some at some point, but not today yet.
|
add some at some point, but not today yet.
|
||||||
|
|
||||||
For some reason, the ~stumptray~ module does not work for me, I get an
|
|
||||||
error saying a certain value is of type ~NIL~ and not of type
|
|
||||||
~STUMPWM:MODELINE~. I should investigate this.
|
|
||||||
|
|
||||||
** TODO Investigate why ~stumptray~ doesn’t work :noexport:
|
** TODO Investigate why ~stumptray~ doesn’t work :noexport:
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: Modeline-Investigate-why-stumptray-doesn-t-work-0juh13g0m6j0
|
:CUSTOM_ID: Modeline-Investigate-why-stumptray-doesn-t-work-0juh13g0m6j0
|
||||||
@ -619,24 +672,34 @@ fonts:
|
|||||||
(ql:quickload :clx-truetype)
|
(ql:quickload :clx-truetype)
|
||||||
(load-module "ttf-fonts")
|
(load-module "ttf-fonts")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
The documentation says we should be able to also use OTF fonts, but so
|
The documentation says we should be able to also use OTF fonts, but so
|
||||||
far I’ve had no luck loading one. Loading more than one font to use
|
far I’ve had no luck loading one.
|
||||||
|
|
||||||
|
Loading more than one font to use
|
||||||
some fallback fonts also doesn’t seem to work, unlike specified in the
|
some fallback fonts also doesn’t seem to work, unlike specified in the
|
||||||
documentation (I wanted to use a CJK font, but it doesn’t appear to
|
documentation (I wanted to use a CJK font, but it doesn’t appear to
|
||||||
work).
|
work), we need to manually change the font used which isn’t very
|
||||||
|
user-friendly, especially if you might have CJK characters appear in
|
||||||
|
otherwise regular text.
|
||||||
|
|
||||||
# Something that didn’t click immediately for me (and I think StumpWM’s
|
Something that didn’t click immediately for me (and I think StumpWM’s
|
||||||
# documentation on this could be improved) is that ~set-font~ can be used
|
documentation on this could be improved) is that ~set-font~ can be used
|
||||||
# to set either one main font for StumpWM, as one might guess reading
|
to set either one main font for StumpWM, as one might guess reading
|
||||||
# the documentation --- or you can set a list of them! And this is
|
the documentation --- or you can set a list of them! And this is
|
||||||
# great, since my main font does not support some characters I regularly
|
great, since my main font does not support some characters I regularly
|
||||||
# have in my windows’ title, such as CJK characters, emojis and all!
|
have in my windows’ title, such as CJK characters! However, be aware
|
||||||
# Here is my list of fonts I want loaded:
|
*the second font and further aren’t fallback fonts*. They are additional
|
||||||
|
fonts you can switch to manually through the use of ~^f<n>~ (~<n>~ being
|
||||||
|
the desired’s font index in the 0-indexed font list). But if a font
|
||||||
|
cannot render a character, it will simply display an empty rectangle
|
||||||
|
instead of falling back to another font. That’s annoying… Here is my
|
||||||
|
list of fonts I want loaded:
|
||||||
#+name: list-fonts
|
#+name: list-fonts
|
||||||
| Family | Subfamily | Size |
|
| Family | Subfamily | Size |
|
||||||
|------------------+-----------+------|
|
|--------------------------------+-----------+------|
|
||||||
| DejaVu Sans Mono | Book | 8 |
|
| Unifont-JP | Regular | 10 |
|
||||||
# | IPAMincho | Regular | 11 |
|
| DejaVu Sans Mono for Powerline | Book | 8.5 |
|
||||||
|
|
||||||
#+name: gen-fonts
|
#+name: gen-fonts
|
||||||
#+headers: :wrap src lisp
|
#+headers: :wrap src lisp
|
||||||
@ -656,17 +719,18 @@ work).
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
The code equivalent of this table can be seen below:
|
The code equivalent of this table can be seen below:
|
||||||
#+RESULTS[ca1ca106ad10eea84a34362acfc543eba559260c]: gen-fonts
|
#+RESULTS[2bcc2bbfd79a25c20b4dfa9d9867b91797089ffc]: gen-fonts
|
||||||
#+begin_src lisp
|
#+begin_src lisp
|
||||||
(set-font `(,(make-instance 'xft:font :family "DejaVu Sans Mono" :subfamily "Book" :size 8 :antialias t)))
|
(set-font `(,(make-instance 'xft:font :family "Unifont-JP" :subfamily "Regular" :size 10 :antialias t)
|
||||||
|
,(make-instance 'xft:font :family "DejaVu Sans Mono for Powerline" :subfamily "Book" :size 8.5 :antialias t)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** TODO Font error in modeline with Japanese :noexport:
|
As far as I know, Unifont is the only font I’ve tested that displays
|
||||||
:PROPERTIES:
|
monospaced Japanese characters in StumpWM. I tried DejaVu, IBM Plex,
|
||||||
:CUSTOM_ID: Theme-Fonts-Font-error-in-modeline-with-Japanese-w9xk5161v5j0
|
and a couple of others but only this one works correctly. DejaVu is
|
||||||
:END:
|
here for the Powerline separator. If you know of another monospaced
|
||||||
Apparently having two fonts, including one with Japanese characters,
|
font that displays Japanese characters, or even better CJK characters,
|
||||||
does not help with window titles containing Japanese characters.
|
please tell me! My email address is at the bottom of this webpage.
|
||||||
|
|
||||||
** Colors
|
** Colors
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
@ -698,7 +762,7 @@ name, limited to thirty characters.
|
|||||||
,*float-window-border* 0
|
,*float-window-border* 0
|
||||||
,*float-window-title-height* 15
|
,*float-window-title-height* 15
|
||||||
,*window-border-style* :none
|
,*window-border-style* :none
|
||||||
,*window-format* "%n:%30t")
|
,*window-format* "%n:%t")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Message and Input Windows
|
** Message and Input Windows
|
||||||
|
Loading…
Reference in New Issue
Block a user