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

各种窗口管理器和美化相关
回复
jtshs256
帖子: 22323
注册时间: 2010-07-19 21:41
系统: OS X

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

#16

帖子 jtshs256 » 2011-08-04 10:40

wm测试猿好……
躺平
头像
qy117121
论坛版主
帖子: 50546
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

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

#17

帖子 qy117121 » 2011-08-04 10:41

:em20
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

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

邮箱 chuan@ubuntu.org.cn
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

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

#19

帖子 cjxgm » 2011-08-04 12:06

不知LZ有没有找到代码相当相当简单的WM,想学习一下
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

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

#20

帖子 ljj_jjl2008 » 2011-08-04 12:55

cjxgm 写了:不知LZ有没有找到代码相当相当简单的WM,想学习一下
tiny window manager

TinyWM is a small, simple window manager. It has a minimal memory
footprint, which makes it useful in embedded systems. It features window
move, resize, and raise operations, and supports "sloppy focus".

Due to its simplicity, its source code (in C and Python) can be used as a
reference implementation for developers seeking to understand basic window
manager programming.

小的,主要用来学习窗口管理器工作原理用的
(这个还真没有找到截图,不过居然有人说他在用。好像没有边框按钮什么的,因为帮助上说
Move windows interactively with Alt+Button1 drag (left mouse button)(Alt+鼠标左键移动窗口)
Resize windows interactively with Alt+Button3 drag (right mouse button)(Alt+鼠标右键调整窗口大小)
Alt+F1 (升起窗口)
点击鼠标获得焦点




small, unconfigurable window manager

wm2 is a window manager for X. It provides an unusual style of window
decoration and as little functionality as Chris Cannam feels comfortable
with in a window manager. wm2 is not configurable, except by editing
the source and recompiling the code, and is really intended for people
who don't particularly want their window manager to be too friendly.

没有配置文件的窗口管理器,通过修改原码和重新编译改变配置
头像
wiewi
帖子: 628
注册时间: 2008-11-20 22:50
系统: ArchLinux

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

#21

帖子 wiewi » 2011-08-04 14:54

貌似dwm配置也要修改源代码编译,前几天搞过,嫌费事就不折腾了
楼主是折腾达人 :em11
===我的小窝===
无聊吗?点我吧,楼主迫切期待你的光临~~
又一个轮子
------------------------------------
这年头,没有1000贴都不好意思见人了
------------------------------------
献丑不如藏拙
------------
头像
liu滔
帖子: 7212
注册时间: 2010-10-09 23:01

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

#22

帖子 liu滔 » 2011-08-04 16:55

楼主威武,太长了,不少内容没看,不过看到Sawfish了很开心 :em05 强力推荐Sawfish,爱折腾的不能错过啊,Lisp很强大啊~ :em05
tlze
帖子: 61
注册时间: 2008-02-21 19:36

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

#23

帖子 tlze » 2011-08-04 22:50

谢谢分享,这个对选择窗口管理器的朋友有用。
ubuntuwxm
帖子: 140
注册时间: 2009-03-03 0:04

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

#24

帖子 ubuntuwxm » 2011-08-08 20:39

freebsd里的posrt里全都有这些wm
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

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

#25

帖子 ljj_jjl2008 » 2011-08-12 17:53

window manager:(S:小型;T:平铺;A:全面,不建议搭积木的;V:虚拟大桌面的;其他:普通的)
9wm(S)
aewm(S)
aewm++(S)
amiwm(S)
AfterStepa(A)
awesome(T)
blackbox
ctwm(S)
dwm(ST)
e17(A)
evilwm
fluxbox
fvwm(A)
i3(T)
IceWm
Jwm
kde-window-manager
larswm(T?)(他让我的机器死机了,所以又卸载了--2011.08.14)
LWM(S)
Metacity
MIWM(S?)
metacity
olvwm(V)
olwm(S)
Openbox
Oroborus(S?)
Parti(T?)
pekwm(S?)
ratpoison(keyboard-only window manager)
Sapphire(S?)
Sawfish
Scrotwm(T)
StumpWM(ST)
TinyWM(S)
tritium(T)
VTWM(V)
w9wm(S)
WindowLab(S)
wm2(S)
wmaker(A?)
wmii(S)
Xmonad(T)(原来落下了,现在补充安装。不过他依赖包好多呀,接近400M呀!--2011.08.15)
Bluetile(T)(原来落下了,现在补充安装。--2011.08.16)

CD播放:
ascd(AfterStepa) (error)
wmrack(Window Maker) (error)

CD换盘:
ascdc(AfterStepa)

邮件监控:
asmail(AfterStepa)
bbmail(blackbox)
kmail

音量调节:
asmixer(AfterStepa) (error)
wmmixer(Window Maker) (error)
gpe-mixer (error)
KMix


换页器:
bbpager(blackbox)
fbpager(Fluxbox)

程序启动器
bbrun(blackbox)
gpe-appmgr(GPE)
grun(GPE)
Wmbutton(Window Maker)

时钟(日历):
bbtime(blackbox)
pclock(Window Maker)
TDC
wmCalClock(Window Maker)
wmdate(日历)(Window Maker)

菜单:
DeskMenu
ratmenu(SHELL)

托盘:
Docker
trayer
wmauda(Window Maker)
Stalonetray

面板:
fspanel
hpanel (error)
ltpanel
LXPanel
PerlPanel
Tint2

文件管理:
gentoo
pcmanfm(桌面)
TkDesk
rox-filer(桌面)

窗口最小化成图标:
Backstep

系统监视:
wmbubble(内存“)(Window Maker)
WMCPULoad(cpu?)(Window Maker)
Wmforkplop(进程?)(Window Maker)
wmifs(网络?)(Window Maker)
wmmemload(内存)(Window Maker)
wmmount(硬盘空间)(Window Maker)
gkrellm(全面监视)
gdesklets(桌面部件)
conky


天气预报:
wmweather(Window Maker)
wmweather+(Window Maker)

剪切板:
parcellite
klipper
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

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

#26

帖子 ljj_jjl2008 » 2011-08-12 17:57

花了2天时间写了一个shell,如果把楼上的软件装全了,再安装上xserver-Xephyr,可以用这个shell文件在来选择和启动这些WM。
注意:要在图形界面(主WM)的一个虚拟桌面上面打开一个终端,在里面调用这个文件。
(有改动:加上了自动KILL进程功能,增加了一些选择的智能化--2011.08.14)
(有改动:加上了Xmonad的支持,去掉了不能正常启动的tritium、larswm,将Stumpwm归类改变到“平铺”类---2011.08.15)
(有改动:WM分类改变了一下,加上了一个:Bluetile----2011.08.16)
(有改动:加上一个“随机抽取WM功能,可以随机搭配组合----2011.08.17”)
[bash]
#!/bin/bash
#xstarter.sh

#need to assign the $TERM comparison to a variable
#same goes for the console comparison
choice=0
choiced=0
choicewm=' '

#下面变量是记录哪些程序被启动,文件结束时,会KILLALL掉他们
Z9wm=0
Aewm=0
Aewmjj=0
Amiwm=0
Afterstep=0
Awesome=0
Blackbox=0
Bluetile=0
Ctwm=0
Dwm=0
E17=0
Evilwm=0
Fluxbox=0
Flwm=0
Fvwm=0
I3=0
Icewm=0
Jwm=0
Kde_window_manager=0
Lwm=0
Metacity=0
Miwm=0
Metacity=0
Olvwm=0
Olwm=0
Openbox=0
Oroborus=0
Parti=0
Pekwm=0
Ratpoison=0
Sapphire=0
Sawfish=0
Scrotwm=0
Stumpwm=0
Tinywm=0
Tritium=0
Vtwm=0
W9wm=0
WindowLab=0
Wm2=0
Wmaker=0
Wmii=0
Xmonad=0

Kmail=0

Kmix=0
Bbrun=0

Asclock=0
Gpe_clock=0

Deskmenu=0

Trayer=0
Lxpanel=0
Tint2=0

Pcmanfm=0
Rox_filer=0

Backstep=0
Wmbubble=0
Wmcpuload=0
Wmforkplop=0
Wmifs=0
Wmmemload=0
Wmmount=0
Gkrellm=0
Gdesklets=0
Conky=0

Parcellite=0
Klipper=0

echo '**********************************'
echo '** Linux WM 搭积木程序 **'
echo '** 通过选择来搭积木 **'
echo '** 请先选择一个WM **'
echo '** 然后逐步选择其他组件 **'
echo '** 最后搭建出来一个linux桌面 **'
echo '**********************************'
echo '**********************************'
echo '** 请先选择WM类型 **'
echo '**********************************'

WML_LIST=( '直接退出' '适合“搭积木”的' 'box类' 'fvwm、Wmaker、AfterStep类' '虚拟视窗类' '平铺类' '微型WM' '无使用价值和无法使用的' '搭配好的组合' '随机产生组合' )
TOTAL_WMS=9
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WML_LIST[$i]} "
done
echo ' '
read -n 1 choice_wml
echo ' '
echo "你选择了:${WML_LIST[$choice_wml]}"

