topic:telegram-multiple-instances

Запуск двух экземпляров Telegram на линукс десктопе

Вводная

В телеграмм есть возможность завести несколько аккаунтов на разные номера через кнопку “Add account”, но, по дефолту, предполагается что оба аккаунта будут работать в одном экземпляре приложение и между ними надо переключаться в самом приложении.
Это не очень удобно, когда для личного и рабочего общения используются разные аккаунты, нет-нет да и отвлечешься от работы на личные вопросы или упрешься в ограничения бесплатной версии телеграмма.

Мне больше нравится, когда аккаунты можно разделить по двум и более экземплярам телеграмма, это можно сделать в десктопной версии.

Начальные условия:

  • Есть два аккаунт телеграмм привязанные на два номера, личный и рабочий.
  • Есть приложение на андроид телефоне, оба аккаунта в одном приложении.
  • Есть ноутбук с Ubuntu 20.04.6 LTS с GNOME работающим в режиме Flashback (классический gnome)

Надо сделать:

  • Запустить личный аккаунт в первом экземпляре телеграмм установленном через snap.
  • Запустить рабочий аккаунт во втором экземпляре телеграмм через бинарник.
  • Подправить имена кнопок запуска экземпляров, чтобы не путаться в них.

Установка телеграмм через snap

Тут всё просто.

username@aee4:~$ sudo snap install telegram-desktop

Дальше запускаем телеграмм на ноубуке, видим qr-код и сканируем его на телефоне (Settings → Devices → кнопка “Link Desctop Device”) будучи настройках личного аккаунта.

Всё, в десктопной версии, установленной через snap, будет личный аккаунт.


Запуск телеграмм через бинарник

Переходим по ссылке https://desktop.telegram.org/ и скачиваем свежую версию телеграмма.

username@aee4:~$ mkdir ~/telegram_work_app/
username@aee4:~$ cd  ~/telegram_work_app/

username@aee4:~/telegram_work_app$ wget --content-disposition https://telegram.org/dl/desktop/linux
...
Location: https://td.telegram.org/tlinux/tsetup.6.1.1.tar.xz [following]
...

username@aee4:~/telegram_work_app$ ll
total 60804
drwxrwxr-x  2 username username     4096 сен  2 21:31 ./
drwxr-xr-x 44 username username    12288 сен  2 21:28 ../
-rw-rw-r--  1 username username 62241984 сен  1 17:53 tsetup.6.1.1.tar.xz

Распаковываем архив.

username@aee4:~/telegram_work_app$ tar xf tsetup.6.1.1.tar.xz 
username@aee4:~/telegram_work_app$ ll
total 118584
drwxrwxr-x  3 username username     4096 сен  2 21:46 ./
drwxr-xr-x 44 username username    12288 сен  2 21:28 ../
drwxr-xr-x  2 username username     4096 сен  1 17:52 Telegram/
-rw-rw-r--  1 username username 62241984 сен  1 17:53 tsetup.6.1.1.tar.xz

Запускаем телеграм в первый раз c кастомной рабочей директорией и выходим через Ctrl+C.
Новая рабочая директория создастся.

username@aee4:~/telegram_work_app$ cd Telegram/
username@aee4:~/telegram_work_app/Telegram$ ll
total 189284
drwxr-xr-x 2 username username      4096 сен  1 17:52 ./
drwxrwxr-x 3 username username      4096 сен  2 21:46 ../
-rwxr-xr-x 1 username username 191625728 сен  1 17:50 Telegram*
-rwxr-xr-x 1 username username   2184648 сен  1 17:47 Updater*

username@aee4:~/telegram_work_app/Telegram$ ./Telegram -workdir ~/telegram_work_app/TelegramDesktopWorkDir
QPainter::begin: Paint device returned engine == 0, type: 2
QWidget::render: Cannot render with an inactive painter
^C

В директории “~/.local/share/applications/” появится файл вида “org.telegram.desktop._<id>.desktop” описывающий кнопку запуска в меню “Application”, где “id” уникальный для каждой версии телеграмма и рабочей директории.
Файл “org.telegram.desktop._<id>.desktop” создаётся каждый раз при запуске телеграмма из бинарника, все раннее внесенные изменения в файле перезапишутся.

Из-за этого в gnome в меню “Applications” будет две одинаковые кнопки с название “Telegram”, одна от личного телеграмма установленного через snap, вторая от рабочего телеграмма который мы запускаем. Сделаем кастомную кнопку для рабочего телеграмма, а дефолтную кнопку “org.telegram.desktop._<id>.desktop” каждый раз будем удалять.

Копируем файл “org.telegram.desktop._<id>.desktop” в файл “telegram-work.desktop” и правим строки “Name=” и “Exec=”.

username@aee4~/.local/share/applications$ cat telegram-work.desktop

[Desktop Entry]
Name=Telegram-Work
Comment=New era of messaging
TryExec=/home/username/telegram_work_app/Telegram/Telegram
Exec=sh -c "/home/username/telegram_work_app/Telegram/Telegram -workdir /home/username/telegram_work_app/TelegramDesktopWorkDir/ -- %u & sleep 5; rm /home/username/.local/share/applications/org.telegram.desktop._*.desktop"
Icon=org.telegram.desktop
Terminal=false
StartupWMClass=TelegramDesktop
Type=Application
Categories=Chat;Network;InstantMessaging;Qt;
MimeType=x-scheme-handler/tg;x-scheme-handler/tonsite;
Keywords=tg;chat;im;messaging;messenger;sms;tdesktop;
Actions=quit;
DBusActivatable=true
SingleMainWindow=true
X-GNOME-UsesNotifications=true
X-GNOME-SingleWindow=true

[Desktop Action quit]
Exec=/home/username/telegram_work_app/Telegram/Telegram -workdir /home/username/telegram_work_app/TelegramDesktopWorkDir/ -quit
Name=Quit Telegram
Icon=application-exit

В “Exec=” последовательно выполняем несколько команд:

  • Запускаем в бекграунде телеграмм, в конце один амперсант.
  • Ждем 5 секунд, пока создастся файл “org.telegram.desktop._<id>.desktop”, в конце точка с запятой.
  • Удаляем файл “org.telegram.desktop._<id>.desktop”.

После этого в меню “Application” будет две кнопки с именами “Telegram” и “Telegram-Work”.

Дальше запускаем “Telegram-Work” и через телефон заходим в рабочий аккаунт.


Полезные ссылки

topic/telegram-multiple-instances.txt · Last modified: by k

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki