
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:
¿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/static
directorio, haciendo una copia del slack-taskbar-rest.png
archivo y cambiándole el nombre slack-taskbar-unread.png
para 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>0
se reemplaza porfalse
, por lo que Slack siempre debe pensar que no hay mensajes no leídos.- El reemplazo se realiza en todos
.js
los archivos, ya que el código parece haberse dividido en la última versión. asar
no se ejecuta con privilegios de superusuario, lo cual es útil para las personas que usannpm-g_nosudo
.
Requisitos previos:
asar
instalado 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 src
a dist
. En lugar de eso, construye una insignia + base. Afortunadamente, unread>0
el 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 setTrayIcon
función en el main.*.js
archivo (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 t
es el estado de selección de la imagen. Desea agregar un cambio de condición t
cuando "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)
}
...