4.7.0

4.7.0

Cuando estoy en el trabajo, quiero desactivar la notificación del ícono azul que ocurre cuando hay actividad en un canal en el que estoy. Específicamente, no quiero esta notificación de ciertos equipos de Slack: ingrese la descripción de la imagen aquí

¿Hay alguna manera de "silenciar a todo un equipo de Slack" para no recibir esa notificación con el ícono azul? Gracias.

Respuesta1

Parece que no tengo la configuración que menciona Shawn, pero pude hacer que esto funcionara abriendo el /usr/lib/slack/resources/app.asar.unpacked/src/staticdirectorio, haciendo una copia del slack-taskbar-rest.pngarchivo y cambiándole el nombre slack-taskbar-unread.pngpara sobrescribir la versión con el punto azul.

Por supuesto, eso elimina el punto azul para todos los equipos, pero eso es lo que quería.

Editar (28/05/2019):La idea sigue siendo correcta, pero para la versión más reciente de Slack (3.4.2) en Ubuntu, se deben reemplazar dos archivos más. Lo siguiente funcionó para mí:

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

Respuesta2

La respuesta corta es: no se puede, sin relajarnos.

La respuesta larga es que exactamente cómo hackearlo diferirá de una versión a otra, a medida que actualizan el código fuente. Todos deberíamos unirnos y enviar una solicitud de función (o tal vez esto incluso podría considerarse un error; está claro quemolestandogente).

Hasta entonces, esto debería ser un wiki comunitario, para evitar que se genere una nueva respuesta para cada nueva versión de Slack. Agregue sus scripts aquí e indique claramente la última versión en la que funciona, la más nueva en la parte superior.


4.7.0

Esta es una mejora enLa respuesta de Dmitry S..

  • unreads>0se reemplaza por false, por lo que Slack siempre debe pensar que no hay mensajes no leídos.
  • El reemplazo se realiza en todos .jslos archivos, ya que el código parece haberse dividido en la última versión.
  • asarno se ejecuta con privilegios de superusuario, lo cual es útil para las personas que usannpm-g_nosudo.

Requisitos previos:

  • asarinstalado globalmente a través de npm:npm install -g asar

Guion:

#!/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"

Respuesta3

La versión más reciente, 4.1.2, no lee el archivo .ico en Linux y cambia srca dist. En lugar de eso, construye una insignia + base. Afortunadamente, unread>0el cheque es responsable de la insignia y solo aparece una vez en el JS minimizado, por lo que es fácil de parchear. Necesitarás elherramienta ASARpara modificar el archivo 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

Respuesta4

Versión 4.27.156

Esta es la versión actualizada deDmitry S respuestacon el cambio de cómo se actualiza el código. Siga su respuesta para extraer y empaquetar archivos usando asar.

Una respuesta más elaborada pero, con suerte, preparada para el futuro. Quiere buscar una setTrayIconfunción en el main.*.jsarchivo (en 4.27 se llama main.bundle.js). Busque el código usando el archivo de ícono: const O = nt.resolve(__dirname, "resources", 'slack-taskbar-${t}.ico');en este caso, la variable tes el estado de selección de la imagen. Desea agregar un cambio de condición tcuando "rest"sea "unread".

Resultado no minificado:

...
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)
}
...

información relacionada