答案1
我似乎没有 Shawn 提到的设置,但我可以通过打开目录/usr/lib/slack/resources/app.asar.unpacked/src/static
、复制文件slack-taskbar-rest.png
并将其重命名为slack-taskbar-unread.png
覆盖带有蓝点的版本来完成此工作。
当然,这会消除所有球队的蓝点,但这正是我想要的。
编辑(2019-05-28):想法仍然正确,但对于 Ubuntu 上最新的 Slack 版本 (3.4.2),还需要替换两个文件。以下方法对我有用:
cd /usr/lib/slack/resources/app.asar.unpacked/src/static
sudo cp slack-taskbar-rest.ico slack-taskbar-unread.ico
sudo cp slack-taskbar-rest.png slack-taskbar-unread.png
sudo cp slack-taskbar-rest-linux.png slack-taskbar-unread-linux.png
答案2
简短的回答是:如果不破解 Slack,你就不能做到这一点。
长话短说,随着源代码的更新,破解方法会因版本而异。我们应该齐心协力,提交功能请求(或者这甚至可以被视为一个错误——很明显窃听人们)。
在此之前,这应该是一个社区 wiki,以防止为每个新的 slack 版本生成新的答案。在此处添加您的脚本,并明确说明其适用的最新版本,最新版本位于顶部。
4.7.0
unreads>0
被替换为false
,因此 slack 应该始终认为没有未读消息。- 所有
.js
文件都进行了替换,因为代码似乎在最新版本中被拆分了。 asar
不是以超级用户权限运行的,这对于使用npm-g_nosudo
。
先决条件:
asar
通过 npm 全局安装:npm install -g asar
脚本:
#!/usr/bin/env sh
set -eu
# Clean up previous failed attempts
rm -rf ~/tmp/slack
rm -rf ~/tmp/app.asar
# Unpack
mkdir -p ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
# Modify
sed -i 's/unreads>0/false/g' ~/tmp/slack/dist/*.js
# Replace
sudo rm /usr/lib/slack/resources/app.asar
sudo rm -rf /usr/lib/slack/resources/app.asar.unpacked
asar pack ~/tmp/slack ~/tmp/app.asar
sudo cp ~/tmp/app.asar /usr/lib/slack/resources/app.asar
sudo cp -r ~/tmp/slack /usr/lib/slack/resources/app.asar.unpacked
echo "Enjoy your productivity"
答案3
最新版本 4.1.2 不会读取 Linux 上的 .ico 文件,而是改为src
。dist
相反,它会构建一个徽章 + 基础。幸运的unread>0
是,检查负责徽章,并且只在缩小的 JS 中出现一次,因此很容易修补。您需要ASAR 工具修改 Electron 档案(npm install -g asar
):
mkdir -p ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
sed -i 's/unreads>0/unreads<0/g' ~/tmp/slack/dist/main.1.*.js
sudo rm /usr/lib/slack/resources/app.asar
sudo rm -rf /usr/lib/slack/resources/app.asar.unpacked
sudo asar pack ~/tmp/slack /usr/lib/slack/resources/app.asar
sudo mv ~/tmp/slack /usr/lib/slack/resources/app.asar.unpacked
答案4
版本 4.27.156
这是更新版本Dmitry S 回答随着代码更新方式的变化。按照他的回答使用 asar 提取和打包文件。
更详细但希望是面向未来的答案。您想setTrayIcon
在文件中搜索函数main.*.js
(在 4.27 中它被命名为main.bundle.js
)。使用图标文件查找代码 -const O = nt.resolve(__dirname, "resources", 'slack-taskbar-${t}.ico');
在这种情况下,变量是选择图像的状态。您想添加当它是时更改为的t
条件。t
"rest"
"unread"
未缩小的结果:
...
setTrayIcon(t, n, o) {
if (t === "hidden") {
this.tray && (ee.kg.debug("Tray Handler: Destroying tray."), this.tray.destroy(), this.tray = null);
return
}
if (!t) return;
if (t === "unread") t = "rest"; // <----- new line
let y;
if (al) {
const O = nt.resolve(__dirname, "resources", `slack-taskbar-${t}.ico`);
y = ce.nativeImage.createFromPath(O)
} else {
const O = WM[t];
y = ce.nativeImage.createFromDataURL(O)
}
this.tray ? this.tray.setImage(y) : this.createTrayIcon(y, n, o)
}
...