4.7.0

4.7.0

在工作时,我想禁用我所在频道中发生任何活动时出现的蓝色图标通知。具体来说,我不希望收到来自某些 Slack 团队的通知: 在此处输入图片描述

有没有办法“将整个 Slack 团队静音”,这样我就不会收到蓝色图标通知?谢谢。

答案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

这是Dmitry S. 的回答

  • 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 文件,而是改为srcdist相反,它会构建一个徽章 + 基础。幸运的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)
}
...

相关内容