新立得里面过滤“window manager”找到的有趣的东西(对40余种WM的测试和分析)

各种窗口管理器和美化相关
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#46

帖子 ljj_jjl2008 » 2011-08-14 6:36

开始测试Tiling_window_manager
http://en.wikipedia.org/wiki/Tiling_window_manager
awesome
这是一个平铺型窗口管理器,最近比较热门。所谓的平铺就是之所有的窗口都不会相互重叠,而是自动的被调整大小使得它们能够刚好占满整个屏幕。这和传统的桌面管理器的概念相差很大。
他的配置文件用的是一种编程语言(LUA),所以配置还是比较灵活的,不过配置出好的效果难度也很大
我已经定制好了一种我喜欢的布局(居中放大布局的改版,是一种“伪平铺”)。关于awesome的快捷键和用法,看我的其他帖子(17楼)
viewtopic.php?f=77&t=338764&p=2437165#p2437165
awesome里面面板、菜单、托盘、桌面都是全的,不用利用其他来补充(好像也不能)。

DWM
dwm是X下的一个动态窗口管理器。它用平铺的、栈式的和全屏的布局方式,借助一些可选的补丁还可以实现其他的布局。布局可以动态得改变,为程序提供最优的环境和性能。dwm特别轻量快速,用C语言编写,被设计的目标是控制在2000行以下的代码。在xrandr和Xinerama支持下可实现multi-head。他没有配置文件,通过修改源程序重新编译来修改配置。

用法也很简单:
1,调整窗口布局:
dwm缺省工作在平铺模式。当新窗口不断出现在同一个标签页时,窗口会越来越小。所有窗口会占满整个屏幕(除了目录条)。然而还有其他两种模式:浮动和单页模式。浮动模式对非平铺窗口管理器用户来说更熟悉,它允许用户重新按自己需要摆放窗口。单页模式会让一个窗口在最上边。
要切换到浮动模式,只需要按Mod1 + F。Mod1缺省是 Alt。如果你看到标签页右上角有X>这样的标志,就进行了浮动模式。
切换到单页模式,按 Mod1 + M。检查上否在单页模式,你会看到[M]标志(如果当前标签页无窗口),或者[n](n是打开窗口的编号)。
回来平铺模式,按Mod1 + T,你会看到 []= 这样的标志。
2,按 (Mod1 + P) 来启动Dmenu(Mod1 缺省是 Alt )。然后只需要在上边出现的工具条中输入你想运行的程序的前几个字母,也可以按左右箭头在进行选择,按回车键完成。
3,控制窗口
将窗口移动到另一个tag
将当前的活动窗口移到其他的标签页:Shift + Mod1 + x, 其中的x是其他的标签页的序号,如果x是5,则表示将当前的活动窗口移到第5号标签页上去。
4,关闭窗口
关闭当前的活动窗口: Shift + Mod1 + C.
5,退出dwm
退出dwm(登出): Shift + Mod1 + Q.
DWM中不能选择使用桌面,因为他会把桌面当成浮动窗口,而浮动窗口默认会在上层,所以一旦选择了桌面,实际打开的程序就全都被“桌面”盖住看不到了。但是选择面板和托盘问题不大,因为他们小,不怎么占用地盘。而conky则会被压在下层,wmaker的部件会被布局,所以都不能正常使用。
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#47

帖子 ljj_jjl2008 » 2011-08-14 6:46

I3

I3也是一个平铺的窗口管理器。
上面这些组件在I3里面居然没有任何一个是可用的。

需要修改~/.i3/config中字体设置,否则中文乱码:
-wenquanyi-wenquanyi bitmap song-bold-r-normal--12-120-75-75-p-119-iso10646-1
下面是启动I3后出现的界面里面的文字:
1.) Welcome to i3!

This message provides an overview of the default keybindings to use i3.
Please also make sure to have a look at the man page and the user's guide:
http://i3.zekjur.net/docs/userguide.html


2.) Configuration Files

/etc/i3/config is the default configuration. It is recommended to copy it and
afterwards edit it to suit your needs (in particular, you may want to disable
this message):

cp /etc/i3/config ~/.i3/config


3.) Keybindings

The following explanation is related to the QWERTY layout, but as the default
configuration uses keycodes instead of keysymbols for binding, you still have
to press the same physical keys, regardless of your keyboard layout.

The Mod1 key is usually bound to the "Alt" key on your keyboard.

Mod1+Enter opens a terminal emulator
Mod1+v starts dmenu (an application launcher)

The directional keys are j(left), k(down), l(up) and ;(right). You can also use
the arrow keys on your keyboard, if you prefer them.

Mod1+<directional key> moves the focus to the window in the given direction
Mod1+Shift+<directional key> moves the window to the given direction
Mod1+<number> opens the corresponding workspace
Mod1+Shift+<number> moves a window to the selected workspace
Mod1+h sets the mode of a container to stacking
Mod1+e sets the mode back to default
Mod1+f toggles fullscreen mode for the current window
Mod1+Shift+Space toggles floating mode for the current window
Mod1+Shift+q closes a window
Mod1+Shift+r restarts i3 in-place (at this time, you will lose your layout)
Mod1+Shift+e exits i3

If you have any questions, please don't hesitate to ask!
Have fun using i3
1.) 欢迎使用 i3!

这段信息讲述了 i3的默认快捷键设置。
更多信息请到以下网址察看用户手册。
http://i3.zekjur.net/docs/userguide.html


2.) 配置文件

/etc/i3/config 是默认配置文件。 我们强烈建议你把配置文件拷贝到你自己的目录:

cp /etc/i3/config ~/.i3/config


3.) 快捷键

这是 QWERTY 键盘布局里面的快捷键

Mod1 指的是 "Alt" 键

Mod1+Enter 打开终端
Mod1+v 运行 dmenu (输入程序名快速定位程序)

方向键: j(left), k(down), l(up) and ;(right)
Mod1+<directional key> 在窗口之间移动焦点
Mod1+Shift+<directional key> 移动窗口
Mod1+<number> 打开相应的工作区
Mod1+Shift+<number> 移动一个窗口到选定的工作区
Mod1+h 设置一个布局模式
Mod1+e 回默认设置模式
Mod1+f 切换当前窗口全屏模式
Mod1+Shift+Space 切换当前窗口浮动模式
Mod1+Shift+q 关闭窗口
Mod1+Shift+r 重启I3 (会失去选定的布局)
Mod1+Shift+e 退出I3
I3不好用!比awesome差太远了。布局格式少,窗口大小也无法调整。而且上面这些组件在I3里面居然没有任何一个是可用的。
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#48

帖子 ljj_jjl2008 » 2011-08-14 7:39

larswm
他把我的机器弄成了假死状态了!
这个没法测试,一个快捷键按下去,图形界面就彻底失去响应了。
只好到tty1去kill进程。

我要把他卸载掉!

Parti
启动起来后,屏幕中间出来一个可以用鼠标托动的竖线,其余的什么也没有了。
后来找到了下面这个地址:
http://code.google.com/p/partiwm/
看到了演示的动画。
不过这个地址里面说:这个WM现在还不能用于日常应用。它是基于gtk+,用python开发的。
这个WM在实际环境中几乎没法使用,在Xephyr打开的窗口中还勉强能用。他把桌面分成左右两半,打开的程序用顶部的页签来切换,打开程序用终端输入这样的命令

代码: 全选

DISPLAY=:N sawfish  &
N是执行Xephyr时指定的虚拟屏幕编号。
然后左右两边可以显示不同内容。

scrotwm
http://manpages.ubuntu.com/manpages/one ... twm.1.html

代码: 全选

           M       Meta
           S       Shift
           <Name>  Named key
           M1      Mouse button 1
           M3      Mouse button 3


           M1               Focus window(取得焦点)
           M-M1             Move window(移动窗口)
           M-M3             Resize window(调整大小)
           M-S-M3           Resize window while maintaining it centered(调整窗口大小,同时保持它为中心)

     The default key bindings are described below:

           M-S-<Return>     term(终端)
           M-p              menu(菜单)
           M-S-q            quit(退出)
           M-q              restart scrotwm(重启WM)
           M-<Space>        cycle_layout(切换布局)
           M-S-<Space>      reset_layout(重置布局)
           M-h              master_shrink(主区域缩小)
           M-l              master_grow(主区域放大)
           M-,              master_add(增加主区域)
           M-.              master_del(删除主区域)
           M-S-,            stack_inc(增加栈)
           M-S-.            stack_del(删除栈)
           M-<Return>       swap_main(切换主区域)
           M-j, M-<TAB>     focus_next(切换焦点)
           M-k, M-S-<TAB>   focus_prev(反向切换焦点)
           M-m              focus_main(焦点到主区)
           M-S-j            swap_next(交换区域)
           M-S-k            swap_prev(反向交换)
           M-b              bar_toggle(切换栏)
           M-x              wind_del(关窗口)
           M-S-x            wind_kill(杀死窗口)
           M-<n>            ws_n(???)
           M-S-<n>          mvws_n(???)
           M-<Right>        ws_next(???)
           M-<Left>         ws_prev(???)
           M-S-<Right>      screen_next(下一窗口)
           M-S-<Left>       screen_prev(上一窗口)
           M-s              screenshot_all(全屏截图)
           M-S-s            screenshot_wind(窗口截图)
           M-S-v            version(版本)
           M-t              float_toggle(浮动切换)
           M-S <Delete>     lock(锁定)
           M-S-i            initscr(??)


     Currently the menu, invoked with M-p, depends on dmenu.
这个scrotwm在我这里不响应快捷键,怎么按键都没有反映,修改配置文件也不见效果。而且他确实把面板、桌面之类都布局了。
看来这个WM对环境要求的比较苛刻,默认的配置又少,在我这里是没法用了。


