当我们打开一个应用程序时,它将显示在dock中。是否可以打开应用程序而不会使其出现在底座中。
例如:
我应该能够打开chrome(例如),但我不能打开它在扩展坞中。
编辑1:
到目前为止我一直在尝试:
我打开了gedit进行测试。
wmctrl -l
的输出部分是0x03800049 0 ravan Untitled Document 1 - gedit
命令:
wmctrl -r "Untitled Document 1 - gedit" -b add,skip_taskbar
做跳过的工作码头。
问题是,如果将其最小化(win + H),我将无法取回。
#1 楼
可能无法在扩展坞中显示任务列表。按住Control键并右键单击扩展坞上的任意位置
选择“首选项”
选择“行为”标签
在“项目管理”标题下,禁用“显示未固定”
运行,但未固定的项目将不再显示在停靠栏中。
请注意,停靠项充当最小化/最小化机制。如果您已经修改了窗口装饰的布局以包含一个最小化按钮,那么您将不再具有一种使窗口最小化的简便方法。但是,仍然可以从多任务视图访问最小化的窗口。
#2 楼
基本OS的基座是plank
。因此,我分析了plank
的源代码,并找到了它无法处理Windows的“跳过任务栏”选项的原因。因此,我修改了木板的两个部分来执行此操作。
首先,它获得了该应用程序的窗口数量包括跳过任务栏选项的窗口。
我们可以从
plank
源中找到确切的源函数。这是
get_num_windows
中的lib/Services/WindowControl.vala
函数。下面,我添加了一个检查
is_skip_tasklist
的条件。public static uint get_num_windows (Bamf.Application app)
{
Wnck.Screen.get_default ();
Array<uint32>? xids = app.get_xids ();
warn_if_fail (xids != null);
uint count = 0;
for (var i = 0; xids != null && i < xids.length; i++) {
unowned Wnck.Window window = Wnck.Window.@get (xids.index (i));
if (window != null && window.get_transient () == null && !window.is_skip_tasklist ()) /* LOOK, should be added && !window.is_skip_tasklist() */
count++;
}
return count;
}
其次,当更改窗口的“跳过任务栏”选项时,它无法处理指示器。源代码的相关部分是
handle_user_visible_changed
的lib/Items/ApplicationDockItem.vala
函数。我在函数中添加了以下一行。
void handle_user_visible_changed (bool user_visible)
{
update_indicator (); /* LOOK, should be called */
if (user_visible) {
app_window_added ();
return;
}
if (this is TransientDockItem)
App = null;
app_closed ();
}
以下简单的python脚本可见/在木板上不可见的特殊应用。在运行此脚本之前,应使用以下命令安装python wnck模块:
$ sudo apt-get install python-wnck
#!/usr/bin/python
import wnck
import sys
if __name__ == "__main__":
if len(sys.argv) != 3:
print "Usage: appvisible <appname> <1|0>"
sys.exit(0)
processname = sys.argv[1]
visible = sys.argv[2]
screen = wnck.screen_get_default()
screen.force_update()
for window in screen.get_windows():
if window.get_class_group().get_name() == processname:
if visible == "1":
window.set_skip_tasklist(True)
else:
window.set_skip_tasklist(False)
它可以按以下方式使用。
$ appvisible gedit 0
-可见gedit木板,$ appvisible gedit 1
-木板上不可见的gedit。其他编辑功能可最小化已跳过和最小化的窗口。
#!/usr/bin/python
import gtk
import wnck
import sys
import time
if __name__ == "__main__":
if len(sys.argv) != 2:
print "Usage: unminimize <-l|appname>"
sys.exit(0)
appname = sys.argv[1]
screen = wnck.screen_get_default()
screen.force_update()
for window in screen.get_windows():
if not window.is_minimized():
continue
if not window.is_skip_tasklist():
continue
if appname == '-l':
print window.get_class_group().get_name()
elif window.get_class_group().get_name() == appname:
window.unminimize(gtk.gdk.x11_get_server_time(gtk.gdk.get_default_root_window()))
您可以使用它作为
./unminimize -l
-列表跳过和最小化的窗口,./unminimize appname
。评论
好吧,好工作+1,我在测试之后会告诉您:)
– Ravan
2015年12月7日在7:12
如果您能更恰当地指出编辑系统文件可能会破坏系统,我会感觉更好。将来,更改和更新可能会有效地使系统变砖,您只是不知道。
–刘易斯·戈达德♦
2015年12月7日在20:09
@Ravan请查看其他脚本以使其最小化。
–小东街
2015年12月9日,2:13
评论
嘿Daniel,隐藏功能o_O
– Ravan
15年12月8日在1:30
好吧,如果最小化了,我如何找回它?
– Ravan
2015年12月8日,下午1:32