我想尝试一些终端窗口管理器,例如 Viper Window Manager (VWM) 和 Twin (“Textmode WINdow”),但我在 Ubuntu 中运行它们时遇到了困难。是否有适用于这些或其他类似产品的软件包,或者是否有一些安装指南?
编辑:我在下面添加了我遇到的具体困难的描述。首先,我描述了我安装 Viper Window Manager 的尝试,然后描述了我安装 Twin 的尝试。对于这两次尝试,编译时都遇到了问题。对于 Viper Window Manager,有许多未定义的引用。对于 Twin,Make 过程中似乎存在格式问题。我不知道如何处理这两个问题,如果您有任何想法,我将不胜感激。谢谢。
Viper 窗口管理器
Viper Window Manager 列出的先决条件如下:
- glib 2.8+
- 伪类库
- libviper 1.4.5+
- 库
- ncurses 5.4+
安装 glib 2.40.0
wget http://ftp.acc.umu.se/pub/GNOME/sources/glib/2.40/glib-2.40.0.tar.xz
tar -xvf glib-2.40.0.tar.xz
cd glib-2.40.0/
./configure
make
sudo make install
安装 libpseudo
wget http://garr.dl.sourceforge.net/project/libpseudo/libpseudo-1.2.0.tar.gz
tar -xvf libpseudo-1.2.0.tar.gz
cd libpseudo/
make
sudo make install
安装 libgpm、ncurses 和 libviper
wget http://kent.dl.sourceforge.net/project/libviper/libviper-1.4.6.tar.gz
tar -xvf libviper-1.4.6.tar.gz
cd libviper/
sudo apt-get install -y ncurses-dev
sudo apt-get install -y libgpm-dev
make
sudo make install
# The file viper.h is in the directory /usr/local/include now.
# The file libviper.so is in the directory /usr/local/lib now.
安装 Viper 窗口管理器
wget http://garr.dl.sourceforge.net/project/vwm/vwm-2.1.3.tar.gz
tar -xvf vwm-2.1.3.tar.gz
cd cd vwm/
make
此时,出现了一个问题。缩写终端输出如下:
/tmp/ccNnGI2W.o: In function `vwm_init':
/home/user/VWM/vwm/vwm.c:200: undefined reference to `viper_screen_get_wallpaper'
/home/user/VWM/vwm/vwm.c:202: undefined reference to `g_malloc0'
/tmp/ccNnGI2W.o: In function `main':
/home/user/VWM/vwm/vwm.c:87: undefined reference to `g_module_supported'
/home/user/VWM/vwm/vwm.c:130: undefined reference to `g_thread_init'
/home/user/VWM/vwm/vwm.c:132: undefined reference to `viper_init'
/home/user/VWM/vwm/vwm.c:134: undefined reference to `viper_set_border_agent'
/home/user/VWM/vwm/vwm.c:135: undefined reference to `viper_set_border_agent'
/home/user/VWM/vwm/vwm.c:142: undefined reference to `viper_kmio_dispatch_set_hook'
/home/user/VWM/vwm/vwm.c:145: undefined reference to `viper_screen_redraw'
/home/user/VWM/vwm/vwm.c:149: undefined reference to `psthread_init'
/home/user/VWM/vwm/vwm.c:150: undefined reference to `psthread_add'
/home/user/VWM/vwm/vwm.c:151: undefined reference to `psthread_add'
/home/user/VWM/vwm/vwm.c:178: undefined reference to `psthread_run'
/home/user/VWM/vwm/vwm.c:172: undefined reference to `shmq_msg_get'
/home/user/VWM/vwm/vwm.c:181: undefined reference to `psthread_run'
/home/user/VWM/vwm/vwm.c:186: undefined reference to `viper_end'
/tmp/ccdfRjqI.o: In function `vwm_bkgd_simple':
/home/user/VWM/vwm/vwm_bkgd.c:54: undefined reference to `viper_thread_enter'
/home/user/VWM/vwm/vwm_bkgd.c:56: undefined reference to `viper_wresize'
/home/user/VWM/vwm/vwm_bkgd.c:65: undefined reference to `window_fill'
/home/user/VWM/vwm/vwm_bkgd.c:70: undefined reference to `wattr_on'
/home/user/VWM/vwm/vwm_bkgd.c:71: undefined reference to `mvwprintw'
/home/user/VWM/vwm/vwm_bkgd.c:72: undefined reference to `wattr_on'
/home/user/VWM/vwm/vwm_bkgd.c:74: undefined reference to `viper_thread_leave'
/home/user/VWM/vwm/vwm_bkgd.c:59: undefined reference to `viper_color_pair'
/tmp/ccdfRjqI.o: In function `vwm_bkgd_bricks':
/home/user/VWM/vwm/vwm_bkgd.c:110: undefined reference to `viper_thread_enter'
/home/user/VWM/vwm/vwm_bkgd.c:112: undefined reference to `viper_wresize'
/home/user/VWM/vwm/vwm_bkgd.c:113: undefined reference to `wattr_off'
/home/user/VWM/vwm/vwm_bkgd.c:146: undefined reference to `wattr_on'
/home/user/VWM/vwm/vwm_bkgd.c:147: undefined reference to `mvwprintw'
/home/user/VWM/vwm/vwm_bkgd.c:148: undefined reference to `wattr_on'
/home/user/VWM/vwm/vwm_bkgd.c:150: undefined reference to `viper_thread_leave'
/home/user/VWM/vwm/vwm_bkgd.c:121: undefined reference to `viper_color_pair'
/home/user/VWM/vwm/vwm_bkgd.c:128: undefined reference to `wmove'
/home/user/VWM/vwm/vwm_bkgd.c:129: undefined reference to `waddch'
/home/user/VWM/vwm/vwm_bkgd.c:136: undefined reference to `viper_color_pair'
/home/user/VWM/vwm/vwm_bkgd.c:141: undefined reference to `window_fill'
... many similar errors, removed for the purposes of post brevity...
/tmp/ccHLYQ3M.o: In function `vwm_sigset':
/home/user/VWM/vwm/vwm_signals.c:38: undefined reference to `g_malloc0'
/home/user/VWM/vwm/vwm_signals.c:46: undefined reference to `g_free'
/tmp/ccHLYQ3M.o: In function `vwm_backtrace':
/home/user/VWM/vwm/vwm_signals.c:61: undefined reference to `endwin'
/tmp/ccrc2yXA.o: In function `vwm_fmod_wndlist':
/home/user/VWM/vwm/vwm_wndlist.c:45: undefined reference to `viper_window_find_by_class'
/home/user/VWM/vwm/vwm_wndlist.c:47: undefined reference to `viper_thread_enter'
/home/user/VWM/vwm/vwm_wndlist.c:49: undefined reference to `viper_deck_get_wndlist'
/home/user/VWM/vwm/vwm_wndlist.c:50: undefined reference to `g_strv_length'
/home/user/VWM/vwm/vwm_wndlist.c:58: undefined reference to `viper_menu_create'
/home/user/VWM/vwm/vwm_wndlist.c:60: undefined reference to `g_malloc0'
/home/user/VWM/vwm/vwm_wndlist.c:63: undefined reference to `set_menu_format'
/home/user/VWM/vwm/vwm_wndlist.c:65: undefined reference to `set_menu_mark'
/home/user/VWM/vwm/vwm_wndlist.c:67: undefined reference to `scale_menu'
/home/user/VWM/vwm/vwm_wndlist.c:71: undefined reference to `viper_window_create'
/home/user/VWM/vwm/vwm_wndlist.c:72: undefined reference to `viper_menu_bind'
/home/user/VWM/vwm/vwm_wndlist.c:76: undefined reference to `viper_color_pair'
/home/user/VWM/vwm/vwm_wndlist.c:75: undefined reference to `set_menu_fore'
/home/user/VWM/vwm/vwm_wndlist.c:77: undefined reference to `viper_color_pair'
/home/user/VWM/vwm/vwm_wndlist.c:77: undefined reference to `set_menu_back'
/home/user/VWM/vwm/vwm_wndlist.c:82: undefined reference to `viper_event_set'
/home/user/VWM/vwm/vwm_wndlist.c:84: undefined reference to `viper_window_set_key_func'
/home/user/VWM/vwm/vwm_wndlist.c:85: undefined reference to `viper_window_set_userptr'
/home/user/VWM/vwm/vwm_wndlist.c:86: undefined reference to `viper_window_set_state'
/home/user/VWM/vwm/vwm_wndlist.c:88: undefined reference to `viper_thread_leave'
/home/user/VWM/vwm/vwm_wndlist.c:89: undefined reference to `g_strfreev'
/home/user/VWM/vwm/vwm_wndlist.c:54: undefined reference to `viper_thread_leave'
/tmp/ccrc2yXA.o: In function `vwm_fmod_wndlist_ON_DESTROY':
/home/user/VWM/vwm/vwm_wndlist.c:111: undefined reference to `viper_thread_enter'
/home/user/VWM/vwm/vwm_wndlist.c:127: undefined reference to `viper_menu_destroy'
/home/user/VWM/vwm/vwm_wndlist.c:129: undefined reference to `viper_thread_leave'
/tmp/ccrc2yXA.o: In function `vwm_fmod_wndlist_ON_KEYSTROKE':
/home/user/VWM/vwm/vwm_wndlist.c:141: undefined reference to `viper_window_get_userptr'
/home/user/VWM/vwm/vwm_wndlist.c:151: undefined reference to `viper_thread_enter'
/home/user/VWM/vwm/vwm_wndlist.c:170: undefined reference to `viper_window_redraw'
/home/user/VWM/vwm/vwm_wndlist.c:171: undefined reference to `viper_thread_leave'
/home/user/VWM/vwm/vwm_wndlist.c:156: undefined reference to `current_item'
/home/user/VWM/vwm/vwm_wndlist.c:158: undefined reference to `viper_window_destroy'
/home/user/VWM/vwm/vwm_wndlist.c:166: undefined reference to `viper_thread_leave'
/home/user/VWM/vwm/vwm_wndlist.c:145: undefined reference to `menu_driver'
/home/user/VWM/vwm/vwm_wndlist.c:146: undefined reference to `getmouse'
/home/user/VWM/vwm/vwm_wndlist.c:151: undefined reference to `viper_thread_enter'
/home/user/VWM/vwm/vwm_wndlist.c:153: undefined reference to `menu_driver'
/home/user/VWM/vwm/vwm_wndlist.c:152: undefined reference to `menu_driver'
collect2: error: ld returned 1 exit status
make: *** [vwm] Error 1
双胞胎
安装 Twin
wget http://netcologne.dl.sourceforge.net/project/twin/twin/0.6.2/twin-0.6.2.tar.gz
tar -xvf twin-0.6.2.tar.gz
cd twin-0.6.2/
./configure
make
此时出现问题,终端输出如下:
make -C include
make[1]: Entering directory `/home/user/Twin/twin-0.6.2/include'
make autogen -C Tutf
make[2]: Entering directory `/home/user/Twin/twin-0.6.2/include/Tutf'
make[2]: Nothing to be done for `autogen'.
make[2]: Leaving directory `/home/user/Twin/twin-0.6.2/include/Tutf'
make autogen -C Tw
make[2]: Entering directory `/home/user/Twin/twin-0.6.2/include/Tw'
make[2]: Nothing to be done for `autogen'.
make[2]: Leaving directory `/home/user/Twin/twin-0.6.2/include/Tw'
make autogen -C TT
make[2]: Entering directory `/home/user/Twin/twin-0.6.2/include/TT'
make[2]: Nothing to be done for `autogen'.
make[2]: Leaving directory `/home/user/Twin/twin-0.6.2/include/TT'
make[1]: Leaving directory `/home/user/Twin/twin-0.6.2/include'
make -C docs
make[1]: Entering directory `/home/user/Twin/twin-0.6.2/docs'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/user/Twin/twin-0.6.2/docs'
make -C themes
make[1]: Entering directory `/home/user/Twin/twin-0.6.2/themes'
make -C hw_gfx
make[2]: Entering directory `/home/user/Twin/twin-0.6.2/themes/hw_gfx'
ln -f -s ShinyMetal_6x13.xpm default_6x13.xpm
ln -f -s absolute-e_8x16.xpm default_8x16.xpm
ln -f -s Ganymede_9x19.xpm default_9x19.xpm
make[2]: Leaving directory `/home/user/Twin/twin-0.6.2/themes/hw_gfx'
make[1]: Leaving directory `/home/user/Twin/twin-0.6.2/themes'
make -C libs
make[1]: Entering directory `/home/user/Twin/twin-0.6.2/libs'
make -C libTutf
make[2]: Entering directory `/home/user/Twin/twin-0.6.2/libs/libTutf'
gcc -D_REENTRANT -O2 -fomit-frame-pointer -fno-strict-aliasing -Wall -Wshadow -Wno-uninitialized -Wno-pointer-sign -D_GNU_SOURCE -I../../include -s ../../scripts/endianity.c -o ../../scripts/Endianity
../../scripts/Endianity > ../../include/Tw/endianity.h
gcc -D_REENTRANT -O2 -fomit-frame-pointer -fno-strict-aliasing -Wall -Wshadow -Wno-uninitialized -Wno-pointer-sign -D_GNU_SOURCE -I../../include -s ../../scripts/getsizes.c -o ../../scripts/Getsizes
../../scripts/Getsizes > ../../include/Tw/datasizes.h
gcc -D_REENTRANT -O2 -fomit-frame-pointer -fno-strict-aliasing -Wall -Wshadow -Wno-uninitialized -Wno-pointer-sign -D_GNU_SOURCE -I../../include -s ../../scripts/mkdep.c -o ../../scripts/Mkdep
cat ../../scripts/unitypes32.in > ../../include/Tw/uni_types.h
building ../../.hdepend
building ../../include/Tw/Twautoconf.h
/bin/bash ../../scripts/Configure.tty "../../" "../../" < /dev/null > /dev/null || \
/bin/sh ../../scripts/Configure.fallback "../../" "../../" < /dev/null > /dev/null
building .depend
building .modules
make[2]: Leaving directory `/home/user/Twin/twin-0.6.2/libs/libTutf'
make[2]: Entering directory `/home/user/Twin/twin-0.6.2/libs/libTutf'
.modules:1: *** missing separator. Stop.
make[2]: Leaving directory `/home/user/Twin/twin-0.6.2/libs/libTutf'
make[1]: *** [build-dir-libTutf] Error 2
make[1]: Leaving directory `/home/user/Twin/twin-0.6.2/libs'
make: *** [build-dir-libs] Error 2
答案1
双胞胎
Twin Windows Manager 可以在 14.04 中通过安装libtwin0
包进行安装。要完成安装,请按照以下命令操作:
sudo apt-get install libtwin0 multiarch-support libc6 libjpeg8 libpng12-0 libx11-6 zlib1g libtwin-dev gextractwinicons
在命令行中使用 Twin 的语法是:
twin [OPTION [...]]
您可以通过以下方式找到选项:
twin -h
您还可以阅读手册页文章。
答案2
双胞胎
这对我而言在 ubuntu 16.04 上有效:
git clone https://github.com/cosmos72/twin
cd twin
./configure
make
sudo make install
export LD_LIBRARY_PATH=/usr/local/lib
twin