Notion的部分优化

Notion 是我一直吹爆的笔记软件,即使是免费版也锤爆一堆号称简洁优雅的MarkDown编辑器(点名Ulysses),然鹅其在客户端的用心程度远远不及其网页端,比如存在Electron应用的通病:难以很好适配Dark Mode,还有偷懒使用默认字体的问题.

修复Dark Mode下滚动条不变色:
滚动条不变色

Electron默认使用传统滚动条,包含默认的滚动槽(背景颜色为灰白)及深灰色滚动条,在背景为黑色的网页上很不协调,要想调整滚动条,可以使用CSS的相关属性来自定义,但是Notion的客户端所需的CSS文件是直接从Notion.so拉取的(看了下App.asar我甚至怀疑整个Notebook页面都是直接从服务器获取并缓存的).因此一种方法是将网页端作为PWA小程序使用(这也是官方推荐的方法之一.是的,官方更推荐使用Web端),同时使用Stylus加载用户CSS模板.下面给出一个来自miraclexyz的CSS模板:


#notion-app .notion-scroller > div:nth-child(1) {
    color: #eee!important
}
#notion-app .notion-scroller::-webkit-scrollbar {
    width: 5px;
}
#notion-app .notion-scroller::-webkit-scrollbar * {
    background: transparent;
}
#notion-app .notion-scroller::-webkit-scrollbar-thumb {
    background: rgba(47, 47, 47, .1) !important;
}
::-webkit-scrollbar {
    width: 5px;
}
::-webkit-scrollbar * {
    background: transparent;
}
::-webkit-scrollbar-thumb {
    background: rgba(47, 47, 47, .1) !important;
}
#notion-app .notion-scroller > div > .notion-selectable[style*="flex"] {
    padding-bottom: 0px!important;
}
#notion-app .notion-scroller .notion-selectable > div[style*="inline-flex"] {
    overflow: hidden;
    height: 400px;
}
#notion-app .notion-scroller .notion-selectable > div[style*="inline-flex"] > div {
    overflow: auto;
}

加载后在更多工具->创建快捷方式...中勾选在新窗口打开即可获得一个伪PWA应用,缺点是没有离线缓存,内存占用也不理想(相当于打开了一个加载全部拓展,隐藏工具栏的Chrome窗口),但是可以调用Chrome字体渲染引擎,观感更好.

另一种方法是开启现代滚动条支持,即在应用运行的args中加入 --enable-features=OverlayScrollbar,强行开启一个悬浮且自适应的滚动条.对于Windows和Linux,桌面快捷方式总是可以修改的,但对于MacOS的桌面应用,修改启动参数可能没有那么简单,我采用的方法是修改应用包中的可执行文件,将Notion.app/Contents/MacOS/Notion重命名为Notion.old,然后新建一个脚本文件,内容为:

#!/bin/bash
cd "/Applications/Notion.app/Contents/MacOS"
"/Applications/Notion.app/Contents/MacOS/Notion.old" --enable-features=OverlayScrollbar

将脚本文件命名为Notion并赋予执行权限

chmod +x Notion

注意:在进行此步骤时请关闭所有Notion进程.
P.S. Typora也拥有类似的问题,可以通过修改字体CSS文件的方法解决.在文件中加入

::-webkit-scrollbar {
    width: 5px;
}
::-webkit-scrollbar * {
    background: transparent;
}
::-webkit-scrollbar-thumb {
    background: rgba(47, 47, 47, .1) !important;
}

P.S.S你也可以通过修改info.plist中的CFBundleExecutable字段来指定可执行文件名称,如将以上脚本命名为Notion.new,并将此字段值改为Notion.new,也许可以做到避免热更新后文件被替换?(反正Notion我用了N久还没有更新过,版本号停留在2.50几个月了)

tag(s): none
show comments · back · home
Edit with markdown