环境: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 = [
{ //Modified
label: '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-database
xdg-mime default Siyuan.desktop x-scheme-handler/siyuan
xdg-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) { //Modified
siyuanOpenURL = 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"
但更新图标都会导致覆盖。
最后
希望添加一下 Linux 托盘的支持。
终于可以把 Linux 下使用 Nativefier 打包思源笔记 的方法扔掉了。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于