让 Linux 下 QQ 和微信重新打开时返回上次会话

2026-04-11 14:241阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

问题简介

Linux 下的 QQ 和微信一直有个问题:一旦登陆了账号,叉掉后会最小化到托盘;之后想再打开该会话,必须从托盘打开。重新运行 linuxqq/wechat 程序无效、或是会打开一个新的登陆界面。

用托盘打开有一些问题:

  1. 一定得用鼠标点击。用起来很不爽;
  2. 有些 windows manager(比如 GNOME)中,系统托盘已经是 deprecated 的设计了。要用得另外装 extension。

我希望起到的效果是,重新运行 linuxqq/wechat 时,若存在已有会话,则重新打开该会话。

解决方案

我找到的解决方法包括以下两步:

1. 安装 tray-control

github.com

GitHub - andrewerf/tray-control: Simple CLI tool to show items in systray and...

Simple CLI tool to show items in systray and activate them. Build on top of DBus.

这个软件可以显示/激活 dbus tray。

当然现在这个主仓库的代码似乎有些兼容性问题。可以看其 pr#2 的仓库。

这样以后,你就可以看到系统所有有托盘应用的托盘了:

% tray-show -v Category: ApplicationStatus Title: Id: chrome_status_icon_1 Status: Active Category: ApplicationStatus Title: wechat Id: wechat Status: Active IconName:

这两个分别是 qq 和 wechat 了(qq 这个 Id 好抽象)。

之后使用 tray-activate -i chrome_status_icon_1 或是 tray-activate -i wechat 就可以激活 qq/wechat 了。

2. 修改 .desktop

注:我以下的文件路径/内容都是参考 Arch Linux AUR 包的;其它发行版及安装途径需作适当修改。

我复制 /usr/share/applications/qq.desktop~/.local/share/applications/qq.desktop,并修改:

--- /usr/share/applications/qq.desktop +++ /home/user/.local/share/applications/qq.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Name=QQ -Exec=linuxqq %U +Exec=sh -c 'pgrep -u "$USER" -x qq >/dev/null && tray-activate -i chrome_status_icon_1 || linuxqq %U' Terminal=false Type=Application Icon=qq

我复制 /usr/share/applications/wechat.desktop~/.local/share/applications/wechat.desktop,并修改:

--- /usr/share/applications/wechat.desktop +++ /home/user/.local/share/applications/wechat.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Name=wechat Name[zh_CN]=微信 -Exec=/opt/wechat/wechat %U +Exec=sh -c 'pgrep -u "$USER" -x wechat >/dev/null && tray-activate -i wechat || /opt/wechat/wechat %U' StartupNotify=true Terminal=false Icon=/usr/share/icons/hicolor/256x256/apps/wechat.png

使用同名的 .desktop,会使得 local 的覆盖 system level 的。如果你想保留原功能(比如 qq 原功能为新开一个窗口,从而方便登陆多个账号),可以改成不同的名字,比如叫 qq-activate.desktop,并相应地修改文件中 Name 项。
但这可能会有些问题,毕竟可能会造成 tray-show 中存在多个 Id 相同的项。到时候就不知道激活哪个了… (我没测试过)

结果

现在就可以使用一些应用启动器(如 fuzzel/GNOME search 等),直接激活 qq/wechat 当前窗口了。

网友解答:
--【壹】--:

最小化/移到其它工作区当然是一个解法。

我本人用的 niri。关闭 QQ/微信它也会到 system tray 里去。

我习惯关闭它,有 notification 会再弹出(


--【贰】--:

最小化是堆叠桌面的问题

用 sway, hyprland 这类可以完美避开,因为它的最小化就是将窗口移动到一个特殊工作区,根本不存在这个问题


--【叁】--:

我记不太清楚了,niri 没有这种变相的隐藏方法?


--【肆】--: