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/