while [ $choice = 0 ] && [ $choice_wml != 0 ] && [ $choiced = 0 ]; do
case ${WML_LIST[$choice_wml]} in
直接退出)
;;
适合“搭积木”的)
echo '********************************************'
echo '** 现在开始选择我适合搭积木的WM **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'Sawfish' 'Flwm' 'metacity' 'Jwm' 'evilwm' 'Icewm' 'Oroborus' 'kde_window_manager')
TOTAL_WMS=8
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo ' '
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
Sawfish)
DISPLAY=:6 sawfish &
Sawfish=1
;;
Flwm)
DISPLAY=:6 flwm &
Flwm=1
;;
metacity)
DISPLAY=:6 exec metacity &
Metacity=1
;;
Jwm)
DISPLAY=:6 jwm &
Jwm=1
echo '** JWM自带面板、托盘和时钟, **'
;;
evilwm)
DISPLAY=:6 evilwm &
Evilwm=1
echo '** 请用CTRL+ALT+鼠标来控制调整窗口 **'
echo '** 请用CTRL+ALT+ESC 关闭窗口 **'
echo '** 请用CTRL+ALT+Return打开终端 **'
echo '** 其他快捷键请查询帮助 **'
;;
Icewm)
DISPLAY=:6 icewm &
Icewm=1
echo '** Icewm自带面板、托盘和时钟, **'
;;
kde_window_manager)
DISPLAY=:6 kwin &
Kwin=1
;;
Oroborus)
DISPLAY=:6 oroborus &
Oroborus=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
box类)
echo '********************************************'
echo '** 此类可定义自启动程序 **'
echo '** 注意不要重复启动和冲突 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'fluxbox' 'blackbox' 'Openbox' 'Sapphire')
TOTAL_WMS=4
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
fluxbox)
DISPLAY=:6 fluxbox &
Fluxbox=1
;;
blackbox)
DISPLAY=:6 blackbox &
Blackbox=1
;;
Openbox)
DISPLAY=:6 openbox &
Openbox=1
;;
Sapphire)
DISPLAY=:6 sapphire &
Sapphire=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
fvwm、Wmaker、AfterStep类)
echo '********************************************'
echo '** 注意 此类WM自带壁纸 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'fvwm' 'Wmaker' 'AfterStep' 'e17')
TOTAL_WMS=4
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
fvwm)
DISPLAY=:6 exec fvwm &
Fvwm=1
;;
Wmaker)
DISPLAY=:6 exec wmaker &
Wmaker=1
;;
AfterStep)
DISPLAY=:6 afterstep &
Afterstep=1
;;
e17)
DISPLAY=:6 enlightenment_start &
E17=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
虚拟视窗类)
echo '********************************************'
echo '** 此类与面板、桌面无法配合 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'olvwm' 'VTWM' )
TOTAL_WMS=2
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
olvwm)
DISPLAY=:6 olvwm &
Olvwm=1
;;
VTWM)
DISPLAY=:6 vtwm &
Vtwm=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
平铺类)
echo '********************************************'
echo '** 此类与面板、桌面可能无法配合 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'ratpoison' 'StumpWM' 'awesome' 'dwm' 'i3' 'Xmonad' 'wmii' 'Bluetile')
TOTAL_WMS=8
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
awesome)
DISPLAY=:6 awesome &
Awesome=1
;;
dwm)
DISPLAY=:6 dwm &
Dwm=1
;;
i3)
DISPLAY=:6 i3 &
I3=1
;;
ratpoison)
DISPLAY=:6 ratpoison &
Ratpoison=1
;;
StumpWM)
DISPLAY=:6 stumpwm &
Stumpwm=1
;;
Xmonad)
DISPLAY=:6 xmonad &
Xmonad=1
;;
wmii)
DISPLAY=:6 wmii &
Wmii=1
;;
Bluetile)
DISPLAY=:6 bluetile &
Bluetile=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
微型WM)
echo '********************************************'
echo '** 此类与面板、桌面可能无法配合 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'ctwm' 'LWM' 'MIWM' 'pekwm' 'TinyWM' 'WindowLab' 'wm2')
TOTAL_WMS=7
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
ctwm)
DISPLAY=:6 ctwm &
Ctwm=1
;;
LWM)
DISPLAY=:6 lwm &
Lwm=1
;;
MIWM)
DISPLAY=:6 miwm &
Miwm=1
;;
pekwm)
DISPLAY=:6 pekwm &
Pekwm=1
;;
TinyWM)
DISPLAY=:6 tinywm &
Tinywm=1
;;
WindowLab)
DISPLAY=:6 windowlab &
Windowlab=1
;;
wm2)
DISPLAY=:6 wm2 &
Wm2=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
无使用价值和无法使用的)
echo '********************************************'
echo '** 此类与面板、桌面可能无法配合 **'
echo '** 此类WM也许有BUG,慎用 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' '9wm' 'aewm' 'aewm++' 'olwm' 'w9wm' 'Scrotwm' 'tritium' 'Parti' 'amiwm')
TOTAL_WMS=9
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
9wm)
DISPLAY=:6 9wm &
Z9wm=1
;;
aewm)
DISPLAY=:6 aewm &
Aewm=1
;;
aewm++)
DISPLAY=:6 aewm++ &
Aewmjj=1
DISPLAY=:6 aewm++_appbar &
DISPLAY=:6 aewm++_fspanel &
;;
olwm)
DISPLAY=:6 olwm &
Olwm=1
;;
w9wm)
DISPLAY=:6 w9wm &
W9wm=1
;;
Scrotwm)
DISPLAY=:6 scrotwm &
Scrotwm=1
;;
tritium)
DISPLAY=:6 tritium &
Tritium=1
;;
Parti)
DISPLAY=:6 parti &
Parti=1
;;
amiwm)
DISPLAY=:6 amiwm &
Amiwm=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
搭配好的组合)
echo '********************************************'
echo '** 此类与面板、桌面已经搭配 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'awesome(定制)' 'openbox(定制)' 'jwm(定制)' )
TOTAL_WMS=3
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
awesome(定制))
DISPLAY=:6 exec awesome &
DISPLAY=:6 geany &
DISPLAY=:6 dolphin &
DISPLAY=:6 sakura &
DISPLAY=:6 chromium-browser &
DISPLAY=:6 parcellite &
DISPLAY=:6 fcitx &
Awesome=1
Parcellite=1
;;
openbox(定制))
DISPLAY=:6 openbox &
DISPLAY=:6 parcellite &
DISPLAY=:6 fcitx &
Openbox=1
Parcellite=1
;;
jwm(定制))
DISPLAY=:6 jwm &
DISPLAY=:6 rox-filer -p default &
DISPLAY=:6 parcellite &
DISPLAY=:6 fcitx &
Rox_filer=1
Parcellite=1
Jwm=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
随机产生组合)
# icewm/jwm(不能使用面板托盘)
# evilwm/oroborus/metacity/kwin(只能使用lxpanel)
# wmii/Bluetile/dwm/ratpoison/stumpwm/flwm/Sawfish/fluxbox/blackbox/Openbox/pekwm/fvwm/Wmaker/AfterStep(选择面板或者托盘)
# wmii/Bluetile/dwm/ratpoison/stumpwm/fvwm/afterstep(不能选择桌面,其他随机桌面)
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')
S_RUN=2
while [ $S_RUN = 2 ];
do
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 == 'E17' ]; 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
echo "随机抽取到以下组件:"
echo "窗口管理器: $CMD1"
if [ $CMD3 != '无' ]; then
echo "面 板: $CMD2 $CMD3"
else
echo "面 板: $CMD2"
fi
echo "桌 面: $CMD4"
echo "请选择:"
choicewm='随机组合'
SF_LIST=( '回主菜单' '确认并启动' '重新随机' )
TOTAL_WMS=2
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${SF_LIST[$i]} "
done
echo ' '
read -n 1 S_RUN
if [ $S_RUN = 1 ]; then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
DISPLAY=:6 $CMD1 &
if [ $CMD2 != '无' ]; then
DISPLAY=:6 $CMD2 $CMD2_2 &
fi
if [ $CMD3 != '无' ]; then
DISPLAY=:6 $CMD3 &
fi
if [ $CMD4 != '无' ]; then
DISPLAY=:6 $CMD4 $CMD4_2 &
fi
DISPLAY=:6 fcitx &
DISPLAY=:6 parcellite &
fi
done
case ${SF_LIST[$S_RUN]} in
确认并启动)
choice=1
echo '** 选择 是否帮你关闭和退出 **'
IP_LIST=( '直接回到命令行' '关闭所有选择打开的程序' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
关闭所有选择打开的程序)
if [ $CMD4 != '无' ]; then
killall $CMD4 &
fi
if [ $CMD2 != '无' ]; then
killall $CMD2 &
fi
if [ $CMD3 != '无' ]; then
killall $CMD3 &
fi
killall $CMD1
;;
*)
;;
esac
;;
回主菜单)
choice=0
;;
*)
;;
esac