tritium
用python语言,仿照ion3写的平铺窗口管理器。
配置文件:/etc/X11/tritium/,建议复制到~/.tritium/
测试结果:完全不能启动,有错误提示:screen 0 已经有窗口管理器在运行。
其实我已经指定他到screen 6(Xephyr虚拟的)里面去执行了,无效。

又失败了一个。(下面是默认快捷键,作为一个记录吧。)
F1 gives a prompt to search for a man page.(man帮助)
F2 will call your default terminal(终端)
F3 will open command prompt.(运行)
Ctrl-F3 gives a python shell prompt (like the in idle).(python终端)
Shift+F3 will run a command in a terminal.(终端中执行命令)
F4 will open an ssh prompt to ssh to another machine.(运行ssh)
Shift+F9 creates a new workspace.(创建心工作区)
F12 opens a program menu, much like dmenu in dwm or wmii.(菜单)
Mod4 = the “Window Key”, between the Left-Alt (Mod1) and Left-Ctrl(指定mod键,可能是:win、左alt、左ctrl)
Mod4+J to the next workspace, Mod4+K back a workspace.(下一/上一 工作区)
Mod4+Tab changes focus between columns.(切换焦点)
Mod4+L and Mod4+H move back and forth between windows or frames in a column.(切换窗口)
Mod4+F(number) allows one to navigate between workspaces (ie. Mod4+F3 navigates to the third workspace).(切换工作区)
Mod4+W will close a program.(关闭程序)
Mod4+S slits a column horizontally(竖排??)
Mod4+Shift+S splits it vertically.(横排??)
Mod4+(arrow key) will move the split between frames, thus resizing them. (ie. Mod4+(right arrow) will squeeze the column to the right over, and makes the left column larger, etc.).(??不懂)
Mod4+G and Win+; will navigate back and forth between columns, and across workspaces (as opposed to Mod4+Tab, which only changes focus between columns in the same workspace).(还是不懂。Mod4+(arrow key)、Mod4+G and Win+; Mod4+Tab好像是在移动什么。移动什么呢?不懂!)
Mod4-Shift+J moves a window to the frame below, Mod4-Shift+K moves a the frame above. Mod4+Shift+L moves the windows to the frame to the right. Mod4-Shift+H moves it to the left.(也是移动,到左、右、上、下)
Xmonad
这个采用haskell语言开发,配置文件也是这个语言的。安装时依赖包比较大,大约需要400M空间。
http://www.haskell.org/haskellwiki/Xmonad
要先建立下面这个文件,否则xmonad根本不会启动。
~/.xmonad/xmonad.hs添加如下Haskell代码:

[haskell]--
-- xmonad example config file for xmonad-0.9
--
-- A template showing all available configuration hooks,
-- and how to override the defaults in your own xmonad.hs conf file.
--
-- Normally, you'd only override those defaults you care about.
--
-- NOTE: Those updating from earlier xmonad versions, who use
-- EwmhDesktops, safeSpawn, WindowGo, or the simple-status-bar
-- setup functions (dzen, xmobar) probably need to change
-- xmonad.hs, please see the notes below, or the following
-- link for more details:
--
-- http://www.haskell.org/haskellwiki/Xmon ... _since_0.8
--

import XMonad
import Data.Monoid
import System.Exit

import qualified XMonad.StackSet as W
import qualified Data.Map as M

-- The preferred terminal program, which is used in a binding below and by
-- certain contrib modules.
--
myTerminal = "xterm"

-- Whether focus follows the mouse pointer.
myFocusFollowsMouse :: Bool
myFocusFollowsMouse = True

-- Width of the window border in pixels.
--
myBorderWidth = 1

-- modMask lets you specify which modkey you want to use. The default
-- is mod1Mask ("left alt"). You may also consider using mod3Mask
-- ("right alt"), which does not conflict with emacs keybindings. The
-- "windows key" is usually mod4Mask.
--
myModMask = mod4Mask

-- NOTE: from 0.9.1 on numlock mask is set automatically. The numlockMask
-- setting should be removed from configs.
--
-- You can safely remove this even on earlier xmonad versions unless you
-- need to set it to something other than the default mod2Mask, (e.g. OSX).
--
-- The mask for the numlock key. Numlock status is "masked" from the
-- current modifier status, so the keybindings will work with numlock on or
-- off. You may need to change this on some systems.
--
-- You can find the numlock modifier by running "xmodmap" and looking for a
-- modifier with Num_Lock bound to it:
--
-- > $ xmodmap | grep Num
-- > mod2 Num_Lock (0x4d)
--
-- Set numlockMask = 0 if you don't have a numlock key, or want to treat
-- numlock status separately.
--
-- myNumlockMask = mod2Mask -- deprecated in xmonad-0.9.1
------------------------------------------------------------


-- The default number of workspaces (virtual screens) and their names.
-- By default we use numeric strings, but any string may be used as a
-- workspace name. The number of workspaces is determined by the length
-- of this list.
--
-- A tagging example:
--
-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]
--
myWorkspaces = ["1","2","3","4","5","6","7","8","9"]

-- Border colors for unfocused and focused windows, respectively.
--
myNormalBorderColor = "#dddddd"
myFocusedBorderColor = "#ff0000"

------------------------------------------------------------------------
-- Key bindings. Add, modify or remove key bindings here.
--
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $

-- launch a terminal
[ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)

-- launch dmenu
, ((modm, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")

-- launch gmrun
, ((modm .|. shiftMask, xK_p ), spawn "gmrun")

-- close focused window
, ((modm .|. shiftMask, xK_c ), kill)

-- Rotate through the available layout algorithms
, ((modm, xK_space ), sendMessage NextLayout)

-- Reset the layouts on the current workspace to default
, ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)

-- Resize viewed windows to the correct size
, ((modm, xK_n ), refresh)

-- Move focus to the next window
, ((modm, xK_Tab ), windows W.focusDown)

-- Move focus to the next window
, ((modm, xK_j ), windows W.focusDown)

-- Move focus to the previous window
, ((modm, xK_k ), windows W.focusUp )

-- Move focus to the master window
, ((modm, xK_m ), windows W.focusMaster )

-- Swap the focused window and the master window
, ((modm, xK_Return), windows W.swapMaster)

-- Swap the focused window with the next window
, ((modm .|. shiftMask, xK_j ), windows W.swapDown )

-- Swap the focused window with the previous window
, ((modm .|. shiftMask, xK_k ), windows W.swapUp )

-- Shrink the master area
, ((modm, xK_h ), sendMessage Shrink)

-- Expand the master area
, ((modm, xK_l ), sendMessage Expand)

-- Push window back into tiling
, ((modm, xK_t ), withFocused $ windows . W.sink)

-- Increment the number of windows in the master area
, ((modm , xK_comma ), sendMessage (IncMasterN 1))

-- Deincrement the number of windows in the master area
, ((modm , xK_period), sendMessage (IncMasterN (-1)))

-- Toggle the status bar gap
-- Use this binding with avoidStruts from Hooks.ManageDocks.
-- See also the statusBar function from Hooks.DynamicLog.
--
-- , ((modm , xK_b ), sendMessage ToggleStruts)

-- Quit xmonad
, ((modm .|. shiftMask, xK_q ), io (exitWith ExitSuccess))

-- Restart xmonad
, ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart")
]
++

