Приложение Slack на Linux: Как отключить иконку “голубого круга” для активности канала?

Вопрос или проблема

Когда я на работе, я хочу отключить уведомление синим значком, которое появляется при любой активности в канале, в котором я нахожусь. В частности, я не хочу получать это уведомление от определенных команд Slack:
введите описание изображения здесь

Есть ли способ «выключить всю команду Slack», чтобы я не получал это уведомление с синим значком? Спасибо.

Я, похоже, не имею настройки, о которой упоминает Шон, но мне удалось добиться этого, открыв директорию /usr/lib/slack/resources/app.asar.unpacked/src/static, сделав копию файла slack-taskbar-rest.png и переименовав его в slack-taskbar-unread.png, чтобы перезаписать версию с голубой точкой.

Конечно, это избавляет от голубой точки для всех команд, но именно этого я и хотел.

Правка (2019-05-28): Идея все еще верна, но для последней версии Slack (3.4.2) на Ubuntu необходимо заменить еще два файла. Следующее сработало для меня:

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

Краткий ответ: вы не можете, не взламывая Slack.

Длинный ответ заключается в том, что конкретный метод взлома будет различаться от версии к версии, так как они обновляют исходный код. Мы все должны объединиться и подать запрос на новую функцию (или, возможно, это можно даже считать ошибкой — это явно беспокоит людей).

До тех пор это должно быть сообществом вики, чтобы предотвратить появление нового ответа для каждой новой версии Slack. Добавляйте свои скрипты сюда и четко указывайте последнюю версию, на которой они работают, обновления сверху.


4.7.0

Это улучшенная версия ответа Дмитрия С.

  • unreads>0 заменяется на false, так что Slack всегда должен думать, что нет непрочитанных сообщений.
  • Замена производится во всех .js файлах, так как код, похоже, был разбит на части в последней версии.
  • asar не запускается с привилегиями суперпользователя, что полезно для людей, использующих npm-g_nosudo.

Предпосылки:

  • asar установлен глобально через npm: npm install -g asar

Скрипт:

#!/usr/bin/env sh

set -eu

# Очистка предыдущих неудачных попыток
rm -rf ~/tmp/slack
rm -rf ~/tmp/app.asar

# Распаковка
mkdir -p ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack

