
Wenn ich bei der Arbeit bin, möchte ich die Benachrichtigung mit dem blauen Symbol deaktivieren, die angezeigt wird, wenn in einem Kanal, in dem ich mich befinde, Aktivität herrscht. Insbesondere möchte ich diese Benachrichtigung von bestimmten Slack-Teams nicht:
Gibt es eine Möglichkeit, „ein ganzes Slack-Team stummzuschalten“, sodass ich diese Benachrichtigung mit dem blauen Symbol nicht erhalte? Danke.
Antwort1
Ich scheine die von Shawn erwähnte Einstellung nicht zu haben, aber ich konnte es zum Laufen bringen, indem ich das /usr/lib/slack/resources/app.asar.unpacked/src/static
Verzeichnis öffnete, eine Kopie der slack-taskbar-rest.png
Datei erstellte und sie umbenannte, slack-taskbar-unread.png
um die Version mit dem blauen Punkt zu überschreiben.
dadurch wird natürlich der blaue Punkt für alle Teams entfernt, aber das ist genau das, was ich wollte.
Bearbeiten (28.05.2019):Die Idee ist immer noch richtig, aber für die neueste Slack-Version (3.4.2 unter Ubuntu) müssen zwei weitere Dateien ersetzt werden. Folgendes hat bei mir funktioniert:
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
Antwort2
Die kurze Antwort lautet: Ohne Slack zu hacken, geht das nicht.
Die lange Antwort ist, dass sich die genaue Vorgehensweise beim Hacken von Version zu Version unterscheidet, da der Quellcode aktualisiert wird. Wir sollten uns alle zusammentun und eine Funktionsanfrage einreichen (oder vielleicht könnte dies sogar als Fehler angesehen werden – es ist eindeutigAbhörenMenschen).
Bis dahin sollte dies ein Community-Wiki sein, um zu verhindern, dass für jede neue Slack-Version eine neue Antwort generiert wird. Fügen Sie Ihre Skripte hier hinzu und geben Sie deutlich an, auf welcher neuesten Version sie funktionieren (die neueste steht ganz oben).
4.7.0
Dies ist eine Verbesserung gegenüberAntwort von Dmitry S..
unreads>0
wird durch ersetztfalse
, sodass Slack immer davon ausgeht, dass keine ungelesenen Nachrichten vorhanden sind.- Der Ersatz wird in allen
.js
Dateien durchgeführt, da der Code in der neuesten Version anscheinend aufgeteilt wurde. asar
wird nicht mit Superuser-Rechten ausgeführt, was für Benutzer nützlich ist, dienpm-g_nosudo
.
Voraussetzungen:
asar
global über npm installiert:npm install -g asar
Skript:
#!/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"
Antwort3
Die neueste Version 4.1.2 liest die .ico-Datei unter Linux nicht und ändert sie src
in dist
. Stattdessen erstellt sie ein Badge + Base. Glücklicherweise unread>0
ist der Check für das Badge verantwortlich und erscheint nur einmal im minimierten JS, sodass er leicht zu patchen ist. Sie benötigen denASAR-Werkzeugum das Electron-Archiv zu ändern ( 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
Antwort4
Version 4.27.156
Dies ist eine aktualisierte Version vonAntwort von Dmitry S.mit der Änderung der Codeaktualisierung. Folgen Sie seiner Antwort zum Extrahieren und Packen von Dateien mit asar.
Ausführlichere, aber hoffentlich zukunftssichere Antwort. Sie möchten setTrayIcon
in der main.*.js
Datei nach einer Funktion suchen (in 4.27 heißt sie main.bundle.js
). Suchen Sie mithilfe der Symboldatei nach Code – const O = nt.resolve(__dirname, "resources", 'slack-taskbar-${t}.ico');
in diesem Fall t
ist die Variable der Status, bei dem das Bild ausgewählt wird. Sie möchten eine Bedingung hinzufügen, die sich ändert t
, "rest"
wenn es ist "unread"
.
Unminimiertes Ergebnis:
...
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)
}
...