4.7.0

4.7.0

在工作時,我想停用當我所在的頻道中有任何活動時發生的藍色圖示通知。 在此輸入影像描述

有沒有辦法“將整個 slack 團隊靜音”,這樣我就不會收到藍色圖示通知?謝謝。

答案1

我似乎沒有肖恩提到的設置,但我能夠通過打開目錄/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

簡短的回答是:如果沒有黑客鬆弛,你做不到。

長的答案是,隨著版本更新原始程式碼,具體如何破解它會因版本而異。我們應該齊心協力並提交功能請求(或者這甚至可能被視為錯誤 - 很明顯竊聽人們)。

在此之前,這應該是一個社群 wiki,以防止為每個新的 Slack 版本產生新的答案。在此處新增您的腳本,並清楚說明其運行的最新版本,最新的位於頂部。


4.7.0

這是對德米特里·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

這是更新版本德米特里·S 回答隨著程式碼更新方式的變化。按照他的答案使用 asar 提取和打包文件。

更詳細但希望是面向未來的答案。您想要在文件中搜尋setTrayIcon函數main.*.js(在 4.27 中它的名稱為main.bundle.js)。使用圖示檔案尋找程式碼 -const O = nt.resolve(__dirname, "resources", 'slack-taskbar-${t}.ico');在本例中,變數t是選擇圖像的狀態。您想要將條件變更新增t"rest"when it's "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)
}
...

相關內容