Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2918239
  • 博文数量: 471
  • 博客积分: 10012
  • 博客等级: 上将
  • 技术积分: 5255
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-10 23:58
文章分类

全部博文(471)

文章存档

2011年(3)

2010年(61)

2009年(52)

2008年(212)

2007年(69)

2006年(74)

我的朋友

分类: LINUX

2006-12-15 11:55:39

Fvwm 下 win+D 和 win+L 功能的实现


突然对于 Fvwm 产生了浓厚的兴趣,大概是由于 Gnome 不能实现 Tile and Cascad 让我感到失望的缘故吧。Fvwm 的确让人爱不释手,玩起来上瘾。很多炫酷的功能就不讲了,谈谈怎么实现 Windows 下的 Win+D 显示桌面和 Win+L 锁定桌面的功能好了。后者很简单,前者稍微麻烦一点点。

Win+D 不是简单地把所有窗口最小化就完了,再按下一次会恢复原来的布局。就是说原来非最小化的窗口按一下最小化,按两下就恢复正常,而原来最小化的窗口始终保持最小化。这就涉及到分类和记忆状态。把这个问题想明白了,实现就简单多了。

DestroyFunc FuncFvwmIconifyTrue
AddToFunc FuncFvwmIconifyTrue
+ I All (!Iconic) State 1
+ I All (State 1) Iconify True

DestroyFunc FuncFvwmIconifFalse
AddToFunc FuncFvwmIconifyFalse
+ I All (State 1) Iconify False

DestroyFunc FuncFvwmIconifyToggle
AddToFunc FuncFvwmIconifyToggle
+ I FuncFvwmIconifyFalse
+ I All (State 1) State 1 False
+ I TestRc (NoMatch) FuncFvwmIconifyTrue

Key D A 4 FuncFvwmIconifyToggle
试试看,我不解释你能看明白思路吗?

其实很简单,首先尝试将标记过为普通又可能最小化了的窗口恢复。这是为了实现第二次按 Win+D 时的个功能,然后将标记撤除。如果没有这种标记,就将所有普通窗口标记,然后将其最小化,这就实现的第一次按 Win+D 的功能。看起来很麻烦,其实想想看很容易明白了哦。

实现 Win+L 就简单多了,和普通的快捷键定义没什么区别:)

DestroyFunc FuncFvwmLockScreen
AddToFunc FuncFvwmLockScreen
+ I All (xscreensaver) Nop
+ I TestRc (NoMatch) Exec xscreensaver -no-splash &
+ I Exec xscreensaver-command -lock

Key L A 4 FuncFvwmLockScreen

阅读(2275) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~