如何"破解"Thunderbird Lightning扩展以完全着色类别

Mar*_* Ba 8 css thunderbird thunderbird-lightning thunderbird-addon

(注意:虽然我不完全确定在SuperUser上是否会更好地询问这个问题,但我猜你可能不得不在使用css设置的xpi/jar文件中乱七八糟,应该使它适合SO.)

Mozilla Thunderbird的日历扩展,Lightning,将针对不同的日历使用不同的颜色,并且只使用窄的垂直条作为类别颜色:(浅蓝色作为日历颜色,红色作为类别颜色)

在此输入图像描述

我想知道的是我如何改变/"黑客"css样式 - 肯定 - 必须与此相关联,埋在插件目录中的某处,以便在上面的示例中,事件将是完全的红色的.

谁知道如何实现这一目标?

Phi*_*sch 10

category-overlay.png图像仅仅是一个渐变叠加,以使类别栏看起来正确.

这里有两个选择.一个更容易但不可靠,另一个更难:

选项A:简单

在$ profile/chrome /目录中创建userChrome.css.它应包含以下内容:

.calendar-color-box[categories~="mycategory"],
.calendar-event-box-container[categories~="mycategory"] { 
   background-color: #abc123 !important;
}

您需要为要更改颜色的每个类别执行此操作.请注意,更改"闪电"选项中类别的颜色不会更改您在此处设置的类别颜色.

选项B:更完整

你需要在这里修改lightning.xpi中的一些文件.此解决方案仅需要您在Lightning中设置类别颜色,并且还适用于新添加的类别.请注意,这种方式没有类别的事件是透明的,如果你想要更多,你必须自己做.

  1. 使用zip程序打开lightning.xpi
  2. 输入目录chrome /
  3. 使用zip程序打开包含calendar.jar
  4. 下降到内容/日历/
  5. 打开calendar-multiday-view.xml
    • 搜索"calendar-color-box"并将其从class属性中删除
    • 上面几行有一个<content>标签,添加class ="category-color-box"
  6. 打开calendar-month-view.xml和calendar-view-core.xml并执行相同操作
  7. 将文件保存回calendar.jar
  8. 将calendar.jar保存回lightning.xpi
  9. 安装修改后的lightning.xpi

如果你想看一个补丁,这适用于最新的comm-central源:

diff --git a/calendar/base/content/calendar-month-view.xml b/calendar/base/content/calendar-month-view.xml
--- a/calendar/base/content/calendar-month-view.xml
+++ b/calendar/base/content/calendar-month-view.xml
@@ -52,21 +52,20 @@

 <bindings id="calendar-month-view-bindings"
   xmlns="http://www.mozilla.org/xbl"
   xmlns:html="http://www.w3.org/1999/xhtml"
   xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
   xmlns:xbl="http://www.mozilla.org/xbl">

   <binding id="calendar-month-day-box-item" extends="chrome://calendar/content/calendar-view-core.xml#calendar-editable-item">
-    <content mousethrough="never" tooltip="itemTooltip">
+    <content mousethrough="never" tooltip="itemTooltip" class="category-color-box">
       <xul:vbox flex="1">
         <xul:hbox>
           <xul:box anonid="event-container"
-                   class="calendar-color-box"
                    xbl:inherits="calendar-uri,calendar-id"
                    flex="1">
             <xul:box class="calendar-event-selection" orient="horizontal" flex="1">
               <xul:stack anonid="eventbox"
                          class="calendar-event-box-container"
                          xbl:inherits="readonly,flashing,alarm,allday,priority,progress,status,calendar,categories"
                          flex="1">
                 <xul:hbox class="calendar-event-details">
diff --git a/calendar/base/content/calendar-multiday-view.xml b/calendar/base/content/calendar-multiday-view.xml
--- a/calendar/base/content/calendar-multiday-view.xml
+++ b/calendar/base/content/calendar-multiday-view.xml
@@ -2119,20 +2119,19 @@
       ]]></handler>
     </handlers>
   </binding>

   <!--
      -  An individual event box, to be inserted into a column.
     -->
   <binding id="calendar-event-box" extends="chrome://calendar/content/calendar-view-core.xml#calendar-editable-item">
-    <content mousethrough="never" tooltip="itemTooltip">
+    <content mousethrough="never" tooltip="itemTooltip" class="category-color-box">
         <xul:box xbl:inherits="orient,width,height" flex="1">
           <xul:box anonid="event-container"