# Модификация
sed -i 's/unreads>0/false/g' ~/tmp/slack/dist/*.js

# Замена
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 "Наслаждайтесь своей продуктивностью"

Последняя версия 4.1.2 не читает файл .ico на Linux и заменяет 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

Та же идея, что и у notatoad, но с последней версией Slack (3.4.2) на Linux есть еще два файла, которые необходимо перезаписать, чтобы заменить значок “синей точки” на значок “отдыха”. Я сделал следующее:

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

После перезапуска Slack мы избавились от синей точки.

Версия 4.27.156

Это обновленная версия ответа Дмитрия С. с изменениями в способах обновления кода. Следуйте его ответу для извлечения и упаковки файлов с помощью asar.

Более развернутый, но надеюсь, что устойчивая к будущим версиям ответа. Вы хотите найти функцию setTrayIcon в файле main.*.js (в 4.27 она называется main.bundle.js). Ищите код, использующий файл значка – const O = nt.resolve(__dirname, "resources", 'slack-taskbar-${t}.ico'); В этом случае переменная t — это статус, выбирающий изображение. Вам нужно добавить условие, изменяющее t на "rest", когда оно "unread".

Результат без минификации:

...
setTrayIcon(t, n, o) {

  if (t === "hidden") {
    this.tray && (ee.kg.debug("Обработчик подноса: Уничтожение подноса."), this.tray.destroy(), this.tray = null);
    return
  }
  if (!t) return;
  if (t === "unread") t = "rest"; // <----- новая строка
  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)
}
...

Я не вижу способа изменить это для каждого канала, но вы можете изменить это для команды. В ваших предпочтениях перейдите в “уведомления” и снимите отметку с “показать значок на значке Slack, чтобы указать новую активность”, и это должно сработать.

В предпочтениях -> Уведомления:
введите описание изображения здесь

Версия Slack 4.2.0, удалите как синий (уведомления), так и красный (выделения) уведомительный значок:

mkdir ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
sed -i 's/unreads>0/unreads<0/g' ~/tmp/slack/dist/main.2.*.js
sed -i 's/unreadHighlights>0/unreadHighlights<0/g' ~/tmp/slack/dist/main.2.*.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
rm -rf ~/tmp/slack

Что это делает, так это то, что распаковывает исходный код Slack и редактирует проверку для отображения непрочитанных и выделенных сообщений от timeOfMessages>0 до timeOfMessages<0. Это означает, что когда у вас меньше 0 непрочитанных или выделенных сообщений, это покажет синий/красный значок. У вас никогда не будет меньше нуля непрочитанных сообщений, так что вы никогда не увидите синий/красный значок на панели задач. После этого код снова упаковывается и заменяет оригинальную версию на отредактированную.

Чтобы предоставить решение и для пользователей Windows, тоже:

Следующий короткий скрипт PowerShell ‘выключит’ значок уведомления, заменив иконки с значком на точке на пустые (как предложено в других ответах).

# Установите здесь путь к текущей версии Slack
# (по умолчанию установщик Slack помещает его в %LocalAppData%)
$currentSlackVersionDir = "$env:LOCALAPPDATA\slack\app-4.3.4"

# Меняйте только следующие значения, если названия значков изменятся
$blankIconFile="slack-taskbar-rest.ico"
$dottedIconFiles="slack-taskbar-highlight.ico", 'slack-taskbar-unread.ico'

# Получите путь к папке с иконками по умолчанию
$iconsFolder = "$currentSlackVersionDir\resources\app.asar.unpacked\dist\static"

foreach ($dottedIcon in $dottedIconFiles ) {
  # Переименуйте точечный значок (как резервная копия)
  Rename-Item -Path "$iconsFolder\$dottedIcon" -NewName "$iconsFolder\$dottedIcon.bak.ico"

  # Скопируйте пустой значок, используя его имя
  Copy-Item -Path "$iconsFolder\$blankIconFile" -Destination "$iconsFolder\$dottedIcon"
}

Конечно, вы также можете сделать это вручную, но, вероятно, вам придется повторять это при каждом обновлении приложения. (Улучшенная версия этого скрипта также могла бы попытаться найти $currentSlackVersionDir автоматически, не стесняйтесь редактировать! :-))

В Slack 4.8.0 вы можете отключить это, исправив main.bundle.js. Вам нужно иметь программу архива asar.

mkdir /tmp/slack
asar extract /usr/lib/slack/resources/app.asar /tmp/slack
sed -i 's/icon="unread"/icon="rest"/g' ~/tmp/slack/dist/main.bundle.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

Slack 4.26.1 здесь.

Распакуйте app.asar, отредактируйте main.bundle.js. Есть объект, который сопоставляет ‘unread’ с URL-адресом данных внутри пакета. Внизу вы видите, что я изменил его так, чтобы он ссылался на тот же URL-адрес данных, что и ‘rest’.

:; grep -oE ......................unread:.... main.bundle.js 
{highlight:E3,rest:b3,unread:b3};

После изменения упакуйте app.asar снова.

В версии 4.20.0, предполагая, что строки “unread”, “highlight” и “rest” в main.bundle.js ссылаются на соответствующие иконки панели задач, изменение “unread” на “rest” скроет синий индикатор, что и происходит.

#!/bin/bash

mkdir -p ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
sed -i 's/"unread"/"rest"/' ~/tmp/slack/dist/main.bundle.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.1.2 это, похоже, не работает, потому что, похоже, приложение Electron не использует ресурсы на диске или что-то в этом роде. Я спрашивал об этом у коллег и получил следующее, что сработало для меня:

mkdir ~/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
rm -rf ~/tmp/slack

Решения с изменением значков не сработали для меня, но я отредактировал решение Эльмира Бечировича по этому вопросу, и оно сработало для меня:

https://github.com/lucaohost/random-codes/blob/master/notifications-slack.sh

Ответ или решение

Как отключить значок «синий круг» уведомления в приложении Slack на Linux

При использовании приложения Slack на Linux многие пользователи сталкиваются с вопросом, как отключить уведомление в виде синего круга, которое появляется при активности в канале. В данной статье будут рассмотрены различные способы решения этой проблемы для конкретных команд в Slack, а также некоторые факты о модификациях, которые могут потребовать усилий.

Мультикомандное решение

На текущий момент у Slack нет встроенной функции для отключения синего индикатора уведомлений по командам. Однако вы можете попробовать следующие шаги, чтобы уменьшить количество уведомлений и отключить визуальные индикаторы:

  1. Отключение значка уведомлений:
    • Перейдите в настройки: Откройте Slack, нажмите на ваше имя или значок профиля в левом верхнем углу.
    • Выберите "Настройки": В выпадающем меню найдите опцию "Настройки".
    • Настройка уведомлений: Перейдите в раздел "Уведомления" и снимите галочку с параметра "Показывать значок на иконке Slack, чтобы указать на новую активность".

Это поможет отключить уведомление для всех команд, однако, если вы хотите отключить уведомления только для определенных команд, потребуется внести изменения в код.

Хакерские изменения и использование asar

Для более продвинутых пользователей можно использовать следующие методы, которые требуют изменения исходных файлов Slack:

  1. Изменение иконок уведомлений:

    • Откройте терминал и выполните команду:
      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. Патчинг JavaScript кода:
    Если вы хотите более гибкое решение, можно изменить JavaScript код Slack:

    • Убедитесь, что у вас установлен инструмент asar. Используйте команду для установки через npm:
      npm install -g asar
    • Распакуйте файлы Slack:
      mkdir -p ~/tmp/slack
      asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
    • Найдите и измените проверку на наличие непрочитанных сообщений:
      sed -i 's/unreads&gt;0/unreads&lt;0/g' ~/tmp/slack/dist/main.bundle.js
    • Замените ранее распакованные файлы обратно в Slack:
      sudo rm /usr/lib/slack/resources/app.asar
      sudo asar pack ~/tmp/slack /usr/lib/slack/resources/app.asar

Этот метод изменяет поведение приложения и скрывает индикатор нового сообщения, что окажет влияние на всех пользователей Slack на вашей системе.

Важные замечания

  • Безопасность. Убедитесь, что вы сохранили копии всех оригинальных файлов перед внесением изменений. Это поможет предотвратить возможные проблемы при обновлении приложения.
  • Регулярное обновление. Каждое обновление Slack может нарушить ваши изменения, поэтому вам, возможно, придется повторять описанные процедуры после обновления приложения.
  • Команда. Рассмотрите возможность создания командного чата для обсуждения идей, связанных с функционалом Slack, и отправляйте запросы на добавление новых функций.

Заключение

Хотя Slack не предлагает встроенных средств для отключения значка «синий круг» для определенных команд, описанные выше способы позволят вам отключить визуальные уведомления о новых сообщениях. Пользователи, готовые идти на риск, могут использовать хакерские методы для изменения кода, но будьте осторожны и делайте резервные копии файлов перед модификацией.

Оцените материал
Добавить комментарий

Капча загружается...