一种比较优雅的LinuxQQ后台解决方案

简介

Linux QQ的后台托盘,在chromeOS上一直是一个问题,本文将介绍一种目前看来可能是最好的解决方案。
这个方案可以实现从chromeOS的消息托盘唤起QQ主界面或者QQ托盘菜单。

以下是具体操作步骤

首先安装好LinuxQQ
然后参考此文章安装Stalonetray

在创建配置文件那一步,请将配置文件更改为:

background "#777777"
decorations all
geometry 1x1+0+0
icon_gravity NE
icon_size 48

然后,安装xdotool和notify-send

sudo apt install xdotool
sudo apt install libnotify-bin

接下来,创建qq后台守护程序

sudo vim /usr/bin/qqd

复制以下内容

#!/bin/bash

while true; do
    if  xdotool search --name QQ > /dev/null; then
        echo 'qq is on'
        if ! xdotool search --name stalonetray > /dev/null;then
                echo 'start stalonetray'
                stalonetray&sleep 0.3&&xdotool search --name stalonetray windowunmap
        fi
        if ! xdotool search --onlyvisible --name QQ > /dev/null; then
                echo 'qq window off'
                # 发送通知并获取返回状态
                status=`notify-send 关闭消息打开QQ -A 点击打开菜单`
                # 根据状态执行不同的点击操作
                if [ "$status" == "0" ]; then
                    xdotool search --name stalonetray windowmap & sleep 0.3 && output=$(xwininfo -name stalonetray)&&X=$(echo "$output" | awk '/Absolute upper-left X:/ {print $4 + 20}')&&Y=$(echo "$output" | awk '/Absolute upper-left Y:/ {print $4 + 20}') && xdotool mousemove $X $Y click 3 &
                else
                                xdotool search --name stalonetray windowmap & sleep 0.3 &&output=$(xwininfo -name stalonetray)&&X=$(echo "$output" | awk '/Absolute upper-left X:/ {print $4 + 20}')&&Y=$(echo "$output" | awk '/Absolute upper-left Y:/ {print $4 + 20}')&& xdotool mousemove $X $Y click 1 && xdotool search --name stalonetray windowunmap
                fi
         else
                xdotool search --name stalonetray windowunmap
                echo 'hide stalonetary'
        fi
    fi
    sleep 5
done

粘贴到终端中(通常是Ctrl+Shift+C)
按下 i 进入编辑模式

然后依次按下[ESC][ : ][W][Q][Enter]

然后给予运行权限

sudo chmod +x /usr/bin/qqd

最后需要设置这个程序为开机自启动

sudo vim ~/.sommelierrc

文件末尾加入一行
(vim中,按下i进入编辑模式)

sleep 2 &&stalonetray&
sleep 4 && xdotool search --name stalonetray windowunmap&
sleep 7&&qqd&

依次按下
[ESC][ : ][W][Q][Enter]

最后重启Linux
右键你务栏中的Linux图标,选择关闭Linux,然后再重新打开。

使用方法

这个程序会在后台循环检测QQ的运行状态,并在检测到qq启动且窗口关闭时发送通知。
点击通知的空白处以隐藏通知
点叉或者右划通知以显示QQ界面
点击蓝色的"点击打开菜单"以打开QQ托盘菜单

2 个赞

更新日志:更新脚本以加入窗口位置检测,简化操作流程,并适应显示器布局更改的情况

马的linux子系统处理多显示器会有bug,必须重启Linux才能解决