-                   class="calendar-color-box"
                    xbl:inherits="orient,readonly,flashing,alarm,allday,priority,progress,status,calendar,categories,calendar-uri,calendar-id"
                    flex="1">
             <xul:box class="calendar-event-selection" orient="horizontal" flex="1">
               <xul:stack anonid="eventbox"
                          align="stretch"
                          class="calendar-event-box-container"
                          flex="1"
                          xbl:inherits="context,parentorient=orient,readonly,flashing,alarm,allday,priority,progress,status,calendar,categories">
diff --git a/calendar/base/content/calendar-view-core.xml b/calendar/base/content/calendar-view-core.xml
--- a/calendar/base/content/calendar-view-core.xml
+++ b/calendar/base/content/calendar-view-core.xml
@@ -46,21 +46,21 @@
     xmlns="http://www.mozilla.org/xbl"
     xmlns:html="http://www.w3.org/1999/xhtml"
     xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
     xmlns:xbl="http://www.mozilla.org/xbl">

   <binding id="calendar-editable-item">
     <content mousethrough="never"
              tooltip="itemTooltip"
-             tabindex="-1">
+             tabindex="-1"
+             class="category-color-box">
       <xul:vbox flex="1">
         <xul:hbox>
           <xul:box anonid="event-container"
-                   class="calendar-color-box"
                    xbl:inherits="calendar-uri,calendar-id"
                    flex="1">
             <xul:box class="calendar-event-selection" orient="horizontal" flex="1">
               <xul:stack anonid="eventbox"
                          class="calendar-event-box-container"
                          flex="1"
                          xbl:inherits="readonly,flashing,alarm,allday,priority,progress,status,calendar,categories">
                 <xul:hbox class="calendar-event-details">
Run Code Online (Sandbox Code Playgroud)

选项C:更改Javascript

这将是最好的工作黑客,虽然它需要javascript更改.按选项B中所述打开calendar.jar并查看calendar-views.js,有两个功能:updateStyleSheetForViews()updateStyleSheetForCategory().我会把这个留给想要自己修补它的人,但想法是添加一个规则来.calendar-color-box[categories~=...]覆盖默认规则,以防有类别.这样,如果没有设置类别,则使用日历颜色,否则使用所需的类别颜色.

玩得开心 :)


Ale*_*Ale 8

此扩展程序看起来非常适合您想要的功能.

https://addons.mozilla.org/en-us/thunderbird/addon/calendar-tweaks/

要拥有这个,取消选中所有选项,并检查以下内容:

  • 将类别颜色应用于事件backgruonds
  • 如果没有类别颜色,请使用日历颜色


J3s*_*oon 6

十年后,之前的所有答案要么已经过时,要么过于复杂。

此答案针对最新的 Thunderbird (v102.6.0),支持原生类别颜色,并且仅包含 3 行自定义 CSS。

在此输入图像描述 在此输入图像描述

请按照以下步骤操作:

  1. 解锁自定义 CSS,如本文中所述:

    转到Tools > Settings > General > Config Editor...,然后设置toolkit.legacyUserProfileCustomizations.stylesheetstrue

    在此输入图像描述

    在此输入图像描述

  2. 找到本文中提到的您的个人资料文件夹:

    • 视窗:%APPDATA%\Thunderbird\Profiles\xxxxxxxx.default\
    • Linux:~/.thunderbird/profiles/xxxxxxxx.default/
    • 苹果:~/Library/Thunderbird/Profiles/xxxxxxxx.default/

    chrome/userChrome.css在配置文件文件夹下创建。例如,Windows 的完整路径如下所示:%APPDATA%\Thunderbird\Profiles\xxxxxxxx.default\chrome\userChrome.css

    修改chrome/userChrome.css为包含以下 CSS:

    .calendar-category-box {
        width: 100% !important;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重新启动雷鸟

  4. 将日历颜色更改为白色以获得更好的视觉效果:

    在此输入图像描述

    在此输入图像描述

  5. (可选)自定义类别颜色:

    转到Tools > Settings > Calendar > Categories并设置自定义类别颜色。

    在此输入图像描述

  6. 全做完了!

将来,如果 Thunderbird 引入重大更改,您可能需要根据 中的检查结果稍微修改 CSS Tools > Developer Tools > Developer Toolbox