Known Issues





Related Projects





Q. Why would you create a window manager for the console? Have you not heard of X?

A. Yes. I am very familiar with X. I use it everyday and love it! However, there are several reasons why you might want to use a tool like VWM:

  • Many servers do not run X because of the increased security risks of poorly tailored security policies. It is also a lot cheaper to deploy “head-less” systems.

  • Antique machines with older graphics cards may not run X well (386 & 486 machines with 256K or 512K video cards).

  • Having a password protected screensaver in case you forget to logout is nice (not yet implemented).

  • Opening many xterm/ssh sessions to the same remote system can get very confusing quickly. Instead, open one secure shell to the remote box and then open as many terminal shell instances as you need.

  • Many distributions support vesa framebuffer on the console. These video modes offer more than 80x25 columns/lines of resolution on a standard tty.

  • You want to create a menu-driven, console-based application, but you don't want to write an elaborate front-end.

Q. Why use VWM when there are other similar programs like Twin and Screen?

A. I respect both of these projects. If you must have absolute compatibility with your console applications, Screen may be a better choice for you. If you are looking for something that is easier to manage and doesn't require memorizing a lot of hotkey sequences, then VWM is probably better. As for Twin, it appears to be unkempt. The project seems to have gone stale as of the past few years. Also, IMHO, Twin began to dabble in X window management and became needlessly complicated. It also does not seem to play well with UTF encodings.

Q. How can I contribute to VWM?

A. There is plenty of room for improvement. If you have discovered a bug, please visit the Sourceforge page where this project is hosted and submit a bug using the bug tracking tool. If you are a developer, please feel free to send me a patch via email. Make sure to include a brief description of what the patch fixes or enhances. Code must be clean and well documented if the logic is not readily apparent. Please keep portability in mind and avoid system specific methods whenever possible.

Q. Can I run VWM inside of a VWM session?

A. Theoretically it is possible to run VWM inside of another instance of VWM using the Terminal Shell (ptyterm). However, each nested instance will need to have a unique hotkey configured for the menu.  Otherwise, the hotkey will be trapped by the “real” instance of VWM and so you will never be able to open the menu on the second session.

Q. Why does VWM use plus, minus, and other basic characters for line-art when other systems use the more fancy Alternate Character Set (ACS) graphics?

A. VWM relies on libviper and ncurses for drawing borders, corners, and various other line-art graphics. The behavior of these libraries depends heavily on environment settings and the locale configuration for your system. For more information see the manpages for locale and setlocale.

Q. Some programs won't start in ptyterm because the terminal does not have enough lines and columns. How can I fix this?

A. This normally happens when you are running VWM on a standard 80x25 tty console. Obviously, the ptyterm session has to be smaller than that to accommodate the window border and window controls. You need to increase the amount of screen real estate available to VWM. Here are several suggestions:

  • Run VWM inside of an xterm session.

  • Set vga=extended in your boot loader configuration to get 50 rows of text. Most likely you will also need to change your font in /etc/sysconfig/i18n

  • Use the vesa framebuffer option for your console (if it is available).

  • Change your console font to something like drdos8x8 in /etc/sysconfig/i18n. This will give you more columns on your screen.

  • If you are lucky enough to have an older card that supports 132-column mode, you might try that in combination with 50 row mode. I don't have one of these, but it would be fun to try.

My personal preference is to set my vesa framebuffer mode to 800x600 with 16bpp (vga=771). You can combine that with a console font like drdos8x8 and squeze quite a bit on to the screen while maintaining zippy performance.

Q. Some programs like Links and Midnight Commander won't run in color or they produce distorted line-art. Why does this happen?

A. These programs (and others) try to second-guess the terminal because they do not recognize the terminal type VWMTERM. Some programs offer ways to disable or override this “intelligence” but others do not.

Q. How can I compile VWM without mouse support?

A. Edit the Makefile and remove the reference to -D_VIPER_MOUSE_GPM. You will have to do this for both libviper and VWM. After you have removed these references, simply recompile both libviper and VMW (in that order).

Q. When VWM is run in xterm, I cannot see the windows movements during a window drag operation. Why is this?

A. Unfortunately, the mouse tracking facilities offered by ncurses under xterm are not as robust as those for the console. VWM relies on these facilities for those window dragging operations.

Q. How do I copy and past text from one VWM window to another?

A. If you are using a terminal like Gnome Terminal, you can use the integrated copy and paste features of that terminal. Unfortunately, there is no native support for copy and paste in VWM at the present time (Todo item).

Q. I installed XYZ plugin and now VWM runs really slow. What is wrong?

A. Although VWM appears to be a multi-threaded, multi-tasking environment--it is not. VWM mimics the feel of a multi-threaded in various way. Native applications can be driven by the VWM clock (such as Sysmon), use libpseudo (ptyterm), or threads. The latter method is the only reasonable choice when there is potential for executing code which may take some time to complete. It is likely the plugin you installed is monopolizing execution time.

Q. I want to create a plug-in which uses threads. Is VWM thread-safe?

A. Yes. Although VWM does not use threads, all the event handlers and message queues are protected by atomic locks. In order to ensure that your application behaves kindly, use viper_thread_enter() and viper_thread_leave() to protect those areas of your code where you will be reading and writing to the screen either either through ncurses or libviper.

Q. Does VWM work on FreeBSD and other Unix-like implementations?

A. Not yet.  There has been some intrestest from indifiduals in the FreeBSD community, but there is nothing yet. Patches on this are welcome.

Q. In the screenshots, mplayer is running in the terminal shell. How do I do this?

A. mplayer -quiet -framedrop -vo aa:driver=curses filename

Q. What applications have been tested with ptyterm?

A. Many applications have been tested with VWM and ptyterm. The list is too long to mention every one by name, but here are a few noteworthy programs:

Iptraf, myman, linux menuconfig, links, yum, mplayer with aalib, alsamixer, htop, wget, watch, xine with caca, lftp, giFTcurs, and rtorrent just to name a few.

Q. When I make a remote connection from VWM to another machine, ptyterm acts very bizarre. What is wrong?

A. The remote machine needs a terminfo description (vwmterm) installed in order for that system to transmit escape codes which are intelligible to ptyterm. The terminfo entry 'vwmterm' is automatically installed anytime you install ptyterm on a system.