绝世好任务栏

FvwmPager有一个缺点是最小化的图标显示不清晰且被覆盖的窗口无法直观的显示。Windows 式任务栏虽然占据了垂直空间,但利用了显示器宽度大的特点可以显示窗口的内容。

fvwm

为了方便Desk内的窗口进行整合,最佳的FvwmIconMan配置方案是设置两个任务栏,上下两个任务栏,大小不同。大任务显示当前Desk中除了当前Page中的窗口,小任务栏显示当前 Page中的窗口。然而大任务栏的Resolution设置为Desk时,显示所有当前Desk的窗口。这时两个窗口就重复了。没有配置办法,只好修改源码

添加了任务栏之后再修改一些窗口重排的窗口大小的操作即可。小任务栏的鼠标行为是左键选中窗口,并聚焦提升;中键图片式图标化;右键是如果窗口没有最大化则最大化聚焦提升 ,如果最大化就直接聚焦提升,不缩小。

2017-09-30 注:使用最大化的方法不对。因为最大化状态是在窗口中工作的基本形式, 由最大化切换到平铺、全屏状态时候,因为最大化、全屏使用同一个窗口状态,所以出现需要按全屏键两次且无法直接由全屏切换回最大化状态。所以,为了方便切换,一个简便的方法是最大化窗口的动作是Resize到全屏大小,然后移动位置使其居于屏幕中央。

DestroyFunc MaxInEBSS
AddToFunc MaxInEBSS
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] - 223`p `expr $[vp.height] - 76`p'
+ I ThisWindow (!Iconic) Move 50-50w 50-50w
+ I Raise

DestroyFunc MaxLInEBSIM
AddToFunc MaxLInEBSIM
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] / 2 - 119`p `expr $[vp.height] - 76`p'
+ I ThisWindow (!Iconic) Move 0 50-50w
+ I Raise

DestroyFunc MaxRInEBSIM
AddToFunc MaxRInEBSIM
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] / 2 - 119`p `expr $[vp.height] - 76`p'
+ I ThisWindow (!Iconic) Move -0 50-50w
+ I Raise

DestroyFunc MaxUInEBSIM
AddToFunc MaxUInEBSIM
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] - 223`p `expr $[vp.height] / 2 - 46`p'
+ I ThisWindow (!Iconic) Move 50-50w 31p
+ I Raise

DestroyFunc MaxDInEBSIM
AddToFunc MaxDInEBSIM
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] - 223`p `expr $[vp.height] / 2 - 46`p'
+ I ThisWindow (!Iconic) Move 50-50w -31p
+ I Raise


DestroyFunc MaxGrowInEBS
AddToFunc MaxGrowInEBS
+ I Maximize growonlayers $[w.layer] -1 grow grow
+ I Raise

DestroyFunc FullScreen
AddToFunc FullScreen
+ I EwmhBaseStruts 0 0 0 0
+ I ThisWindow (Maximized) WindowStyle Borders
+ I TestRc (!Match) WindowStyle !Borders
+ I TestRc (!Match) Raise
+ I TestRc (!Match) UpdateStyles
+ I Maximize 100 100
+ I TestRc (Match) EwmhBaseStruts $[fvwm_left_margin] $[fvwm_right_margin] 0 0
+ I TestRc (!Match) Move 50-50w 50-50w
+ I TestRc (!Match) EwmhBaseStruts $[fvwm_left_margin] $[fvwm_right_margin] 0 0
+ I WarpToWindow 50 50

DestroyFunc ResizeHalfMoveL
AddToFunc ResizeHalfMoveL
+ I EwmhBaseStruts 0 0 0 0
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] / 2 - 16`p `expr $[vp.height] - 16`p'
+ I ThisWindow (!Iconic) Move 0 50-50w
+ I Raise
+ I WarpToWindow 50 50
+ I EwmhBaseStruts $[fvwm_left_margin] $[fvwm_right_margin] 0 0

DestroyFunc ResizeHalfMoveR
AddToFunc ResizeHalfMoveR
+ I EwmhBaseStruts 0 0 0 0
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] / 2 - 16`p `expr $[vp.height] - 16`p'
+ I ThisWindow (!Iconic) Move -0 50-50w
+ I Raise
+ I WarpToWindow 50 50
+ I EwmhBaseStruts $[fvwm_left_margin] $[fvwm_right_margin] 0 0

DestroyFunc ResizeMaxInEBSS
AddToFunc ResizeMaxInEBSS
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] - 223`p `expr $[vp.height] - 76`p'
+ I ThisWindow (!Iconic) Move 50-50w 50-50w
+ I Raise
+ I WarpToWindow 50 50

DestroyFunc ResizeHalfMoveLIn
AddToFunc ResizeHalfMoveLIn
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] / 2 - 119`p `expr $[vp.height] - 76`p'
+ I ThisWindow (!Iconic) Move 0 50-50w
+ I Raise
+ I WarpToWindow 50 50

DestroyFunc ResizeHalfMoveRIn
AddToFunc ResizeHalfMoveRIn
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] / 2 - 119`p `expr $[vp.height] - 76`p'
+ I ThisWindow (!Iconic) Move -0 50-50w
+ I Raise
+ I WarpToWindow 50 50

DestroyFunc ResizeHalfMoveUIn
AddToFunc ResizeHalfMoveUIn
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] - 223`p `expr $[vp.height] / 2 - 46`p'
+ I ThisWindow (!Iconic) Move 50-50w 31p
+ I Raise
+ I WarpToWindow 50 50

DestroyFunc ResizeHalfMoveDIn
AddToFunc ResizeHalfMoveDIn
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] - 223`p `expr $[vp.height] / 2 - 46`p'
+ I ThisWindow (!Iconic) Move 50-50w -31p
+ I Raise
+ I WarpToWindow 50 50

DestroyFunc ResizeHalfMoveLInAll
AddToFunc ResizeHalfMoveLInAll
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] / 2 - 119`p `expr $[vp.height] - 16`p'
+ I ThisWindow (!Iconic) Move 0 50-50w
+ I Raise
+ I WarpToWindow 50 50

DestroyFunc ResizeHalfMoveRInAll
AddToFunc ResizeHalfMoveRInAll
+ I ThisWindow (!Iconic) Piperead 'echo Resize `expr $[vp.width] / 2 - 119`p `expr $[vp.height] - 16`p'
+ I ThisWindow (!Iconic) Move -0 50-50w
+ I Raise
+ I WarpToWindow 50 50

其中需要注意的是全屏函数,对于Terminal之类无法铺满全屏的窗口,一个友好的操作是全屏之后将其移动到位置中央。

石见 石页 /
在共享协议(CC)下发布于
类别: technology 
标签: fvwm  resolution  fvwmiconman  中