[已解决]fvwm 的 quake console[见22楼]

其它类软件,非上述版软件
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

[已解决]fvwm 的 quake console[见22楼]

#1

帖子 maniux » 2010-01-25 14:04

ee给了个脚本,pl的看不懂啊。
这个是fvwm的。网上找的,改了下。
额……问题是调出来就回不去了,越调越多……

代码: 全选

DestroyFunc RaiseOrFireTerminal
AddToFunc RaiseOrFireTerminal
+ I Any (quick_terminal, CurrentDesk) Break
+ I Exec exec urxvt -T quick_terminal 
+ I Wait quick_terminal
+ I Next (quick_terminal) PositionIt

DestroyFunc PositionIt
AddToFunc   PositionIt
+ I ResizeMove 800p 600p 480p 85p
+ I Raise
+ I Focus

DestroyFunc HideQuickTerminal
AddToFunc HideQuickTerminal
+ I ALL (quick_terminal) Iconify On
+ I ALL Raise
+ I Break

DestroyFunc ShowOrHideQuickTerminal
AddToFunc ShowOrHideQuickTerminal
+ I ThisWindow (quick_terminal)  HideQuickTerminal
+ I ThisWindow (!quick_terminal) RaiseOrFireTerminal
+ I NoWindow RaiseOrFireTerminal

代码: 全选

Key Super_L     A       A       ShowOrHideQuickTerminal
ee看下啥毛病?
上次由 maniux 在 2010-01-28 19:35,总共编辑 2 次。
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

Re: fvwm 的 quake console 这什么问题呢?

#2

帖子 maniux » 2010-01-26 14:17

应该是

代码: 全选

+ I ThisWindow (!quick_terminal) RaiseOrFireTerminal 
的问题。单独用HideQuickTerminal是可以的。
但TishWindow这玩意怎么用? !quick_terminal, !"quick_terminal" 都不行。

ee阿姨??
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: fvwm 的 quake console 这什么问题呢?

#3

帖子 eexpress » 2010-01-26 14:19

ThisWindow的当前窗口,你这,要在那窗口有焦点的时候,才起作用啊。
我啥时候,给过pl脚本啊。都是fvwm的函数而已。
● 鸣学
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#4

帖子 eexpress » 2010-01-26 14:25

记起了。难道你是看了xterm的那pl? 那可以不要的。那是指到位置颜色,启动不同的xterm的。
我的xterm,只是没边框,然后热键全部shade。带一个判断shade的方向。就那shadex的函数。
● 鸣学
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#5

帖子 maniux » 2010-01-26 18:17

viewtopic.php?f=122&t=251455
对,就是xterm的脚本。

我这有焦点的,那Raise和Focus就是给它焦点。
但现在就是按一下快捷键出来一个……

那个判断的写法可行么?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#6

帖子 eexpress » 2010-01-27 10:43

RaiseOrFireTerminal 里面,你每次强制启动了一个啊。

你肯定要判断下先。就那TestRc。前面all那句,就是判断有指定窗口,就显示。TestRc就是如果失败,就启动一个。
你最好抄这现成的。

代码: 全选

# Jump & Exec 函数
DestroyFunc JumpExec
AddToFunc JumpExec
+ I All ($0) WindowListFunc
+ I TestRc (NoMatch) Exec exec $0 &
● 鸣学
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#7

帖子 maniux » 2010-01-27 16:51

这个,ee强人就是不一样……

代码: 全选

DestroyFunc RaiseQuickTerminal
AddToFunc RaiseQuickTerminal
+ I All (URxvt) EWMHWindowFunc
+ I Next (URxvt) PositionIt
+ I TestRc (NoMatch) Exec exec urxvt -T X.A.T
+ I Wait URxvt
+ I Next (URxvt) PositionIt

DestroyFunc PositionIt
AddToFunc   PositionIt
+ I ResizeMove 800p 600p 480p 85p
+ I Raise
+ I Focus

DestroyFunc HideQuickTerminal
AddToFunc HideQuickTerminal
#+ I All (URxvt) Iconify On
+ I All (URxvt) WindowShade E 
+ I Next Raise

DestroyFunc ShowOrHideQuickTerminal
AddToFunc ShowOrHideQuickTerminal
+ I ThisWindow (URxvt)  HideQuickTerminal
+ I ThisWindow (!URxvt) RaiseQuickTerminal
有两个问题。
1.唤出后只能在它自己的layer,会跑到其他程序后面。不好。
貌似EWMHWindowFunc和WindowListFocus的区别就是Focus和FlipFocus。但后者会把鼠标的位置改变,不好。
所以用EWMH这个,但不能在最前。
如果用了Layer 0 9, 就一直在最前,也不好。
我想让它出来的时侯在最前,如果鼠标点别的程序就跑到后面去。
能实现否?

