|
|
问题:
fvwm不会记住一个程序退出时的最大化状态,只能记住退出时的窗口大小.
这样下次启动时有些程序将会以一个很大窗口的形式出现. 而且会丢失原来窗口的普通大小的信息.
其实这可能的fvwm的maximize命令的问题.因为在gnome下最大化状态下的窗口到fvwm下依然处于最大化状态,尽管窗口的大小可能没有满屏.
解决方法:
我的想法是通过程序启动时窗口的大小占桌面的比例来猜测原窗口是否处于最大化.
因为我觉得这种判定方法可能比恢复窗口原来的状态来的好.
比如terminal,gvim等最大化后退出重新运行, 窗口还是处于80x24的状态.
下面是具体实现:
- DestroyModuleConfig FvwmEvent: *
- *FvwmEvent: Cmd
- *FvwmEvent: add_window FuncAW
- *FvwmEvent: destroy_window FuncDW
- AddToFunc StartFunction
- + I Module FvwmEvent
- DestroyFunc FuncAW
- AddToFunc FuncAW
- + I ThisWindow PipeRead `if [ '$[w.width]' -gt 1000 ] && [ '$[w.height]' -gt 750 ]; \
- then echo 'ThisWindow Maximize True';\
- if [ -f '$[HOME]/.fvwm/winpos/$[w.class]' ];\
- then read ax ay aw ah <'$[HOME]/.fvwm/winpos/$[w.class]';\
- else ax=110;ay=60;aw=800;ah=600;\
- fi;\
- echo SetEnv x-$[w.id] $ax;\
- echo SetEnv y-$[w.id] $ay;\
- echo SetEnv w-$[w.id] $aw;\
- echo SetEnv h-$[w.id] $ah;\
- fi`
- + I ThisWindow (Iconic) IconifyAndRearrange
- DestroyFunc FuncDW
- AddToFunc FuncDW
- + I ThisWindow Test (EnvIsSet x-$[w.id], EnvIsSet w-$[w.id], EnvIsSet y-$[w.id], EnvIsSet h-$[w.id]) PipeRead `echo PipeRead \"echo \\'\\$\\[x-$[w.id]\\] \\$\\[y-$[w.id]\\] \\$\\[w-$[w.id]\\] \\$\\[h-$[w.id]\\]\\'\
- \\>"$[HOME]/.fvwm/winpos/$[w.id]"\\;mv "$[HOME]/.fvwm/winpos/$[w.id]" \\'$[HOME]/.fvwm/winpos/$[w.class]\\'\"`
- + I ThisWindow PipeRead `echo -e "UnsetEnv x-$[w.id]\\nUnsetEnv y-$[w.id]\\nUnsetEnv w-$[w.id]\\nUnsetEnv h-$[w.id]"`
- DestroyFunc CustomMaximize
- AddToFunc CustomMaximize
- + I ThisWindow (Maximized) PipeRead "echo ResizeMove \\$\\[w-$[w.id]\\]p \\$\\[h-$[w.id]\\]p \\$\\[x-$[w.id]\\]p \\$\\[y-$[w.id]\\]p"
- + I TestRc (Match) Break
- + I ThisWindow SetEnv w-$[w.id] $[w.width]
- + I ThisWindow SetEnv h-$[w.id] $[w.height]
- + I ThisWindow SetEnv x-$[w.id] $[w.x]
- + I ThisWindow SetEnv y-$[w.id] $[w.y]
- + I Maximize $*
复制代码
用CustomMaximize代替默认的Maximize命令.
其实主要难度在要动态记住每个窗口的普通状态的大小和位置.
很久以前就想解决了它了.
看了用截屏来做程序icon的处理方法,才知道变量还可以这样定义.
贴出来给觉得有意义的人做个参考.
另外,我的fvwm用新的xorg(只有freetype支持,没有xtt)时候, 不能使用truetype的字显示.
而且xmms也不能运行. 是不是我的fonts.dir的设置的问题.我在里面加了粗体,斜体等的设置,比如:
ab=y:simsun.ttf -misc-SimSun-bold-r-normal--0-0-0-0-p-0-gbk-0 |
|