Thunderbird カスタマイズ・メモ
概要
メーラThunderbird (115.9.0) のカスタマイズいくつか(Windows用)
1. userChrome.css を使ったカスタマイズ
・スレッドのSubject字下げを固定するカスタマイズ例。
(=同一スレッド・メールが多い時、Subject字下げが異様に深くなるのを防ぐ)
1.C:/Users/[user等]/AppData/Roaming/Thunderbird/Profiles/[xxx.default等]/chrome/userChrome.css を作成。
2.内容を設定(要Thunderbird再起動)
tr[is="thread-row"] .subject-line { /* ネスト深さを一定に */
margin-inline-start: calc(20px * min(var(--thread-level), 1)) !important;
}
2. userChrome.js を使ったカスタマイズ
・新着メールがスレッドに隠れないようにするカスタマイズ例。
1.Thunderbirdインストールフォルダ下に、下記 config.js をコピー
https://github.com/alice0775/userChrome.js/blob/master/117/install_folder/config.js
2.Thunderbirdインストールフォルダ/defaults/pref/下に、下記 config-prefs.js をコピー
https://github.com/alice0775/userChrome.js/blob/master/117/install_folder/defaults/pref/config-prefs.js
3.C:/Users/[user等]/AppData/Roaming/Thunderbird/Profiles/[xxx.default等]/chrome/userChrome.js を作成。
4.内容を設定(要Thunderbird再起動)
(function () {
if (location == "chrome://messenger/content/messenger.xhtml") {
// 新着メールでもスレッドを開くように
try {
var mailListener = {
msgAdded: function(msgHdr) {
if (!msgHdr.isRead) {
expandThread(msgHdr);
}
}
};
var notificationService = Components.classes["@mozilla.org/messenger/msgnotificationservice;1"]
.getService(Components.interfaces.nsIMsgFolderNotificationService);
notificationService.addListener(mailListener, notificationService.msgAdded);
function expandThread(msgHdr) {
let refSet = new Set();
for (let i=0; i < msgHdr.numReferences; i++) {
refSet.add(msgHdr.getStringReference(i));
}
let br = document.getElementById("mail3PaneTabBrowser1");
let dbView = br.contentDocument.getElementById("threadTree").view;
for (let i = 0; i < dbView.rowCount && i < 30; i++) { // 最大でも30行で探索打ち切り
let thHdr = dbView.getMsgHdrAt(i);
if (refSet.has(thHdr.messageId) && dbView.isContainer(i) && !dbView.isContainerOpen(i)) {
dbView.toggleOpenState(i);
break;
}
}
}
} catch (aError) {
Components.utils.reportError(aError);
}
}
})();
3. その他
・JS開発中は良くエラーが出るので、Ctrl + Shift + I で、デバッガを開いてコンソールを眺めると良いかも。
・上記デバッガで、左端の矢印マーク(ページから要素を選択)で、DOMのidを取得するのも良く使うかも。
(DOM経路に、mail3PaneTabBrowser1等の browserタグが介入している場合の対処は上記jsの通り)
・userChrome.js について、userChromeJSというアドオンを入れれば、1&2の手順は不要に。
参考)https://ohaohaoha.cocolog-nifty.com/blog/2023/07/post-9576a1.html
Thunderbird周りは、あまり慣れないジャンルなので、見当違いがあるかも。
(その場合は Twitter の @shirouzu まで、ご一報ください)