Ecco la mia ipotesi:
Cosa accade? Cosa ha di particolare quel terminale?
Ha di particolare che veniva avviato prima di lanciare dwm con dbus-launch.
E allora di fatto per dirla semplice non supporta il keyring: così se io lancio mailspring da quello specifico terminale (e solo da quello accade): mailspring non parte e dà l'errore relativo al keyring.
Mentre se, una volta avviato dwm, apro un secondo terminale, sempre st, accade che questo ST eredita in qualche modo le funzionalità di keyring dal window manager già in essere.
Non credo che sia possibile avviare un terminale ST dopo l'avvio del window manager.
Ecco allora l'idea di avviare una sessione dbus-launch ad hoc per il terminale.
In questo modo anche se avviato prima del window manager, supporterà il keyring già di suo. Ed ecco che l'errore di mailspring rientra.
Venendo a "st -l", dal man sembra che serva a tutt'altro quell'opzione:
-l line
use a tty line instead of a pseudo terminal. line should be a (pseudo-)serial device (e.g. /dev/ttyS0 on Linux for serial port
0). When this flag is given remaining arguments are used as flags for stty(1). By default st initializes the serial line to 8
bits, no parity, 1 stop bit and a 38400 baud rate. The speed is set by appending it as last argument (e.g. 'st -l /dev/ttyS0
115200'). Arguments before the last one are stty(1) flags. If you want to set odd parity on 115200 baud use for example 'st -l
/dev/ttyS0 parenb parodd 115200'. Set the number of bits by using for example 'st -l /dev/ttyS0 cs7 115200'. See stty(1) for more
arguments and cases.