;;
*)
;;
esac
if [ $choice = 0 ]; then
clear
echo '**********************************'
echo '** Linux WM 搭积木程序 **'
echo '** 通过选择来搭积木 **'
echo '** 请先选择一个WM **'
echo '** 然后逐步选择其他组件 **'
echo '** 最后搭建出来一个linux桌面 **'
echo '**********************************'
echo '**********************************'
echo '** 请先选择WM类型 **'
echo '**********************************'

WML_LIST=( '直接退出' '适合“搭积木”的' 'box类' 'fvwm、Wmaker、AfterStep类' '虚拟视窗类' '平铺类' '微型WM' '无使用价值和无法使用的' '搭配好的组合' '随机产生组合')
TOTAL_WMS=9
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WML_LIST[$i]} "
done
echo ' '
read -n 1 choice_wml
echo " "
echo "你选择了:${WML_LIST[$choice_wml]}"
else
choiced=1
fi
done


if [ $choice_wml != 0 ] && [ $choice_wml != 9 ]; then
if [ $choicewm != "awesome(定制)" ] && [ $choicewm != "openbox(定制)" ] && [ $choicewm != "jwm(定制)" ] && [ $choicewm != "olvwm" ] && [ $choicewm != "VTWM" ] && [ $choicewm != "i3" ] && [ $choicewm != "TinyWM" ] && [ $choicewm != "WindowLab" ] && [ $choicewm != "ctwm" ]; then
if [ $choicewm != "dwm" ] && [ $choicewm != "awesome" ] && [ $choicewm != "wmii" ] && [ $choicewm != "ratpoison" ] && [ $choicewm != "Xmonad" ] && [ $choicewm != "StumpWM" ] && [ $choicewm != "pekwm" ] && [ $choicewm != "fvwm" ] && [ $choicewm != "AfterStep" ]; then
echo '** 选择 桌面和图标 **'
ZM_LIST=( '都不启动' 'Rox-filer' 'PcmanFM' )
TOTAL_WMS=2
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${ZM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${ZM_LIST[$choice]}"
case ${ZM_LIST[$choice]} in
Rox-filer)
DISPLAY=:6 rox-filer -p default &
Rox_filer=1
;;
PcmanFM)
DISPLAY=:6 pcmanfm --desktop &
Pcmanfm=1
;;
*)
;;
esac
else
echo '** 这个WM不能使用桌面和图标 **'
fi
if [ $choicewm != "Icewm" ] && [ $choicewm != "Jwm" ] && [ $choicewm != "Flwm" ] && [ $choicewm != "awesome" ] && [ $choicewm != "Xmonad" ]; then
if [ $choicewm == "evilwm" ] || [ $choicewm == "metacity" ] || [ $choicewm == "Oroborus" ] || [ $choicewm == "kde_window_manager" ];then
echo '** 你选择的WM本身没有任何菜单 **'
echo '** 强制选择”Lxpanel(带菜单面板)“ **'
DISPLAY=:6 lxpanel &
Lxpanel=1
else
echo ''
echo ''
echo '** 选择面板和托盘 **'
PA_LIST=( '都不启动' 'Trayer(托盘)' 'Tint2(面板)' 'Lxpanel(带菜单面板)' )
TOTAL_WMS=3
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${PA_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${PA_LIST[$choice]}"
case ${PA_LIST[$choice]} in
Trayer(托盘))
DISPLAY=:6 trayer --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request &
Trayer=1
echo ' '
echo ''
echo '** 选择 托盘时钟 **'
CK_LIST=( '不启动' 'gpe-clock(托盘时钟)' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${CK_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${CK_LIST[$choice]}"
case ${CK_LIST[$choice]} in
gpe-clock(托盘时钟))
DISPLAY=:6 gpe-clock &
Gpe_clock=1
;;
不启动)
;;
*)
;;
esac
;;
Tint2(面板))
DISPLAY=:6 tint2 &
Tint2=1
;;
Lxpanel(带菜单面板))
DISPLAY=:6 lxpanel &
Lxpanel=1
;;
都不启动)
;;
*)
;;
esac
fi
else
if [ $choicewm == "Flwm" ] || [ $choicewm == "Xmonad" ]; then
echo '** 这个 WM 与面板配合效果不好 **'
echo '** 强制选择 Trayer(托盘)+ gpe-clock **'
DISPLAY=:6 trayer --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request &
DISPLAY=:6 gpe-clock &
Gpe_clock=1
Trayer=1
else
echo '** 忽略对面板和时钟的选择 **'
fi
fi
if [ $choicewm != "dwm" ] && [ $choicewm != "awesome" ] && [ $choicewm != "Xmonad" ]; then
echo '** 选择 是否启动独立时钟 **'
CK_LIST=( '不启动' 'asclock(独立时钟)' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${CK_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${CK_LIST[$choice]}"
case ${CK_LIST[$choice]} in
asclock(独立时钟))
echo '** 选择 时钟样式 **'
CF_LIST=( ' ' 'classic' 'Orb' 'Stone' 'Newstone' 'Freeamp' 'Freeamp-es' 'penguin' 'shaped' 'beats' )
TOTAL_WMS=9
for ((i=1; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${CF_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${CF_LIST[$choice]}"
case ${CF_LIST[$choice]} in
classic)
DISPLAY=:6 asclock -theme classic &
;;
Orb)
DISPLAY=:6 asclock -theme Orb &
;;
Stone)
DISPLAY=:6 asclock -theme Stone &
;;
Newston)
DISPLAY=:6 asclock -theme Newston &
;;
Freeamp)
DISPLAY=:6 asclock -theme Freeamp &
;;
Freeamp-es)
DISPLAY=:6 asclock -theme Freeamp-es &
;;
penguin)
DISPLAY=:6 asclock -theme penguin &
;;
shaped)
DISPLAY=:6 asclock -theme shaped &
;;
beats)
DISPLAY=:6 asclock -theme beats &
;;
*)
;;
esac
Asclock=1
;;
不启动)
;;
*)
;;
esac
else
echo '** 这个WM不能使用桌面部件 **'
fi

