我正在 gnome 中使用类似 conky 的小部件管理器。我只想隐藏我的 ap 应用程序图标(显示所有其他正在运行的应用程序图标),使其不显示在正在运行的应用程序中,或者从此处
这是我的 qml 文件
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
Window {
id:window
visible: true
width: 500
flags: Qt.AlignLeft
height: 375
color: "transparent"
title: qsTr("Nidgets")
Timer{
interval:100
running: true
repeat: true
onTriggered: {
time.text = Qt.formatDateTime(new Date(), "hh:mm A")
date.text = Qt.formatDateTime(new Date(), "yyyy MMMM dd")
}
}
Item {
id: element1
x: 0
y: 0
width: 200
anchors.fill: parent
height: 200
focus: true
Keys.onPressed: {
if ((event.key === Qt.Key_F11) && (event.modifiers & Qt.ControlModifier)){
if(window.flags == Qt.FramelessWindowHint)
window.flags = 0
else
window.flags = Qt.FramelessWindowHint
}
}
Text {
id: date
x: 310
y: 205
color: "#ffffff"
text: Qt.formatDateTime(new Date(), "yyyy MMMM dd")
font.pixelSize: 24
}
Text {
id: time
x: 74
y: 86
color: "#ffffff"
anchors.centerIn: parent
text: Qt.formatDateTime(new Date(), "hh:mm A")
anchors.verticalCenterOffset: -45
anchors.horizontalCenterOffset: 35
font.pointSize: 75
}
}
}
我的 main.py 文件
import sys
from PyQt5.QtCore import QObject, QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQuick import QQuickView
from PyQt5.QtQml import QQmlApplicationEngine
from threading import Thread
import os
import importlib
if __name__ == '__main__':
myApp = QApplication(sys.argv)
engine = QQmlApplicationEngine()
context = engine.rootContext()
context.setContextProperty("main", engine)
engine.load('main.qml')
win = engine.rootObjects()[0]
win.show()
sys.exit(myApp.exec_())
答案1
显然,没有简单的方法可以提供给用户。最终只能将 _NET_WM_STATE_SKIP_TASKBAR 分配给窗口。
看在 Askubuntu 上在窗口创建后,可以从外部更改窗口属性。使用魔鬼派将系统地隐藏符合特定规则的窗口。可以使用 从任务栏隐藏特定窗口wmctrl
。例如,这可以在包装器启动脚本中完成。
更好的方法是从创建窗口的应用程序代码中设置窗口状态。对于 Python,它将归结为一个语句,例如window.set_property("skip-taskbar-hint", True)
GTK。请参阅此处获取一些提示:https://stackoverflow.com/questions/22256507/how-to-make-a-program-skip-the-task-bar-task-list-in-gnu-linux。
答案2
请检查该通用解决方案是否适合您的特定应用程序。
做:
xprop | grep "CLASS"
并单击要从任务栏中删除的窗口。
这将返回类似
WM_CLASS(STRING) = "name", "name"
安装 wmctrl
sudo apt install wmctrl
根据您的喜好,制作程序启动脚本或运行一次:
wmctrl -x -r name.name -b add,skip_taskbar
资料来源: