4.7.0

4.7.0

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: Bildbeschreibung hier eingeben

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/staticVerzeichnis öffnete, eine Kopie der slack-taskbar-rest.pngDatei erstellte und sie umbenannte, slack-taskbar-unread.pngum 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>0wird durch ersetzt false, sodass Slack immer davon ausgeht, dass keine ungelesenen Nachrichten vorhanden sind.
  • Der Ersatz wird in allen .jsDateien durchgeführt, da der Code in der neuesten Version anscheinend aufgeteilt wurde.
  • asarwird nicht mit Superuser-Rechten ausgeführt, was für Benutzer nützlich ist, dienpm-g_nosudo.

Voraussetzungen:

  • asarglobal ü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 srcin dist. Stattdessen erstellt sie ein Badge + Base. Glücklicherweise unread>0ist 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 setTrayIconin der main.*.jsDatei 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 tist 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)
}
...

verwandte Informationen