echo '** 选择 全局剪切板 **'
PT_LIST=( '不启用' 'Parcellite' 'Klipper' )
TOTAL_WMS=2
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${PT_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${PT_LIST[$choice]}"
case ${PT_LIST[$choice]} in
Parcellite)
DISPLAY=:6 parcellite &
Parcellite=1
;;
Klipper)
DISPLAY=:6 klipper &
Klipper=1
;;
不启用)
;;
*)
;;
esac
clear
echo '** 选择 输入法 **'
IP_LIST=( '不启用' 'Fcitx' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
Fcitx)
DISPLAY=:6 fcitx &
;;
不启用)
;;
*)
;;
esac

clear
echo '** 选择 音量控制 **'
IP_LIST=( '不启用' 'KMix' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
KMix)
DISPLAY=:6 kmix &
Kmix=1
;;
不启用)
;;
*)
;;
esac
else
echo '** 由于WM不支持(或已定制) **'
echo '** 已经忽略对桌面、面板、输入法 **'
echo '** 音量控制、剪切板、时钟的选择 **'
echo '** 如果确有需要,请到WM中去启动 **'
fi
if [ $choicewm != "dwm" ] && [ $choicewm != "awesome" ] && [ $choicewm != "i3" ] && [ $choicewm != "Xmonad" ]; then
echo ' '
echo '** 选择 系统监控 **'
IP_LIST=( '不启用' 'conky' 'gkrellm' )
TOTAL_WMS=2
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
conky)
DISPLAY=:6 conky -c ~/.conky/conky_right -quiet &
Conky=1
;;
gkrellm)
DISPLAY=:6 gkrellm &
Gkrellm=1
;;
不启用)
;;
*)
;;
esac
sleep 2
choice=1
clear
while [ $choice != 0 ]; do
clear
echo '** 选择 可选组件 **'
echo '** 本选项将反复出现,以便多选 **'
echo '** 按 0 退出 **'
IP_LIST=( '退出' 'bbrun(“运行”按钮)' 'wmmemload(内存状况)' 'wmmount(硬盘空间)' 'wmifs(网络)' 'Wmforkplop(进程)' 'WMCPULoad(cpu)' 'kmail(邮件监控)' 'Backstep(缩小窗口为图标)' 'DeskMenu(桌面菜单)' 'gdesklets(桌面部件)' )
TOTAL_WMS=9
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
kmail(邮件监控))
DISPLAY=:6 kmail &
Kmail=1
;;
bbrun(“运行”按钮))
DISPLAY=:6 bbrun &
Bbrun=1
;;
Backstep(缩小窗口为图标))
DISPLAY=:6 backstep &
Backstep=1
;;
wmmemload(内存状况))
DISPLAY=:6 wmmemload &
Wmmemload=1
;;
wmmount(硬盘空间))
DISPLAY=:6 wmmount &
Wmmount=1
;;
WMCPULoad(cpu))
DISPLAY=:6 wmcpuload &
Wmcpuload=1
;;
wmifs(网络))
DISPLAY=:6 wmifs &
Wmifs=1
;;
Wmforkplop(进程))
DISPLAY=:6 wmforkplop &
Wmforkplop=1
;;
DeskMenu(桌面菜单))
DISPLAY=:6 deskmenu &
Deskmenu=1
;;
gdesklets(桌面部件))
DISPLAY=:6 gdesklets &
Gdesklets=1
;;
*)
;;
esac
done
else
echo '** 这个WM不能使用桌面部件 **'
fi
echo '**************************************'
echo '** 积木搭建成功,祝你愉快 **'
echo '**************************************'
#下面开始KILLALL掉进程
echo '** 选择 是否帮你关闭和退出 **'
IP_LIST=( '直接回到命令行' '关闭所有选择打开的程序' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
关闭所有选择打开的程序)
if [ $Kmail == 1 ]; then
killall kmail &
fi
if [ $Kmix == 1 ]; then
killall kmix &
fi
if [ $Bbrun == 1 ]; then
killall bbrun &
fi
if [ $Asclock == 1 ]; then
killall asclock &
fi
if [ $Gpe_clock == 1 ]; then
killall gpe-clock &
fi
if [ $Deskmenu == 1 ]; then
killall deskmenu &
fi
if [ $Trayer == 1 ]; then
killall trayer &
fi
if [ $Lxpanel == 1 ]; then
killall lxpanel &
fi
if [ $Tint2 == 1 ]; then
killall tint2 &
fi
if [ $Pcmanfm == 1 ]; then
killall pcmanfm &
fi
if [ $Rox_filer == 1 ]; then
killall rox-filer &
fi
if [ $Backstep == 1 ]; then
killall backstep &
fi
if [ $Wmbubble == 1 ]; then
killall wmbubble &
fi
if [ $Wmcpuload == 1 ]; then
killall wmcpuload &
fi
if [ $Wmforkplop == 1 ]; then
killall wmforkplop &
fi
if [ $Wmifs == 1 ]; then
killall wmifs &
fi
if [ $Wmmemload == 1 ]; then
killall wmmemload &
fi
if [ $Wmmount == 1 ]; then
killall wmmount &
fi
if [ $Gkrellm == 1 ]; then
killall gkrellm &
fi
if [ $Gdesklets == 1 ]; then
killall gdesklets &
fi
if [ $Conky == 1 ]; then
killall conky &
fi
if [ $Parcellite == 1 ]; then
killall parcellite &
fi
if [ $Klipper == 1 ]; then
killall klipper &
fi
if [ $Z9wm == 1 ]; then
killall 9wm &
fi
if [ $Aewm == 1 ]; then
killall awm &
fi
if [ $Aewmjj == 1 ]; then
killall aewm* &
fi
if [ $Amiwm == 1 ]; then
killall amiwm &
fi
if [ $Afterstep == 1 ]; then
killall afterstep &
fi
if [ $Awesome == 1 ]; then
killall awesome &
fi
if [ $Blackbox == 1 ]; then
killall blackbox &
fi
if [ $Bluetile == 1 ]; then
killall bluetile &
fi
if [ $Ctwm == 1 ]; then
killall ctwm &
fi
if [ $Dwm == 1 ]; then
killall dwm &
fi
if [ $E17 == 1 ]; then
killall enlightenment &
fi
if [ $Evilwm == 1 ]; then
killall evilwm &
fi
if [ $Fluxbox == 1 ]; then
killall fluxbox &
fi
if [ $Flwm == 1 ]; then
killall flwm &
fi
if [ $Fvwm == 1 ]; then
killall fvwm &
fi
if [ $I3 == 1 ]; then
killall i3 &
fi
if [ $Icewm == 1 ]; then
killall icewm &
fi
if [ $Jwm == 1 ]; then
killall jwm &
fi
if [ $Kde_window_manager == 1 ]; then
killall kwin &
fi
if [ $Lwm == 1 ]; then
killall lwm &
fi
if [ $Metacity == 1 ]; then
killall metacity &
fi
if [ $Miwm == 1 ]; then
killall miwm &
fi
if [ $Olvwm == 1 ]; then
killall olvwm &
fi
if [ $Olwm == 1 ]; then
killall olwm &
fi
if [ $Openbox == 1 ]; then
killall openbox &
fi
if [ $Oroborus == 1 ]; then
killall oroborus &
fi
if [ $Parti == 1 ]; then
killall parti &
fi
if [ $Pekwm == 1 ]; then
killall pekwm &
fi
if [ $Ratpoison == 1 ]; then
killall ratpoison &
fi
if [ $Sapphire == 1 ]; then
killall sapphire &
fi
if [ $Sawfish == 1 ]; then
killall sawfish &
fi
if [ $Scrotwm == 1 ]; then
killall scrotwm &
fi
if [ $Stumpwm == 1 ]; then
killall stumpwm &
fi
if [ $Tinywm == 1 ]; then
killall tinywm &
fi
if [ $Vtwm == 1 ]; then
killall vtwm &
fi
if [ $W9wm == 1 ]; then
killall w9wm &
fi
if [ $WindowLab == 1 ]; then
killall windowLab &
fi
if [ $Wm2 == 1 ]; then
killall wm2 &
fi
if [ $Wmaker == 1 ]; then
killall wmaker &
fi
if [ $Wmii == 1 ]; then
killall wmii &
fi
if [ $Tritium == 1 ]; then
killall tritium &
fi
if [ $Xmonad == 1 ]; then
killall xmonad &
fi
;;
直接回到命令行)
;;
*)
;;
esac
fi
echo '**************************************'
echo '** 谢谢使用,祝你愉快 **'
echo '**************************************'
[/bash]