--
-- mod-[1..9], Switch to workspace N
--
-- mod-[1..9], Switch to workspace N
-- mod-shift-[1..9], Move client to workspace N
--
[((m .|. modm, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
++

--
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
--
[((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
| (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]


------------------------------------------------------------------------
-- Mouse bindings: default actions bound to mouse events
--
myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $

-- mod-button1, Set the window to floating mode and move by dragging
[ ((modm, button1), (\w -> focus w >> mouseMoveWindow w
>> windows W.shiftMaster))

-- mod-button2, Raise the window to the top of the stack
, ((modm, button2), (\w -> focus w >> windows W.shiftMaster))

-- mod-button3, Set the window to floating mode and resize by dragging
, ((modm, button3), (\w -> focus w >> mouseResizeWindow w
>> windows W.shiftMaster))

-- you may also bind events to the mouse scroll wheel (button4 and button5)
]

------------------------------------------------------------------------
-- Layouts:

-- You can specify and transform your layouts by modifying these values.
-- If you change layout bindings be sure to use 'mod-shift-space' after
-- restarting (with 'mod-q') to reset your layout state to the new
-- defaults, as xmonad preserves your old layout settings by default.
--
-- * NOTE: XMonad.Hooks.EwmhDesktops users must remove the obsolete
-- ewmhDesktopsLayout modifier from layoutHook. It no longer exists.
-- Instead use the 'ewmh' function from that module to modify your
-- defaultConfig as a whole. (See also logHook, handleEventHook, and
-- startupHook ewmh notes.)
--
-- The available layouts. Note that each layout is separated by |||,
-- which denotes layout choice.
--
myLayout = tiled ||| Mirror tiled ||| Full
where
-- default tiling algorithm partitions the screen into two panes
tiled = Tall nmaster delta ratio

-- The default number of windows in the master pane
nmaster = 1

-- Default proportion of screen occupied by master pane
ratio = 1/2

-- Percent of screen to increment by when resizing panes
delta = 3/100

------------------------------------------------------------------------
-- Window rules:

-- Execute arbitrary actions and WindowSet manipulations when managing
-- a new window. You can use this to, for example, always float a
-- particular program, or have a client always appear on a particular
-- workspace.
--
-- To find the property name associated with a program, use
-- > xprop | grep WM_CLASS
-- and click on the client you're interested in.
--
-- To match on the WM_NAME, you can use 'title' in the same way that
-- 'className' and 'resource' are used below.
--
myManageHook = composeAll
[ className =? "MPlayer" --> doFloat
, className =? "Gimp" --> doFloat
, resource =? "desktop_window" --> doIgnore
, resource =? "kdesktop" --> doIgnore ]

------------------------------------------------------------------------
-- Event handling

-- Defines a custom handler function for X Events. The function should
-- return (All True) if the default handler is to be run afterwards. To
-- combine event hooks use mappend or mconcat from Data.Monoid.
--
-- * NOTE: EwmhDesktops users should use the 'ewmh' function from
-- XMonad.Hooks.EwmhDesktops to modify their defaultConfig as a whole.
-- It will add EWMH event handling to your custom event hooks by
-- combining them with ewmhDesktopsEventHook.
--
myEventHook = mempty

------------------------------------------------------------------------
-- Status bars and logging

-- Perform an arbitrary action on each internal state change or X event.
-- See the 'XMonad.Hooks.DynamicLog' extension for examples.
--
--
-- * NOTE: EwmhDesktops users should use the 'ewmh' function from
-- XMonad.Hooks.EwmhDesktops to modify their defaultConfig as a whole.
-- It will add EWMH logHook actions to your custom log hook by
-- combining it with ewmhDesktopsLogHook.
--
myLogHook = return ()

------------------------------------------------------------------------
-- Startup hook

-- Perform an arbitrary action each time xmonad starts or is restarted
-- with mod-q. Used by, e.g., XMonad.Layout.PerWorkspace to initialize
-- per-workspace layout choices.
--
-- By default, do nothing.
--
-- * NOTE: EwmhDesktops users should use the 'ewmh' function from
-- XMonad.Hooks.EwmhDesktops to modify their defaultConfig as a whole.
-- It will add initialization of EWMH support to your custom startup
-- hook by combining it with ewmhDesktopsStartup.
--
myStartupHook = return ()

------------------------------------------------------------------------
-- Now run xmonad with all the defaults we set up.

-- Run xmonad with the settings you specify. No need to modify this.
--
main = xmonad defaults

-- A structure containing your configuration settings, overriding
-- fields in the default config. Any you don't override, will
-- use the defaults defined in xmonad/XMonad/Config.hs
--
-- No need to modify this.
--
defaults = defaultConfig {
-- simple stuff
terminal = myTerminal,
focusFollowsMouse = myFocusFollowsMouse,
borderWidth = myBorderWidth,
modMask = myModMask,
-- numlockMask deprecated in 0.9.1
-- numlockMask = myNumlockMask,
workspaces = myWorkspaces,
normalBorderColor = myNormalBorderColor,
focusedBorderColor = myFocusedBorderColor,

-- key bindings
keys = myKeys,
mouseBindings = myMouseBindings,

-- hooks, layouts
layoutHook = myLayout,
manageHook = myManageHook,
handleEventHook = myEventHook,
logHook = myLogHook,
startupHook = myStartupHook
}
[/haskell]
注意的是,光有该配置文件还不够,它需要libghc6-xmonad-dev等等。要安装它实际上会一起安装ghc,比较主流的Haskell解释/编译器。重启,登录后配置便会生效。这时~/.xmonad/目录下会多出三个文件:xmonad.hi xmonad-i386-linux xmonad.o

如果确信自己不会再修改配置,可以把ghc等删除,只留下xmonad。这样会节省144MB硬盘空间。另外,一个不可不装的程序是dwm-tools, 有了它后,mod-p会启动dmenu。

发现他基本就是awesome的翻版(或者awesome是xmonad的翻版):键盘控制基本一样,功能差不多,都是一种编程语言作为配置文件,都需要大量修改配置文件来达到自己想要的效果,只是好像awesome发展的快一些,功能完备一些,用的人更多一些。所以我不会选择他,还会继续用awesome。

Bluetile
based on xmonad:
感觉和wmii差不多,不是完全意义上的平铺WM,窗口都有标题,平铺以后也可以再自由移动。对面板、桌面等支持很好。
推荐使用。
配置文件 ~/.bluetilerc , /usr/share/bluetile/
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#49

帖子 ljj_jjl2008 » 2011-08-14 7:39

ratpoison
(他的宣传口号是:老鼠药,和老鼠【鼠标?】说再见吧!)
启动起来以后就是一个黑屏幕,右上角有几个英文闪烁了一下,好像是让按ctrl+t,然后按“?”出帮助,按“.”出菜单。
抓图2.png
这是按ctrl+t再按“?”后出现的帮助。
试着打开几个程序,程序直接全屏了,然后那快捷键可以切换、可以关闭。不过快捷键没有记住,只能每次都调出帮助然后临时记忆,在去执行。

问题是:没有看见什么布局呀,也没有平铺呀?

知道了,原来是需要先(ctrl+t,s 或者 S)就把屏幕分割开了,再(ctrl+t,f)选择分区,再(ctrl+t,!)输入程序名打开程序(或者(ctrl+t,“.”)调用菜单)。
http://www.nongnu.org/ratpoison/
如果想要取消已经分割的小窗口,就要一步步的(ctrl+t,u)来取消
这个可以支持面板和插件,不过比较麻烦:先手动分割:(ctrl+t,s)分割成上下两块,(ctrl+t,r,方向键)把下面的调成小条,(ctrl+t,f)选择下面的小条,切换到外面的终端shell窗口,继续选择lxpanel,就好了。
其他的也可以先分好小块,再选择他,然后启动。

这个WM完全不支持浮动窗口,如果确实需要浮动窗口,需要(ctrl+t,:)然后输入一个tmpwm XXX命令,XX是另外的一个WM名称(比如openbox或者kwin),暂时把wm换成其他wm,就能浮动了。完成后如果想换回来,需要killall XXX杀死新打开的WM,然后就又回到这种布局状态了。

感觉这个WM还不错,上手快,快捷键顺手。
缺点:
1,就是他完全不支持浮动,有个弹出对话框(打开、保存之类的),都是不能移动不能调整大小,特别是文档编辑中的查找和替换,如果不能移动,就别扭了。(听说用他打开GIMP会是很怪异的效果,这个我没有尝试)
2,鼠标点击程序窗口不能获得焦点,必须用快捷键来切换才行。
这个WM追求平铺和完全脱离鼠标有点走极端了。


stumpwm
他是ratpoison的改进增强版。
功能和ratpoison差不多,加上了删除窗格功能,去掉了恢复操作功能。选定的区域加上了虚框,快捷键提示不用消除就能调用新快捷键。
http://www.nongnu.org/stumpwm/index.html
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#50

帖子 ljj_jjl2008 » 2011-08-14 7:40

开始测试“超小”和“老旧”两类WM,这些东西有风险的,特别是“老旧”的。但愿不要把我的系统搞乱!!
windowlab
有一个简单的菜单,配置文件在/etc/X11/windowlab/和~/.windowlab/下面,不能配置字体,标题不能显示汉字
顶部自带一个简陋的状态栏。
他把所有东西都当成窗口处理(桌面、控件、面板、独立托盘等)
结论:已经基本没有使用价值了。

Sapphire
自己带右键菜单,英文的,带一个小的状态栏,中键切换窗口,整体有点像Blackbox。
对桌面和面板支持一般:桌面不能铺满全屏,面板反应迟钝。
窗口标题栏不能显示汉字。
整体感觉一般,不推荐使用。

TinyWM
上次还能正常启动,这次启动不起来了。
上次启动时他把所有东西都当成窗口处理(桌面、控件、面板、独立托盘等)
而且功能太简单,不推荐。

这些东西果然危险,把我的及其弄死机了!!!

pekwm
有右键菜单,配色也很有风格。菜单乱码。需要修改:/usr/share/pekwm/themes/下面各目录中的的文件,将字体设定为

代码: 全选

$FONT = "XFT#wenquanyi bitmap song:size=9#Left"
$FONT_TITLE = "XFT#wenquanyi bitmap song:size=9#Center"
(查找字体的命令:xlsfonts | less)
不支持桌面(桌面在上层,盖住窗口),但对面板、托盘的支持不错。
可以使用。

LWM
打开后一个黑屏幕,鼠标中键点击打开一个终端。没有菜单、图标之类,没有最大化最小化按钮(有关闭按钮)。
窗口标题栏乱码,买有找到配置文件。
对面板、桌面的支持还不错。
太简陋,不推荐使用。

ctwm
界面的颜色很丰富,8个虚拟桌面各有不同颜色,有右键菜单和中键菜单,英文的,字体很粗糙。他把所有东西都当成窗口处理(桌面、控件、面板、独立托盘等)
而且功能太简单,不推荐。
wm2
虽然简单,但还算稳定。
把所有东西都当成窗口处理(桌面、控件、面板、独立托盘等)
可以使用。
9wm、aewm、aewm++、amiwm、olwm、w9wm
这几个千万不要启动,启动了你只会后悔!!很简单很难看!!甚至会死机!!
(测试进行中.....)
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#51

帖子 ljj_jjl2008 » 2011-08-14 7:40

这层记录各个WM配置文件的位置,以及测试中的收获感想。

一、配置文件可能出现的位置:

1,~/.<WM_NAME>/:(私人配置,目录内)
Sawfish、icewm、fluxbox、fvwm、afterstep、WindowMaker、vtwm、i3、xmonad、wmii、ctwm,windowLab,miwm

2,~/.<WM_NAME>rc(私人配置,文件内)
jwm、Oroborus、Bluetile

3,/.config/<WM_NAME>/(私人配置,目录内)
openbox,awesome

4,/etc/X11/<WM_NAME>/:(全局配置,目录内)
Sawfish、icewm、fluxbox、blackbox、fvwm、WindowMaker、afterstep、twm、vtwm、wmii、ctwm,windowLab

5,/usr/share/<WM_NAME>(/themes/ or /styles/):(全局配置/主题风格 或者模板)
Sawfish、icewm、Oroborus、fluxbox、blackbox、fvwm、WindowMaker、afterstep,awesome、Bluetile、pekwm

6,/var/lib/<WM_NAME>(菜单)
Sawfish、flwm

7,/etc/xdg/<WM_NAME>/(全局,目录内)
openbox,awesome

8,没有配置文件,通过修改源码修改配置:
Flwm、evilwm、dwm、tinywm

9,其他位置:
~/GNUstep/ (WindowMaker)
/etc/i3/*(i3全局)
二、字体配置中字体描述的格式:
(xlsfonts | less命令查询可用字体)
以下方式增加对字体编码集的支持

代码: 全选

sudo chmod -R 777 /var/lib/locales/supported.d
cd /var/lib/locales/supported.d/
sudo touch ja
sudo touch ko
sudo touch zh
sudo chmod -R 777 /var/lib/locales/supported.d/
sudo echo "ja_JP.UTF-8 UTF-8" >>ja
.
.
.
sudo echo "zh_TW.Big5 Big5" >>zh
sudo echo "zh_CN.iso10646" >>zh
cd -
sudo dpkg-reconfigure locales
这时xfont字体的全称:-wenquanyi-wenquanyi bitmap song-bold-r-normal--12-120-75-75-p-119-iso10646-1

下面是对字体的不同描述方式:

wenquanyi zenhei-12(jwm、fluxbox、blackbox)
TitleFontNameXft="wenquanyi,wenquanyi bitmap song:size=12"(icewm、)
-*-wenquanyi bitmap song-medium-r-normal-*-12-*-*-*-*-*-iso10646-*(Oroborus、vtwm、i3)
<name>sans</name> <size>9</size>(openbox、)
Style * Font "StringEncoding=UTF-8:xft:文泉驿微米黑:size=11:encoding=iso10646-1"(fvwm)
+ I *FvwmIdent: Font -*-fixed-medium-r-semicondensed-*-13-*(fvwm)
FuncFvwmSetFont-Menu * 'xft:Luxi Serif:pixelsize=14:minspace=true:-adobe-times-medium-r-*-*-14-*-*-*-*-*-*-*'(fvwm)
FuncFvwmSetFont-ModuleWindowList FvwmTaskBar Font \
"-adobe-helvetica-medium-r-*-*-12-*" (fvwm)
xft: wenquanyi bitmap song:size=9(Bluetile)
(fvwm里面对字体的描述方式有很多种,需要仔细一点)
wqy-zenhei.ttc-14(AfterStep,字体需要放到WM认识的目录,参照下面AfterStep部分)
"XFT#wenquanyi bitmap song:size=9#Left"(pekwm)
三、详细情况:
1,适合“搭积木”的:
Sawfish(没有乱码,没有修改配置)
字体:(中键菜单里面定制)
菜单:Debian menu 控制,中文,存到:/var/lib/sawfish/debian-menu.jl
快捷键:(略)

Flwm
字体:(没有配置文件,修改源码重编译改变配置)
菜单:Debian menu 控制,英文,var/lib/flwm/wmx (全局) ~/.wmx(本地),目录树+文件,不能显示中文。
快捷键:
ALT+ESC 弹出预选当前窗口的菜单
Alt + Tab 键与预选的下一个窗口弹出菜单
ALT + Shift + Tab键弹出菜单,与以前的预选窗口
Ctrl + Tab键切换到下一个桌面。
CTRL + SHIFT + TAB切换到以前的桌面。
CTRL+功能键 切换到桌面N。
Alt +向上 提升当前窗口。
Alt +向下 降低当前窗口。
Alt + Delete 键关闭当前窗口(单击关闭框相同)。
Alt +回车 “Iconizes”(隐藏)当前窗口。
metacity:(依靠gnome来配置,略)

Jwm:菜单、快捷键、字体都在:~/.jwmrc里面设置。(如果没有就从/usr/share/doc/jwm/examples/example.jwmrc.gz创建)

evilwm
字体:(没有配置文件,修改源码重编译改变配置)
菜单:没有菜单
快捷键:
<CTRL>+<ALT>
+<ENTER> Open new terminal (xterm)
+<h> move window left
+<j> move window down
+<k> move window up
+<l> move window right
+<y> move window to top left corner
+<u> move window to top right corner
+<b> move window to bottom right corner
+<n> move window to bottom left corner
+<x> (toggle) maximise window
+<=> (toggle) maximise window vertically
+<INSERT> lower current window
+<ESC> close window
+<i> window information
+<f> fix or unfix current window (take it along to another virtual desktop)
+<1> to +<8> switch to virtual desktop 1 to 8
+<LEFT> change to the previous virtual desktop
+<RIGHT> change to next virtual desktop
+<BACKSPACE> end session
<ALT>+<TAB> cycle active window
a) fix it: <CTRL>+<ALT>+<f>
b) switch desktop: <CTRL>+<ALT><n> where n = desktop number from 1 to 8
c) unfit it: <CTRL>+<ALT>+<f>
<Alt>
+Button 1 move window
+Button 2 resize window
+Button 3 lower window
Icewm
字体: /usr/share/icewm/preferences(全局) ~/.icewm/preferences(私有)
菜单:/etc/X11/icewm/menu(全局) /usr/share/icewm/menu(模板) ~/.icewm/menu(私有)

Oroborus
/usr/share/oroborus/defaults(全局)~/.oroborusrc(私有)
菜单:没有菜单

kde_window_manager
(通过kde来调整和控制)

2,box类:
fluxbox
/usr/share/fluxbox/(模板?) /etc/X11/fluxbox/(全局) ~/.fluxbox/(私有)
字体:overlay文件里面
菜单:有多个文件,以非root执行:fluxbox-generate_menu -is -ds来重新生成。
快捷键:~/.fluxbox/keys内。

blackbox
字体:修改样式文件/usr/share/blackbox/styles/(Flux),有多个。

Openbox
字体:/etc/xdg/openbox中拷贝到~/.config/openbox/修改rc.xml
菜单:menu.xml
快捷键:rc.xml

Sapphire:
窗口标题栏不能显示汉字。其他问题也不少整体感觉一般,不推荐使用。配置文件位置(略)

3、'Wmaker类':
fvwm
字体:/usr/share/fvwm/* 和 /etc/X11/fvwm/* 和~/.fvwm/.fvwm2rc
菜单:有很多文件可以成菜单,需要区分对待。
快捷键:也在这些文件里面。

Wmaker
wmaker乱码解决办法:
~/GNUstep/Defaults/WMGLOBAL文件,是修改windowmaker程序字體的地方,沒有這個文件的話自己建一個。

代码: 全选

{
MultiByteText = YES;
   SystemFont = "WenQuanYi Bitmap Song:slant=0:weight=80:width=100:pixelsize=12";
   BoldSystemFont = "WenQuanYi Bitmap Song:slant=0:weight=80:width=100:pixelsize=12:bold";   
   DefaultFontSize = 12;
   AntialiasedText = Yes;
}
其他字体用wmakeconf来调整。
菜单:使用wmakeconf(会破坏掉原有菜单,菜单一项,选最右边那个按钮,然后选一个中文(zh_CN)菜单进去。)
快捷键:略

AfterStep
AfterStep显示中文方法:(我的首创,不是google来的,是我凭感觉测试出来的)
1,先运行一下AfterStep,会在~目录生成一个~/.afterstep目录,
2,拷贝一个中文字体到~/.afterstep/desktop/fonts目录下
3,修改~/.afterstep目录下的文件,以及look等子目录里面的文件,有字体名字的地方,都改成拷贝的这个字体。
4,afterstep里面look选择成Mine。
汉化完成。不过效果不好,菜单里面汉字和英文风格不搭调,很别扭。

e17(这个基本都是图形界面的配置,不用去改配置文件)

4、'虚拟视窗类':
olvwm(这个WM很老了,也不能于桌面和面板搭配,功能方面也没有太多亮点,所以:略过)

VTWM
/etc/X11/vtwm/ 和 ~/.vtwm/。

5、'平铺类':
ratpoison
StumpWM
以上两个是纯平铺,没有菜单,没有标题栏,所以不用汉化,配置文件略。
快捷键:ctrl+t,“?”,出现提示。

awesome
/.config/awesome/*,/usr/share/awesome/*,/etc/xdg/awesome/*
viewtopic.php?f=24&t=340080

dwm
没有配置文件,修改源码重新编译。
中文支持:不支持,影响不大。
快捷键:(Mod1缺省是 Alt)
Mod1+F Mod1+M Mod1+T 浮动模式/单页模式/平铺模式
Mod1+P 启动Dmenu
Shift+Mod1+x 将当前的活动窗口移到第X号标签页上去。
Shift+Mod1+C 关闭当前的活动窗口:
Shift+Mod1+Q 退出dwm(登出):

i3
字体:~/.i3/config /etc/i3/config
菜单:dmenu,没有下拉菜单。
快捷键:
Mod1 指的是 "Alt" 键
Mod1+Enter 打开终端
Mod1+v 运行 dmenu (输入程序名快速定位程序)
方向键: j(left), k(down), l(up) and ;(right)
Mod1+<directional key> 在窗口之间移动焦点
Mod1+Shift+<directional key> 移动窗口
Mod1+<number> 打开相应的工作区
Mod1+Shift+<number> 移动一个窗口到选定的工作区
Mod1+h 设置一个布局模式
Mod1+e 回默认设置模式
Mod1+f 切换当前窗口全屏模式
Mod1+Shift+Space 切换当前窗口浮动模式
Mod1+Shift+q 关闭窗口
Mod1+Shift+r 重启I3 (会失去选定的布局)
Mod1+Shift+e 退出I3
Xmonad
~/.xmonad/xmonad.hs,没有的话不能启动。没有菜单,其他都在这里面设置。快捷键:略

wmii
字体、快捷键:/etc/X11/wmii/*,~/.wmii/*,不过修改了也没用,有时反而把英文也变成乱码。所以这样吧。
菜单:dmenu,没有其他菜单,不用设置。
快捷键: M-a(win+a)---- selecting 'showkeys',会出现快捷键表。

Bluetile
字体、菜单、快捷键:~/.bluetilerc , /usr/share/bluetile/
快捷键:屏幕左边有一个窗口布局的面板,开机有快捷键提示。

6、'微型WM' :(配置文件位置)
ctwm(/etc/X11/ctwm/* 和 ~/.ctwm/*)
LWM(没有找到)
MIWM(~/.miwm/miwm.config ~/.miwm/miwm.usermenu) (实际只有config,还是个空文件)
pekwm(/usr/share/pekwm/themes/)
TinyWM(没有,修改源码重编译)
WindowLab(/etc/X11/windowLab/* 和 ~/.windowLab/*)
wm2(没有找到)
7、无使用价值和无法使用的:(配置文件全部:略)
9wm
aewm
aewm++
olwm
w9wm
Scrotwm
tritium
Parti
amiwm

Tint2(独立面板)~/.config/tint2/tint2rc
LXPanel(面板)
rox-filer(桌面)
pcmanfm(桌面)
conky(系统监控)
DeskMenu(独立菜单)
gdesklets(桌面部件)

(测试进行中......)
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#52

帖子 ljj_jjl2008 » 2011-08-14 7:41

这一层是重点,会写下可供使用组合和建议。
目前有:
一,openbox+trayer+unclutter+apwal+parcellite+kdocker+gpe-clock
kmix(可选)
配置重点是:
(1),自动启动parcellite(定时隐藏鼠标光表)+trayer(独立托盘)+parcellite(全局剪切板)+gpe-clock(托盘时钟)
(2),键盘绑定kdocker(缩小程序到托盘)
(3),鼠标绑定apwal(图形化启动菜单),鼠标右键双击绑定kdocker(缩小程序到托盘)
viewtopic.php?f=77&t=338764&p=2426590#p2426590

二,awesome配置和独立使用
viewtopic.php?f=77&t=338764&p=2429159#p2429159

三、icewm/jwm+rox-filer+parcellite
轻量组合,简单高速。

四、flwm/Sawfish/fluxbox/blackbox/Openbox/pekwm+rox-filer+parcellite+(trayer+gpe-clock)/tint2
利用他们自己的菜单(和程序切换功能),补充桌面和独立托盘。
也可以用tint2来补足托盘时钟功能,不建议用带菜单的lxpanel。

五、evilwm/Oroborus/metacity/kwin+lxpanel+rox-filer+parcellite
窗口管理器只是用来管理窗口,桌面、面板、菜单另外提供。

六、wmii/Bluetile/dwm/ratpoison/stumpwm+lxpanel+parcellite
给老牌平铺WM加上菜单和托盘,借用他的“平铺能力”管理窗口,同时提供托盘支持和加强对鼠标的支持。
其中ratpoison和stumpwm需要手工布局,给lxpanel分配好合适的位置。

七、fvwm/Wmaker/AfterStep/e17精心配置,独立使用
这几个WM需要在配置上面多下功夫,才能出效果。所以就单独配置单独使用吧。

对于每种WM,我只写出了配置文件的位置,和如何现实中文。请自行查找以前楼层的相关帖子。
(测试进行中.....待续)
头像
liu滔
帖子: 7212
注册时间: 2010-10-09 23:01

Re: 新立得里面过滤“window manager”找到的有趣的东西

#53

帖子 liu滔 » 2011-08-14 10:55

楼主占那么多层楼想干嘛,留待日后发帖么? :em06
jtshs256
帖子: 22323
注册时间: 2010-07-19 21:41
系统: OS X

Re: 新立得里面过滤“window manager”找到的有趣的东西

#54

帖子 jtshs256 » 2011-08-14 11:00

幸亏南瓜不在,否则……想连占,哼哼…… :em04
躺平
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#55

帖子 ljj_jjl2008 » 2011-08-17 10:05

今天有重大成果呀,实现了随机启动和搭配WM,看26楼!!
头像
qy117121
论坛版主
帖子: 50528
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

Re: 新立得里面过滤“window manager”找到的有趣的东西

#56

帖子 qy117121 » 2011-08-17 10:06

拉jj 童鞋又更新了
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

Ubuntu 20.04 快速设置指南,请配合浏浏览器自动翻译使用

邮箱 chuan@ubuntu.org.cn
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 新立得里面过滤“window manager”找到的有趣的东西

#57

帖子 eexpress » 2011-08-17 10:52

ljj_jjl2008, 加油。
咋头像都变白板了?太辛苦了。
● 鸣学
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#58

帖子 ljj_jjl2008 » 2011-08-17 11:32

eexpress 写了:ljj_jjl2008, 加油。
咋头像都变白板了?太辛苦了。
:em21 :em21 :em21 :em21
得到神的鼓励了!太感动了!
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#59

帖子 ljj_jjl2008 » 2011-08-17 13:38

如何实现开机随机选取WM启动:
1,创建文件 /usr/bin/auto_sel_wm,加上可执行权限:
[bash]
#!/bin/bash

SWM_LIST=( 'sawfish' 'flwm' 'metacity' 'jwm' 'evilwm' 'icewm' 'oroborus' 'kwin' 'fluxbox' 'blackbox' 'openbox' 'fvwm' 'wmaker' 'afterstep' 'enlightenment_start' 'ratpoison' 'stumpwm' 'awesome' 'dwm' 'i3' 'xmonad' 'wmii' 'bluetile' 'pekwm' 'wm2')
CMD1=' '
CMD2='无'
CMD2_2=' '
CMD3='无'
CMD4='无'
CMD4_2=' '
rand=40
top=25
while [ "$rand" -ge $top ];
do
rand=$RANDOM
done
CMD1="${SWM_LIST[$rand]}"
if [ $CMD1 != 'awesome' ] && [ $CMD1 != 'enlightenment_start' ] ;then
if [ $CMD1 != 'icewm' ] && [ $CMD1 != 'jwm' ] ; then
if [ $CMD1 == 'evilwm' ] || [ $CMD1 == 'oroborus' ] || [ $CMD1 == 'metacity' ] || [ $CMD1 == 'kwin' ] ;then
CMD2='lxpanel'
else
rand=200
top=99
while [ "$rand" -ge $top ]; do
rand=$RANDOM
done
if [ "$rand" -ge 49 ]; then
CMD2='lxpanel'
else
CMD2='trayer'
CMD2_2=' --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request'
CMD3='gpe-clock'
fi
fi
fi
if [ $CMD1 != 'wmii' ] && [ $CMD1 != 'bluetile' ] && [ $CMD1 != 'dwm' ] && [ $CMD1 != 'ratpoison' ] && [ $CMD1 != 'stumpwm' ] && [ $CMD1 != 'pekwm' ] && [ $CMD1 != 'xmonad' ] && [ $CMD1 != 'fvwm' ] && [ $CMD1 != 'afterstep' ]; then
rand=200
top=99
while [ "$rand" -ge $top ]; do
rand=$RANDOM
done
if [ "$rand" -ge 49 ]; then
CMD4='rox-filer'
CMD4_2=' -p default'
else
CMD4='pcmanfm'
CMD4_2=' --desktop'
fi
fi
fi
if [ $CMD1 == 'enlightenment_start' ]; then
CMD2='trayer'
CMD2_2=' --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request'
CMD3='gpe-clock'
fi
sleep 3
if [ $CMD4 != '无' ]; then
$CMD4 $CMD4_2 &
fi
if [ $CMD2 != '无' ]; then
$CMD2 $CMD2_2 &
fi
if [ $CMD3 != '无' ]; then
$CMD3 &
fi
fcitx &
parcellite &
wine c:/ipmsg/ipmsg.exe &
cat /dev/null > ~/kill_auto_wm
chmod 777 ~/kill_auto_wm
if [ $CMD4 != '无' ]; then
echo killall $CMD4 >> ~/kill_auto_wm
fi
if [ $CMD3 != '无' ]; then
echo killall $CMD3 >> ~/kill_auto_wm
fi
if [ $CMD2 != '无' ]; then
echo killall $CMD2 >> ~/kill_auto_wm
fi
echo killall fcitx >> ~/kill_auto_wm
echo killall parcellite >> ~/kill_auto_wm
echo killall ipmsg.exe >> ~/kill_auto_wm
echo killall $CMD1 >> ~/kill_auto_wm
if [ $CMD1 == 'i3' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Mod1 指的是 "Alt" 键' >> ~/kill_auto_wm
echo \# 'Mod1 Enter 打开终端' >> ~/kill_auto_wm
echo \# 'Mod1 v 运行 dmenu (输入程序名快速定位程序)' >> ~/kill_auto_wm
echo \# '方向键: j(left), k(down), l(up) and ;(right)' >> ~/kill_auto_wm
echo \# 'Mod1+<directional key> 在窗口之间移动焦点' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+<directional key> 移动窗口' >> ~/kill_auto_wm
echo \# 'Mod1+<number> 打开相应的工作区' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+<number> 移动一个窗口到选定的工作区' >> ~/kill_auto_wm
echo \# 'Mod1+h 设置一个布局模式' >> ~/kill_auto_wm
echo \# 'Mod1+e 回默认设置模式' >> ~/kill_auto_wm
echo \# 'Mod1+f 切换当前窗口全屏模式' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+Space 切换当前窗口浮动模式' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+q 关闭窗口' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+r 重启I3 (会失去选定的布局)' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+e 退出I3' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'dwm' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Mod1 指的是 "Alt" 键' >> ~/kill_auto_wm
echo \# 'Mod1 + P 运行 dmenu (输入程序名快速定位程序)' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+<number> 移动一个窗口到选定的工作区' >> ~/kill_auto_wm
echo \# 'Mod1 + T 回默认设置模式' >> ~/kill_auto_wm
echo \# 'Mod1 + M 切换当前窗口全屏模式' >> ~/kill_auto_wm
echo \# 'Mod1 + F 切换当前窗口浮动模式' >> ~/kill_auto_wm
echo \# 'Shift + Mod1 + C 关闭窗口' >> ~/kill_auto_wm
echo \# 'Shift + Mod1 + Q 退出' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'evilwm' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Ctrl+Alt作为主键' >> ~/kill_auto_wm
echo \# 'Return - 打开终端' >> ~/kill_auto_wm
echo \# 'Escape – (关程序)' >> ~/kill_auto_wm
echo \# 'Insert – (降低窗口)' >> ~/kill_auto_wm
echo \# 'H,J,K,L – left, down, up, right (移动窗口)' >> ~/kill_auto_wm
echo \# 'Y,U,B,N – top-left, top-right, bottom-left, bottom-right (移动到边)' >> ~/kill_auto_wm
echo \# '= – (横向放大)' >> ~/kill_auto_wm
echo \# 'X – (全屏)' >> ~/kill_auto_wm
echo \# ' Alt 单独主键' >> ~/kill_auto_wm
echo \# '鼠标左 – (移动窗口)' >> ~/kill_auto_wm
echo \# '鼠标中 – (缩放)' >> ~/kill_auto_wm
echo \# '鼠标右 – (降低)' >> ~/kill_auto_wm
echo \# '1-8 – (切换桌面)' >> ~/kill_auto_wm
echo \# 'F – Fix / unfix 窗口' >> ~/kill_auto_wm
echo \# '移动窗口到其他桌面:fix , 换桌面, unfix ' >> ~/kill_auto_wm
echo \# 'Alt+Tab 轮转窗口' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'ratpoison' ] || [ $CMD1 == 'stumpwm' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Ctrl+t,? 看提示' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'awesome' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + c 关掉当前窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + j 切换到下一个窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + k 切换到前一个窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + h 把主区域(master width)的宽度增大5%' >> ~/kill_auto_wm
echo \# 'Mod4 + l 把主区域(master width)的宽度减少5%' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + space 切换当前窗口是否为浮动的' >> ~/kill_auto_wm
echo \# 'Mod4 + F1 运行命令' >> ~/kill_auto_wm
echo \# 'Mod4 + Return 打开一个终端' >> ~/kill_auto_wm
echo \# 'Mod4 + m 最大化/还原当前窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + f 全屏/恢复当前窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + Left 查看前一个tag' >> ~/kill_auto_wm
echo \# 'Mod4 + Right 查看后一个tag' >> ~/kill_auto_wm
echo \# 'Mod4 + 1-9 切换到tag 1-9' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + j 切换到下一个屏幕' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + k 切换到前一个屏幕' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + j 当前窗口和前一个窗口互换位置' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + k 当前窗口和后一个窗口互换位置' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + h 增加主区域窗口的数量' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + l 减少主区域窗口的数量' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + h 增加非主区域窗口的数量' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + l 减少非主区域窗口的数量' >> ~/kill_auto_wm
echo \# 'Mod4 + space 把当前tag更换为下一种布局' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + space 把当前tag更换为前一种布局' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + i 显示当前窗口的class和instance。这在写脚本的时候尤其有用' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + r 重绘当前窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + r 重启awesome' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + q 退出awesome' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'xmonad' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Mod4 + p 打开 dmenu' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + c 关掉当前窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + j 切换到下一个窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + k 切换到前一个窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + h 把主区域(master width)的宽度增大5%' >> ~/kill_auto_wm
echo \# 'Mod4 + l 把主区域(master width)的宽度减少5%' >> ~/kill_auto_wm
echo \# 'Mod4 + Return 切换主区' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + Return 打开终端' >> ~/kill_auto_wm
echo \# 'Mod4 + 1-9 切换到tag 1-9' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + j 当前窗口和前一个窗口互换位置' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + k 当前窗口和后一个窗口互换位置' >> ~/kill_auto_wm
echo \# 'Mod4 + space 把当前tag更换为下一种布局' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + space 把当前tag更换为前一种布局' >> ~/kill_auto_wm
echo \# 'Mod4 + q 重启xmonad' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + q 退出xmonad' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'wmii' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'alt-p 进入程序启动选单' >> ~/kill_auto_wm
echo \# 'alt-j 或 alt-k 在程序之间进行切换' >> ~/kill_auto_wm
echo \# 'alt-shift-l 窗口并列显示' >> ~/kill_auto_wm
echo \# 'alt-d 窗口并排显示(上下窗口)' >> ~/kill_auto_wm
echo \# 'alt-ctrl-space 设定/取消窗口浮出' >> ~/kill_auto_wm
echo \# 'alt-shift-NUMBER(例如:alt-shift-2) 开一个新tab,获得焦点的窗口自动进入新tab区' >> ~/kill_auto_wm
echo \# 'alt-shift-c 关闭一个窗口' >> ~/kill_auto_wm
echo \# 'alt-a,然後选择quit 退出wmii' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'icewm' ]; then
icewmtray &
fi
exec $CMD1

[/bash]
注意:最后一句不能有 & 符号
2,给kdm或者gdm等加上sessions:
kdm是:文件 /usr/share/kde4/apps/kdm/sessions/auto_sel_wm.desktop
GDM在哪里我不知道,自己找一下吧。

代码: 全选

[Desktop Entry]
Type=XSession
Exec=/usr/bin/auto_sel_wm
TryExec=auto_sel_wm
Name=auto_sel_wm
Comment=auto select window manager
X-Ubuntu-Gettext-Domain=desktop_kde-workspace
3,选择auto_sel_wm登录。
祝你好运,说不定会登录到哪个window manager里面呢。注销一次变一次呀!

4,担心有的WM没有注销命令,我在启动的同时,在home目录生成了一个~/kill_auto_wm,调用他可以杀死WM进程,相当于注销。同时有依赖键盘的WM,我也把快捷键写到这里面了。

发现一个BUG:evilwm不能被kill掉,所以如果随机到evilwm,用那个“~/kill_auto_wm”不能实现注销功能,知会让X界面死掉。
解决办法:ctrl+alt+f1,登陆,然后sudo killall kdm,就能重新登陆图形界面了。
又发现:kdm登陆下,kwin也kill不死,即使到tty用sudo killall杀死了,也不会自动注销重新进登陆窗口。---2011.08.18

解决方法:
1,文件 ~/.bashrc 里面加上一行,把“无敌三键”启用起来,再碰到杀不死的就直接ctrl-alt-backspace。

代码: 全选

setxkbmap -option terminate:ctrl_alt_bksp
2,论坛大神提供一个命令:

代码: 全选

sudo pkill -9 X
-----2011.08.18
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 新立得里面过滤“window manager”找到的有趣的东西

#60

帖子 ljj_jjl2008 » 2011-08-19 15:21

(62、63楼有效果图)
重大改动,正在测试中:安装了kubuntu-desktop、kubuntu-netbook、unity-2d,然后把他们随机调用起来,与随机到的WM配合。
现在有7种桌面可供随机:rox-filer ,pcmanfm ,unity-2d ,plasma-desktop ,plasma-netbook ,nautilus,xfdesktop
有4种面板tint2,gnome-panel,lxpanel,trayer。另外kubuntu-desktop、kubuntu-netbook、unity-2d自带面板。其余桌面随机从这4种面板中进行搭配。
窗口管理器:sawfish,flwm,metacity,jwm,evilwm,icewm,oroborus,kwin,fluxbox,blackbox,openbox,fvwm,wmaker, afterstep,enlightenment_start,ratpoison,stumpwm,awesome,dwm,i3,xmonad,wmii,bluetile,pekwm 24种
可能随机启动的完整的启动环境unity-2d,startkde 2种
[bash]
#!/bin/bash

SWM_LIST=( 'sawfish' 'flwm' 'metacity' 'jwm' 'evilwm' 'icewm' 'oroborus' 'kwin' 'fluxbox' 'blackbox' 'openbox' 'fvwm' 'wmaker' 'afterstep' 'enlightenment_start' 'ratpoison' 'stumpwm' 'awesome' 'dwm' 'i3' 'xmonad' 'wmii' 'bluetile' 'pekwm' 'unity' 'startkde' ) #26个,最后两个启动起完整的unity和kde4,不进行搭配。
CMD1=' ' #WM
CMD2='无' #面板/托盘
CMD2_2=' ' #面板/托盘 参数
CMD3='无' #时钟
CMD4='无' #桌面
CMD4_2=' ' #桌面参数
CMD5='无' #其他
CMD6='无' #其他2
rand=100
top=26 #与上面WM列表对应
while [ "$rand" -ge $top ];
do
rand=$RANDOM
done
CMD1="${SWM_LIST[$rand]}"

if [ $CMD1 != 'awesome' ] && [ $CMD1 != 'enlightenment_start' ] && [ $CMD1 != 'ratpoison' ] && [ $CMD1 != 'stumpwm' ] && [ $CMD1 != 'pekwm' ] && [ $CMD1 != 'xmonad' ] && [ $CMD1 != 'fvwm' ] && [ $CMD1 != 'afterstep' ] && [ $CMD1 != 'wmaker' ] && [ $CMD1 != 'icewm' ] && [ $CMD1 != 'jwm' ] && [ $CMD1 != 'unity' ] && [ $CMD1 != 'startkde' ] && [ $CMD1 != 'wmii' ] && [ $CMD1 != 'i3' ] && [ $CMD1 != 'bluetile' ] && [ $CMD1 != 'dwm' ] ; then #这些不能参与桌面(或/和 面板)系统的随机
rand=200
top=100 #随机0-99的数
while [ "$rand" -ge $top ]; do
rand=$RANDOM
done
if [ "$rand" -ge 40 ] && [ "$rand" -lt 50 ] && [ $CMD1 == 'flwm' ]; then #flwm 配合 unity-2d 效果不好,所以+10跳过这个数据段
rand=$[ $rand + 10 ]
fi
if [ "$rand" -ge 50 ]; then #>=50(50%机率),取rox-filer/pcmanfm/nautilus + lxpanel/(trayer+gpe-clock)/gnome-panel 的搭配
if [ $CMD1 == 'evilwm' ] || [ $CMD1 == 'oroborus' ] || [ $CMD1 == 'metacity' ] || [ $CMD1 == 'kwin' ] ;then #这几个只使用lxpanel/gnome-panel
rand2=200 #随机lxpanel/(trayer+gpe-clock),各50%机率
top2=100
while [ "$rand2" -ge $top2 ]; do
rand2=$RANDOM
done
if [ "$rand2" -ge 50 ]; then
CMD2='lxpanel'
else
CMD2='gnome-panel'
CMD6='gnome-settings-daemon'

fi
else
rand2=200 #随机gnome-panel/lxpanel/(trayer+gpe-clock),机率相等
top2=150
while [ "$rand2" -ge $top2 ]; do
rand2=$RANDOM
done
if [ "$rand2" -ge 100 ]; then
CMD2='lxpanel'
fi
if [ "$rand2" -ge 50 ] && [ "$rand2" -lt 100 ] ; then
CMD2='gnome-panel'
CMD6='gnome-settings-daemon'
fi
if [ "$rand2" -lt 50 ]; then
CMD2='trayer'
CMD2_2=' --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request'
CMD3='gpe-clock'
fi
fi
if [ $CMD2 != 'trayer' ]; then
rand2=300 #随机rox-filer/pcmanfm/nautilus/xfdesktop,机率相等
top2=200
while [ "$rand2" -ge $top2 ]; do
rand2=$RANDOM
done
if [ "$rand2" -ge 150 ]; then
CMD4='xfdesktop'
CMD4_2=' '
fi
if [ "$rand2" -ge 100 ] && [ "$rand2" -lt 150 ]; then
CMD4='rox-filer'
CMD4_2=' -p default'
fi
if [ "$rand2" -ge 50 ] && [ "$rand2" -lt 100 ]; then
CMD4='pcmanfm'
CMD4_2=' --desktop'
fi
if [ "$rand2" -lt 50 ]; then
CMD4='nautilus'
CMD4_2=' -n'
CMD6='gnome-settings-daemon'
fi
else
rand2=200 #随机rox-filer/pcmanfm,机率相等(trayer+nautilus有可能不能调出菜单来,不能这么组合)
top2=150
while [ "$rand2" -ge $top2 ]; do
rand2=$RANDOM
done
if [ "$rand2" -ge 100 ]; then
CMD4='xfdesktop'
CMD4_2=' '
fi
if [ "$rand2" -ge 50 ] && [ "$rand2" -lt 100 ]; then
CMD4='rox-filer'
CMD4_2=' -p default'
fi
if [ "$rand2" -lt 50 ]; then
CMD4='pcmanfm'
CMD4_2=' --desktop'
fi
fi
fi # >=50
if [ "$rand" -ge 40 ] && [ "$rand" -lt 50 ]; then #40-49(10%机率),调用unity-2d
CMD4='nautilus'
CMD4_2=' -n'
CMD2='unity-2d-launcher'
CMD2_2=' '
CMD3='unity-2d-panel'
CMD5='unity-2d-places'
CMD6='gnome-settings-daemon'
fi
if [ "$rand" -ge 20 ] && [ "$rand" -lt 40 ]; then #20-39(20%机率),调用plasma-netbook
CMD4='无'
CMD4_2=' '
CMD2='plasma-netbook '
CMD2_2=' '
CMD3='无'
CMD5='无'
fi
if [ "$rand" -lt 20 ]; then #<20(20%机率),调用plasma-desktop
CMD4='无'
CMD4_2=' '
CMD2='plasma-desktop '
CMD2_2=' '
CMD3='无'
CMD5='无'
fi
else #处理不能使用桌面(或者面板)的WM
if [ $CMD1 == 'icewm' ]; then
rand2=200 #随机rox-filer/pcmanfm/xfdesktop/nautilus/unity-2d/plasma-netbook/plasma-desktop,等,unity-2d几率稍小,其他相等
top2=130
while [ "$rand2" -ge $top2 ]; do
rand2=$RANDOM
done
if [ "$rand2" -ge 110 ]; then #20/130,xfdesktop
CMD4='xfdesktop'
CMD4_2=' '
CMD5='icewmtray'
fi
if [ "$rand2" -ge 90 ] && [ "$rand2" -lt 110 ]; then #20/130,rox-filer
CMD4='rox-filer'
CMD4_2=' -p default'
CMD5='icewmtray'
fi
if [ "$rand2" -ge 70 ] && [ "$rand2" -lt 90 ]; then #20/130,调用pcmanfm
CMD4='pcmanfm'
CMD4_2=' --desktop'
CMD5='icewmtray'
fi
if [ "$rand2" -ge 50 ] && [ "$rand2" -lt 70 ]; then #20/130,nautilus
CMD4='nautilus'
CMD4_2=' -n'
CMD5='icewmtray'
CMD6='gnome-settings-daemon'
fi
if [ "$rand2" -ge 40 ] && [ "$rand2" -lt 50 ]; then #10/130,调用unity-2d
CMD4='nautilus'
CMD4_2=' -n'
CMD2='unity-2d-launcher'
CMD2_2=' '
CMD3='unity-2d-panel'
CMD5='unity-2d-places'
CMD6='gnome-settings-daemon'
fi
if [ "$rand2" -ge 20 ] && [ "$rand2" -lt 40 ]; then #20/130机率,调用plasma-netbook
CMD2='plasma-netbook '
CMD2_2=' '
CMD3='无'
CMD4='无'
CMD4_2=' '
CMD5='无'
fi
if [ "$rand2" -lt 20 ]; then #20/130,调用plasma-desktop
CMD2='plasma-desktop '
CMD2_2=' '
CMD3='无'
CMD4='无'
CMD4_2=' '
CMD5='无'
fi
fi
if [ $CMD1 == 'jwm' ] ; then
rand2=200
top2=120
while [ "$rand2" -ge $top2 ]; do
rand2=$RANDOM
done
if [ "$rand2" -ge 100 ]; then #20/120,xfdesktop
CMD4='xfdesktop'
CMD4_2=' '
CMD5='无'
fi
if [ "$rand2" -ge 80 ] && [ "$rand2" -lt 100 ]; then
CMD4='rox-filer'
CMD4_2=' -p default'
CMD5='无'
fi
if [ "$rand2" -ge 60 ] && [ "$rand2" -lt 80 ]; then #调用pcmanfm
CMD4='pcmanfm'
CMD4_2=' --desktop'
CMD5='无'
fi
if [ "$rand2" -ge 40 ] && [ "$rand2" -lt 60 ]; then #nautilus
CMD4='nautilus'
CMD4_2=' -n'
CMD6='gnome-settings-daemon'
fi
if [ "$rand2" -ge 20 ] && [ "$rand2" -lt 40 ]; then #调用plasma-netbook
CMD2='plasma-netbook '
CMD2_2=' '
CMD3='无'
CMD4='无'
CMD4_2=' '
CMD5='无'
fi
if [ "$rand2" -lt 20 ]; then #调用plasma-desktop
CMD2='plasma-desktop '
CMD2_2=' '
CMD3='无'
CMD4='无'
CMD4_2=' '
CMD5='无'
fi
fi
if [ $CMD1 == 'enlightenment_start' ] || [ $CMD1 == 'fvwm' ] || [ $CMD1 == 'afterstep' ] || [ $CMD1 == 'wmaker' ]; then #这4个简单加个独立托盘,没有启动gpe-clock
CMD2='trayer'
CMD2_2=' --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request'
CMD3='无'
CMD4='无'
CMD4_2=' '
CMD5='无'
fi
if [ $CMD1 == 'ratpoison' ] || [ $CMD1 == 'stumpwm' ] || [ $CMD1 == 'xmonad' ] || [ $CMD1 == 'wmii' ] || [ $CMD1 == 'pekwm' ] || [ $CMD1 == 'i3' ] || [ $CMD1 == 'dwm' ]; then #平铺的,不能使用桌面,pekwm也不能使用桌面
rand2=200 #随机lxpanel/(trayer+gpe-clock)/gnome-panel,机率相等
top2=150
while [ "$rand2" -ge $top2 ]; do
rand2=$RANDOM
done
if [ "$rand2" -ge 100 ]; then
CMD2='lxpanel'
CMD3='无'
CMD4='无'
CMD4_2=' '
CMD5='无'
fi
if [ "$rand2" -ge 50 ] && [ "$rand2" -lt 100 ] ; then
CMD2='gnome-panel'
CMD6='gnome-settings-daemon'
fi
if [ "$rand2" -lt 50 ] ; then
CMD2='trayer'
CMD2_2=' --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request'
CMD3='gpe-clock'
CMD4='无'
CMD4_2=' '
CMD5='无'
fi
fi
if [ $CMD1 == 'bluetile' ]; then
rand2=200 #随机lxpanel/gnome-panel,机率相等, 这个需要菜单。
top2=100
while [ "$rand2" -ge $top2 ]; do
rand2=$RANDOM
done
if [ "$rand2" -ge 50 ]; then
CMD2='lxpanel'
CMD3='无'
CMD4='无'
CMD4_2=' '
CMD5='无'
else
CMD2='gnome-panel'
CMD6='gnome-settings-daemon'
fi
fi
if [ $CMD1 == 'unity' ]; then
CMD1='gnome-session --session=ubuntu-2d'
CMD2='无'
CMD2_2=' '
CMD3='无'
CMD4='nautilus'
CMD4_2=' -n'
CMD5='无'
CMD6='gnome-settings-daemon'
fi
if [ $CMD1 == 'startkde' ]; then
CMD2='无'
CMD2_2=' '
CMD3='无'
CMD4='无'
CMD4_2=' '
CMD5='无'
fi
fi
if [ $CMD6 != '无' ]; then
$CMD6 &
fi
if [ $CMD5 != '无' ]; then
$CMD5 &
fi
if [ $CMD4 != '无' ]; then
$CMD4 $CMD4_2 &
fi
if [ $CMD3 != '无' ]; then
$CMD3 &
fi
if [ $CMD2 != '无' ]; then
$CMD2 $CMD2_2 &
fi
fcitx &
parcellite &
wine c:/ipmsg/ipmsg.exe &
cat /dev/null > ~/kill_auto_wm
chmod 777 ~/kill_auto_wm
if [ $CMD6 != '无' ]; then
echo killall $CMD6 >> ~/kill_auto_wm
fi
if [ $CMD5 != '无' ]; then
echo killall $CMD5 >> ~/kill_auto_wm
fi
if [ $CMD4 != '无' ]; then
echo killall $CMD4 >> ~/kill_auto_wm
fi
if [ $CMD3 != '无' ]; then
echo killall $CMD3 >> ~/kill_auto_wm
fi
if [ $CMD2 != '无' ]; then
echo killall $CMD2 >> ~/kill_auto_wm
fi
echo killall fcitx >> ~/kill_auto_wm
echo killall parcellite >> ~/kill_auto_wm
echo killall ipmsg.exe >> ~/kill_auto_wm
echo killall $CMD1 >> ~/kill_auto_wm
if [ $CMD1 == 'i3' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Mod1 指的是 "Alt" 键' >> ~/kill_auto_wm
echo \# 'Mod1 Enter 打开终端' >> ~/kill_auto_wm
echo \# 'Mod1 v 运行 dmenu (输入程序名快速定位程序)' >> ~/kill_auto_wm
echo \# '方向键: j(left), k(down), l(up) and ;(right)' >> ~/kill_auto_wm
echo \# 'Mod1+<directional key> 在窗口之间移动焦点' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+<directional key> 移动窗口' >> ~/kill_auto_wm
echo \# 'Mod1+<number> 打开相应的工作区' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+<number> 移动一个窗口到选定的工作区' >> ~/kill_auto_wm
echo \# 'Mod1+h 设置一个布局模式' >> ~/kill_auto_wm
echo \# 'Mod1+e 回默认设置模式' >> ~/kill_auto_wm
echo \# 'Mod1+f 切换当前窗口全屏模式' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+Space 切换当前窗口浮动模式' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+q 关闭窗口' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+r 重启I3 (会失去选定的布局)' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+e 退出I3' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'dwm' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Mod1 指的是 "Alt" 键' >> ~/kill_auto_wm
echo \# 'Mod1 + P 运行 dmenu (输入程序名快速定位程序)' >> ~/kill_auto_wm
echo \# 'Mod1+Shift+<number> 移动一个窗口到选定的工作区' >> ~/kill_auto_wm
echo \# 'Mod1 + T 回默认设置模式' >> ~/kill_auto_wm
echo \# 'Mod1 + M 切换当前窗口全屏模式' >> ~/kill_auto_wm
echo \# 'Mod1 + F 切换当前窗口浮动模式' >> ~/kill_auto_wm
echo \# 'Shift + Mod1 + C 关闭窗口' >> ~/kill_auto_wm
echo \# 'Shift + Mod1 + Q 退出' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'evilwm' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Ctrl+Alt作为主键' >> ~/kill_auto_wm
echo \# 'Return - 打开终端' >> ~/kill_auto_wm
echo \# 'Escape – (关程序)' >> ~/kill_auto_wm
echo \# 'Insert – (降低窗口)' >> ~/kill_auto_wm
echo \# 'H,J,K,L – left, down, up, right (移动窗口)' >> ~/kill_auto_wm
echo \# 'Y,U,B,N – top-left, top-right, bottom-left, bottom-right (移动到边)' >> ~/kill_auto_wm
echo \# '= – (横向放大)' >> ~/kill_auto_wm
echo \# 'X – (全屏)' >> ~/kill_auto_wm
echo \# ' Alt 单独主键' >> ~/kill_auto_wm
echo \# '鼠标左 – (移动窗口)' >> ~/kill_auto_wm
echo \# '鼠标中 – (缩放)' >> ~/kill_auto_wm
echo \# '鼠标右 – (降低)' >> ~/kill_auto_wm
echo \# '1-8 – (切换桌面)' >> ~/kill_auto_wm
echo \# 'F – Fix / unfix 窗口' >> ~/kill_auto_wm
echo \# '移动窗口到其他桌面:fix , 换桌面, unfix ' >> ~/kill_auto_wm
echo \# 'Alt+Tab 轮转窗口' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'ratpoison' ] || [ $CMD1 == 'stumpwm' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Ctrl+t,? 看提示' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'awesome' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + c 关掉当前窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + j 切换到下一个窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + k 切换到前一个窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + h 把主区域(master width)的宽度增大5%' >> ~/kill_auto_wm
echo \# 'Mod4 + l 把主区域(master width)的宽度减少5%' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + space 切换当前窗口是否为浮动的' >> ~/kill_auto_wm
echo \# 'Mod4 + F1 运行命令' >> ~/kill_auto_wm
echo \# 'Mod4 + Return 打开一个终端' >> ~/kill_auto_wm
echo \# 'Mod4 + m 最大化/还原当前窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + f 全屏/恢复当前窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + Left 查看前一个tag' >> ~/kill_auto_wm
echo \# 'Mod4 + Right 查看后一个tag' >> ~/kill_auto_wm
echo \# 'Mod4 + 1-9 切换到tag 1-9' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + j 切换到下一个屏幕' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + k 切换到前一个屏幕' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + j 当前窗口和前一个窗口互换位置' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + k 当前窗口和后一个窗口互换位置' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + h 增加主区域窗口的数量' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + l 减少主区域窗口的数量' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + h 增加非主区域窗口的数量' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + l 减少非主区域窗口的数量' >> ~/kill_auto_wm
echo \# 'Mod4 + space 把当前tag更换为下一种布局' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + space 把当前tag更换为前一种布局' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + i 显示当前窗口的class和instance。这在写脚本的时候尤其有用' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + r 重绘当前窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + Control + r 重启awesome' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + q 退出awesome' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'xmonad' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'Mod4 + p 打开 dmenu' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + c 关掉当前窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + j 切换到下一个窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + k 切换到前一个窗口' >> ~/kill_auto_wm
echo \# 'Mod4 + h 把主区域(master width)的宽度增大5%' >> ~/kill_auto_wm
echo \# 'Mod4 + l 把主区域(master width)的宽度减少5%' >> ~/kill_auto_wm
echo \# 'Mod4 + Return 切换主区' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + Return 打开终端' >> ~/kill_auto_wm
echo \# 'Mod4 + 1-9 切换到tag 1-9' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + j 当前窗口和前一个窗口互换位置' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + k 当前窗口和后一个窗口互换位置' >> ~/kill_auto_wm
echo \# 'Mod4 + space 把当前tag更换为下一种布局' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + space 把当前tag更换为前一种布局' >> ~/kill_auto_wm
echo \# 'Mod4 + q 重启xmonad' >> ~/kill_auto_wm
echo \# 'Mod4 + Shift + q 退出xmonad' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
if [ $CMD1 == 'wmii' ]; then
echo \# '快捷键' >> ~/kill_auto_wm
echo \# 'win-p 进入程序启动选单' >> ~/kill_auto_wm
echo \# 'win-j 或 win-k 在程序之间进行切换' >> ~/kill_auto_wm
echo \# 'win-shift-l 窗口并列显示' >> ~/kill_auto_wm
echo \# 'win-d 窗口并排显示(上下窗口)' >> ~/kill_auto_wm
echo \# 'win-ctrl-space 设定/取消窗口浮出' >> ~/kill_auto_wm
echo \# 'win-shift-NUMBER(例如:alt-shift-2) 开一个新tab,获得焦点的窗口自动进入新tab区' >> ~/kill_auto_wm
echo \# 'win-shift-c 关闭一个窗口' >> ~/kill_auto_wm
echo \# 'win-a,然後选择quit 退出wmii' >> ~/kill_auto_wm
geany ~/kill_auto_wm &
fi
exec $CMD1
[/bash]

发现一个BUG:flwm配合unity-2d,程序菜单消失,全局菜单没有(菜单没了)。已经修改语句以避免随机到这种情况。
关于如何统一程序界面以及程序种图标问题:在~目录中,有一个.gtkrc-2.0-kde4这么一个文件,作用是在kde4种统一gtk程序和kde4程序的图标和界面,所以我们把他复制一份,改名为:.gtkrc-2.0,就能在所有界面中都会把kde和gkt2.0的程序都统一成一种风格了-----2011.08.20

安装了gnome、unity,所以增加了一种桌面的选择(鹦鹉螺nautilus),一种面板的选择(gnome面板),另外,把完整的kde和unity也当成一种WM参与选择,有机会启动起来完整的kde和unity。
关于nautilus自动接管桌面的解决方法:找到/etc/xdg/autostart/下面的nautilus的自动启动文件,移走。----2011.08.20

调整了一下nautilus\gnome-panel的界面(启动gnome-settings-daemon),加上一个xfdesktop(xfce4的桌面,软件包名称:xfdesktop4),去掉了wm2(他不好用),把unity改成了unity-2d(我机器支持不起来unity)------2011.08.21
回复