2.作判断的程序名只能是Identify里的Class?
Style 的判断可以用urxvt -T ×× 的名字,但像上面的ThisWindow()里的就不行。如此,我想quake console一直开着,偶尔在开个urxvt的话,一按快捷键,就都shade了,能不能只让快捷键控制这个urxvt,其他的不管?
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#8

帖子 maniux » 2010-01-28 9:04

代码: 全选

DestroyFunc RaiseQuickTerminal
AddToFunc RaiseQuickTerminal
+ I All ("X.A.T") EWMHWindowFunc
+ I Next ("X.A.T") PositionIt
+ I TestRc (NoMatch) Exec exec urxvt -T X.A.T -e screen
+ I Wait "X.A.T"
+ I Next ("X.A.T") PositionIt

DestroyFunc PositionIt
AddToFunc   PositionIt
+ I ResizeMove 800p 600p 480p 85p
+ I Raise
+ I Focus

DestroyFunc HideQuickTerminal
AddToFunc HideQuickTerminal
#+ I All ("X.A.T") Iconify On
+ I All ("X.A.T") WindowShade E 
+ I Next Raise

DestroyFunc ShowOrHideQuickTerminal
AddToFunc ShowOrHideQuickTerminal
+ I ThisWindow ("X.A.T")  HideQuickTerminal
+ I ThisWindow (!"X.A.T") RaiseQuickTerminal
+ I None ("X.A.T") RaiseQuickTerminal
搞定了第二个问题。原来用标题名字时要加引号……
加了最后一句,这样即使在root window下也能唤出。

就剩那第一个唤出在最前的这个问题了。
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#9

帖子 maniux » 2010-01-28 9:08

发现ee也有opera的blog啊,哈哈
看到本人和仔仔喽 :em09
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#10

帖子 eexpress » 2010-01-28 9:23

# 修正系统函数:恢复窗口时,鼠标居中
AddToFunc WindowListFunc
+ I WarpToWindow 50 50

我用这个函数。自己增加了一条。蛮好的啊。
● 鸣学
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#11

帖子 maniux » 2010-01-28 10:03

我不想动鼠标哦,而且我时Shade,不是Iconify。
这样就都改了,但别的程序也用WindowListFunc
这就意味这重新写一函数,还不能达到我要求……
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#12

帖子 eexpress » 2010-01-28 10:07

那鼠标,是自动移动。你不需要动的啊。
不明白你的需求了。
慢慢折腾吧。 :D
● 鸣学
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#13

帖子 maniux » 2010-01-28 10:53

嗯,这个我知道。但这样的话term收回后,鼠标地方就不一样了。
但用本子的时侯不喜欢总去动触摸版……
咋没有类似OnTop之类的呢,就一StaysOnTop,不满足要求。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#14

帖子 eexpress » 2010-01-28 11:03

额。有点理解不同哦。如果是shade。并不调用这函数,鼠标点是不会动的哦。都是自己控制的嘛。
ontop。就是layer。可我这,就xterm/dock/panel设置了staysontop。
你要不。试试我那”最简单的fvwm配置“
● 鸣学
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

Re: fvwm 的 quake console 这什么问题 ThisWindow 怎么用啊?!

#15

帖子 maniux » 2010-01-28 13:58

嗯,经过决择,变成了先在这样。

代码: 全选

DestroyFunc RaiseToTopAndPositionIt
AddToFunc RaiseToTopAndPositionIt
+ I ResizeMove 800p 600p 480p 85p
+ I WarpToWindow 10 50
+ I Raise
+ I Focus

DestroyFunc RaiseQuickTerminal
AddToFunc RaiseQuickTerminal
#+ I All ("X.A.T") EWMHActivateWindowFunc
+ I All ("X.A.T") RaiseToTopAndPositionIt
+ I TestRc (NoMatch) Exec exec urxvt -T X.A.T -e screen
+ I Wait "X.A.T"
+ I Next ("X.A.T") RaiseToTopAndPositionIt

DestroyFunc HideQuickTerminal
AddToFunc HideQuickTerminal
+ I All ("X.A.T") WindowShade Toggle
+ I Next("X.A.T") RaiseToTopAndPositionIt

DestroyFunc ShowOrHideQuickTerminal
AddToFunc ShowOrHideQuickTerminal
+ I ThisWindow ("X.A.T")  HideQuickTerminal
+ I ThisWindow (!"X.A.T") RaiseQuickTerminal
+ I None ("X.A.T") RaiseQuickTerminal
唯一的问题是,要安两下才能让term 自动WindowShade会去……这点非常不好。
如果鼠标不在term上,按一下跑到term上,还要再按两下。

我估计是判断的问题,不过搞了半天也没搞明白……昨天可以一次会去的,今天改的太多了,就不知道哪里错了。
回复