下面是本程序的执行效果:
初始选单
抓图3.png
分别选择初始选单的1-9,出现以下效果:
抓图4.png
抓图5.png
抓图6.png
抓图7.png
抓图8.png
抓图9.png
抓图10.png
抓图11.png
抓图12.png
如果从1-7中选择了一个WM后,需要进行后续的选择。
而8、9两项不需要后续的选择,直接启动进入。
有时本终端窗口会被新选择的WM窗口盖住,为了看到效果,需要用alt-tab之类切换窗口的快捷键来回切换。
有些选择是智能化的,即根据你所选的WM的特点,帮你直接选择一些选项,或者直接避免你选到不合适的选项。

选择过程中有时会受到所选的程序的终端提示的困扰,把选项冲的有点乱。
抓图13.png
抓图14.png
抓图15.png
抓图16.png
抓图17.png
抓图18.png
抓图19.png
抓图20.png

最终的效果(之一):
抓图22.png
然后还有一个选项:
抓图21.png
这是为了让你完成工作和测试后,能够比较干净的kill掉进程的,
注意:他会kill掉主WM中同名进程,所以请判断后再选择。
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

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

#27

帖子 月下叹逍遥 » 2011-08-12 18:05

xzc8825745 写了:有什么用?看不懂英文。
图片
浮生七十今三十,从此凄惶未可知
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

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

#28

帖子 ljj_jjl2008 » 2011-08-12 18:17

月下叹逍遥 写了:
xzc8825745 写了:有什么用?看不懂英文。
图片
哪里有英文?
头像
SmallV
论坛版主
帖子: 9017
注册时间: 2011-01-26 17:52
来自: 万林丛中的一抹浓绿,夹带落日余晖的安祥

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

#29

帖子 SmallV » 2011-08-12 18:41

图片
Just do it, you will succeed!
头像
liu滔
帖子: 7212
注册时间: 2010-10-09 23:01

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

#30

帖子 liu滔 » 2011-08-12 21:03

楼主,为什么Sawfish旁边没有分类的,其它不是都有个什么S啊A啊之类的吗?这是对Sawfish赤果果的歧视!这是人类与Lisper的战争!这是地球与Land of Lisp的战争! :em05
回复