思源笔记 Linux 使用优化
环境:KDE Manjaro 思源 1.4.4
添加托盘
对源文件进行一定的修改即可。
打开 resources/app/electron/main.js 文件,搜索 系统托盘,做两个更改:
添加 'linux' === process.platform || ,以创建托盘。
在 Linux 中单击托盘无法获得预期效果,因此需要在托盘菜单中添加一个选项,用来显示窗口。
if ('linux' === process.platform || 'win32' === process.platform) { //Modified// 系统托盘tray = new Tray(path.join(appDir, 'stage', 'icon.png'))tray.setToolTip('SiYuan')const trayMenuTemplate = [{ //Modifiedlabel: 'Show',click: () => {if (mainWindow.isMinimized()) {mainWindow.restore()}mainWindow.show()}},{label: 'Quit',click: () => {mainWindow.webContents.send('siyuan-save-close', true)},}]
这样似乎就可以了,,,更新时覆盖 main.js 文件会失效。
配置 url scheme
思源的 siyuan:// 打不开还是比较难受的。

然而,如果你这样调用,还是能正常工作:

看起来这个能力还是保留着的,,,那注册一下应该就可以了。
打开 $HOME/.local/share/applications/ 文件夹,找到思源对应的 Desktop 文件,在末尾添加:
MimeType=x-scheme-handler/siyuan;
将 EXEC 项修改:
Exec=/home/clouder/Applications/OriginSiyuan/siyuan %u
执行:
sudo update-desktop-databasexdg-mime default Siyuan.desktop x-scheme-handler/siyuanxdg-settings set default-url-scheme-handler siyuan Siyuan.desktop
可以参考 ArchWiki.
然后回到 main.js 文件,查找 mainWindow.webContents.on('did-finish-load', () => {,修改:
mainWindow.webContents.on('did-finish-load', () => {if ('linux' === process.platform || 'win32' === process.platform) { //ModifiedsiyuanOpenURL = process.argv.find((arg) => arg.startsWith('siyuan://'))}if (siyuanOpenURL) {setTimeout(() => { // 等待界面js执行完毕writeLog(siyuanOpenURL)mainWindow.webContents.send('siyuan-openurl', siyuanOpenURL)siyuanOpenURL = null}, 2000)}})
这样首次打开也能成功跳转了。
使用系统标题栏
主要是整个系统风格统一……
由于思源标题栏上其实有一些内容,最理想的是只显示几个点,但似乎不太可行。特别是我设置中左边那个点没地方放,,,
那只能加一栏了,像这样:

需要隐藏思源自带的控制按钮和边框。
打开 resources/stage/build/app 中的 main.js

大概有这么一段,直接大力出奇迹因为某种原因失败了。

温和路线,,,
然后就是去除边框了,同目录下找到 base.css

将 body.body--win32 中的 border 从 1px 改成 0px 即可。
然后为标题栏寻找一个好看的配色以搭配你使用的主题,避免和思源部分割裂感太强,,,
可以设置 Application Setting 只对思源笔记生效。

最终效果:(notion-dark theme + RoundedDark Titlebar)

更好的方法
事实上直接对源码做修改,一旦更新就会全部被覆盖。
持久的去边框方法是写在主题 css 中:
body.body--win32 {border: 0px}
删除图标还可以直接去 icon.js 中删掉 iconMin iconMax iconRestore
如果不想对图标文件进行这样的破坏,,那可以加一行 js:
document.getElementById("windowControls").style = "display: none"
但更新图标都会导致覆盖。
最后
希望 D 大添加一下 Linux 托盘的支持,,,
终于可以把 Linux 下使用 Nativefier 打包思源笔记 的方法扔掉了。
