
答案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 文件,而是更改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
這是更新版本德米特里·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)
}
...