GUI
General
- The Linux Graphics Stack - June 16, 2012
Startup
- fbsplash (formerly gensplash) is a userspace implementation of a splash screen for Linux systems. It provides a graphical environment during system boot using the Linux framebuffer layer.
Q: "I get a tty1 login before KDM pops up." A: "You could disable tty1. Comment out this line in /etc/inittab: c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux"
X
Xwindows drives the underlying graphical interface of most if not all Unix/Linux computers providing a GUI. It was developed in 1984 at MIT. After around 35 years of development, tweaking and adding of new hardware and ideas, it is generally acknowledged to be a bit of a beast. It should be remembered that the common configuration at time of development was a single mini running X providing individual views to Xterminals in a timesharing system. Nowadays the norm is X providing a single screen on a desktop or laptop.
All of this means that there are many ways of achieving the same thing and many slightly different things that can meet the same purpose. In modern X versions sometimes you can get away with limited or no configuration. In the last few years the boast is that X is self configuring. Certainly the best practice rule of thumb is less configuration is better - that is only configure what is wrong.
- http://en.wikipedia.org/wiki/X_Window_System_core_protocol
- http://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture
- http://en.wikipedia.org/wiki/X_Window_selection
Config
xrdb xset
Sessions
xrandr
xrandr -q show possible and current screen resolutions
- http://www.thinkwiki.org/wiki/Xorg_RandR_1.2
- http://en.wikipedia.org/wiki/RandR
- https://wiki.archlinux.org/index.php/Xrandr
xdpyinfo | grep 'dimensions:' show just current screen resolution in px and mm
Dualscreen
Multihead
- http://en.wikipedia.org/wiki/Xinerama
- http://sourceforge.net/projects/xinerama/
- http://tldp.org/HOWTO/Xinerama-HOWTO/intro.html
GUI
Utils
- devilspie
- telak is a program which displays pictures in root window. It can display content of local file, or download image via http. Telak can be configured to refetch picture every n seconds, so it can be used to display image from webcam.
Xnest
X Forwarding
- http://xpra.org/ - screen for x
Xrcp
Display Managers
X Display Manager is used to start a session from a local system or from another computer. The request and the start of the session is handled by the XDMCP, which stands for "X Display Manager Control Protocol" and is a network protocol. It provides a way of running the X-Terminal to run on your PC (or MAC) and it uses the X Server to provide a client/server interface between display hardware (the mouse, keyboard, and video displays) and the desktop environment while also providing both the windowing infrastructure and a standardized application interface (quoted from XFree86 Project home page)
- https://wiki.archlinux.org/index.php/Display_Manager
- http://en.wikipedia.org/wiki/X_display_manager_(program_type)
- http://tldp.org/HOWTO/XDMCP-HOWTO/index.html
- http://www.linuxjournal.com/article/6713
Sharing
Pointer
Backgrounds
VNC
Fonts
- http://www.x.org/wiki/guide/fonts/
- http://www.linuxdocs.org/HOWTOs/XWindow-User-HOWTO-7.html
- https://wiki.archlinux.org/index.php/Fonts
- https://wiki.archlinux.org/index.php/Font_Configuration
Some fonts like terminus-font are installed in /usr/share/fonts/local, which is not added to the font path by default. By adding the following lines to ~/.xinitrc, the fonts can be used in X11:
xset +fp /usr/share/fonts/local xset fp rehash
Input
xmodmap
xbindkeys
- http://www.nongnu.org/xbindkeys/
- https://wiki.archlinux.org/index.php/Xbindkeys
- http://linux.die.net/man/1/xbindkeys
~/.xbindkeysrc
sxhkd
~/.config/sxhkd/sxhkdrc
other
- http://www.x.org/wiki/Development/Documentation/MPX/
- https://wiki.archlinux.org/index.php/Multi-pointer_X
Cursor
xsetroot -cursor_name left_ptr
freedesktop.org
ewmh
- http://en.wikipedia.org/wiki/Extended_Window_Manager_Hints
- http://standards.freedesktop.org/wm-spec/wm-spec-latest.html
Compositing
Older
Compton
- Compton - "I was frustrated by the low amount of standalone lightweight compositors. Compton was forked from Dana Jansens' fork of xcompmgr and refactored. I fixed whatever bug I found, and added features I wanted. Things seem stable, but don't quote me on it. I will most likely be actively working on this until I get the features I want. This is also a learning experience for me. That is, I'm partially doing this out of a desire to learn Xlib."
Unagi
Window Managers
- Box-Look.org - Stuff for your Windowmanager
- http://en.wikipedia.org/wiki/Comparison_of_X_window_managers
- https://wiki.archlinux.org/index.php/Comparison_of_Tiling_Window_Managers
- http://sawfish.wikia.com/wiki/Comparison_of_extensible_window_managers
Window Maker
Blackbox
Fluxbox
- http://fluxbox.org/ - blackbox fork
Openbox
Enlightenment
- Enlightenment is not just a window manager for Linux/X11 and others, but also a whole suite of libraries to help you create beautiful user interfaces with much less work than doing it the old fashioned way and fighting with traditional toolkits, not to mention a traditional window manager. It covers uses from small mobile devices like phones all the way to powerful multi-core desktops (which are the primary development environment).
- http://en.wikipedia.org/wiki/Enlightenment_(window_manager)
- https://wiki.archlinux.org/index.php/Enlightenment
- http://en.wikibooks.org/wiki/The_Unofficial_Enlightenment_User's_Manual
- http://www.h-online.com/open/features/Seeking-Enlightenment-1739812.html?view=print
- http://linuxlibrary.org/enlightenment-17-e17-complete-desktop-review/
xmonad
- xmonad is a dynamically tiling X11 window manager that is written and configured in Haskell. In a normal WM, you spend half your time aligning and searching for windows. xmonad makes work easier, by automating this.
- http://www.youtube.com/watch?v=AyNkBLhIpQk&hd=1 - example vid
Config
- XMonad.Doc.Configuring
- template config
- http://www.linuxandlife.com/2011/11/how-to-configure-xmonad-arch-linux.html
cabal --recompile after changing ~/.xmonad/xmonad.hs
Utils
dzen
xmobar
taffybar
Hotkeys
mod shift enter start terminal mod shift c close current window mod w reload xmonad mod space rotate through window layouts mod shift space reset to workspace default mod tab tab through windows super 2 switch to workspace 2
Awesome
- http://awesome.naquadah.org/
- https://wiki.archlinux.org/index.php/Awesome
- http://git.naquadah.org/?p=awesome.git;a=shortlog;h=HEAD
Config
echo 'naughty.notify({ text = "hello from tty" })' | awesome-client
debug rc.lua changes;
Xephyr :1 -ac -br -noreset -screen 1152x720 & DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new
If xdg/awesome default config loads instead of .config/awesome, this is due to error in the rc.lua.
Usage
[mod]-Enter new terminal window [mod]-c close window [mod]-j rotate window selection clockwise [mod]-k rotate window selection anticlockwise [mod]-J move active window clockwise [mod]-K move active window anticlockwise [mod]-f fullscreen active window [mod]-a create new tag [mod]-s rename active tag
[mod]-shift-r reload awesome (to resource config)
Multihead
Wibox
- comp.window-managers.awesome: Re: Multiple row wibox
Widgets
Colours
The color format in awesome is either a standard X color name (blue, darkblue, lightred, etc) or a hexadecimal formatted color (#rrggbb or #rrggbbaa). By using the hexadecimal format, you can also specify an alpha channel: that means that #00ff00 will draw pure green, but #00ff00aa will set the alpha channel to ‘aa’ and will blend the green with the color under it.
Text format
You can use Pango markup in a text string. This allows formating the text rendered inside widgets. Pango markup documentation can be found in the Pango documentation at http://library.gnome.org/devel/pango/stable/PangoMarkupFormat.html.
A Pango markup example: ….
Shifty
- http://awesome.naquadah.org/wiki/Shifty
- https://github.com/bioe007/awesome-shifty/tree/2.0
- https://bbs.archlinux.org/viewtopic.php?id=124725
- http://aur.archlinux.org/packages.php?ID=32463
- http://git.naquadah.org/?p=awesome.git;a=summary
Revelation
Expose-like client selection.
MPD
Other
- http://awesome.naquadah.org/wiki/Modal_Keybindings
- http://awesome.naquadah.org/wiki/Run_or_raise
- https://github.com/terceiro/awesome-freedesktop
- http://awesome.naquadah.org/wiki/ShutdownDialog
3.5
i3
based on wmii
Notion
bspwm
- https://github.com/baskerville/bspwm bspwm is a tiling window manager where each window is represented as the leaf of a binary tree. It is controlled and configured via bspc. bspwm have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket. Its configuration file is $XDG_CONFIG_HOME/bspwm/autostart. Keyboard and pointer bindings are defined through sxhkd. Example configuration files can be found in the examples directory.
Very slick and atomic.
.config/bspwm/autostart
bspc set focused_border_color '#ff0000' bspc set border_width '3px' bspc set window_gap 0 bspc set focus_follows_pointer true
Sawfish
- Sawfish is an extensible window manager using a Lisp-based scripting language. Its policy is very minimal compared to most window managers. Its aim is simply to manage windows in the most flexible and attractive manner possible. All high-level WM functions are implemented in Lisp for future extensibility or redefinition. what i wanted when using litestep
Xfce
twm
fvwm
dwm
wmii
herbstluftwm
- herbstluftwm is a manual tiling window manager for X11 using Xlib and Glib.
other tiling
- Monsterwm is a minimal, lightweight, tiny but monstrous dynamic tiling window manager. It will try to stay as small as possible. Currently under 700 lines with the config file included. It provides a set of four different layout modes (vertical stack, bottom stack, grid and monocle/fullscreen) by default, and has floating mode support. Each virtual desktop has its own properties, unaffected by other desktops' settings. Finally monsterwm supports multiple monitors setups.
- TTWM is a minimal tiling window manager combining concepts or elements from TinyWM, DWM, and i3wm. Inspiration has also been drawn from other great tilers like MonserWM. TinyTiler is currently under 650 lines of code. In contrast to other tilers, TinyTiler does not have modes nor does have window rules. TinyTiler has only two layouts: right stack and bottom stack. These choices were by design. TinyTiler instead provides two screen sections, the master and the stack. In TinyTiler only one stack window is visibile at a time, the others have tabs in the statusbar.
- spectrwm is a small dynamic tiling window manager for X11. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and does not require one to learn a language to do any configuration. It was written by hackers for hackers and it strives to be small, compact and fast. It was largely inspired by xmonad and dwm.
- Qtile is a full-featured, hackable tiling window manager written in Python.
- nwm - A dynamic window manager for X11 written with Node.js
- Bluetile is a tiling window manager for Linux, designed to integrate with the GNOME desktop environment. It provides both a traditional, stacking layout mode as well as tiling layouts where windows are arranged to use the entire screen without overlapping. Bluetile tries to make the tiling paradigm easily accessible to users coming from traditional window managers by drawing on known conventions and providing both mouse and keyboard access for all features. based on Xmonad
- shellshape is a gnome-shell (Gnome 3) extension that adds smart and user-friendly tiling window features to your gnome desktop, inspired by bluetile.
- Piwm is a very small window manager written in Bash. Following are the 5 task it performs : 1) Ctrl + t : Opens xterm, 2) Ctrl + f : Makes current window full screen, 3) Alt + Mouseleft : Moves the window, 4) Alt + Mouseright : Rescales the window, 5) Ctrl + F1 : Refocus the window
- subtle is a manual tiling window manager with a rather uncommon approach of tiling: Instead of relying on predefined layouts, subtle divides the screen into a grid with customizeable slots (called gravities). For better understanding, the default config uses a 3x3 grid and maps each gravity to one key of the numpad. With those keys, windows can be moved directly to the desired gravity - the same can be done with tagging rules in the config. Another unique concept is the strict tagging: Unlike other tiling window managers, subtle doesn't allow weak tagging and always maps windows to virtual desktops (called views) with matching tags, regardless of the current active view.
other
Desktop environment
- http://en.wikipedia.org/wiki/Desktop_environment
- https://wiki.archlinux.org/index.php/Desktop_Environment
as DEs are fairly tightly integrated, a full DE install is required for proper running and configuration of their component apps
GNOME
Consort
- https://wiki.archlinux.org/index.php/Consort - fork of gnome classic
MATE
KDE
- http://en.wikipedia.org/wiki/KDE_Plasma_Workspaces
- http://plasma-active.org/ - kde related for tablet
LXDE
ROX
- ROX is a fast, user friendly desktop which makes extensive use of drag-and-drop. The interface revolves around the file manager, or filer, following the traditional Unix view that `everything is a file' rather than trying to hide the filesystem beneath start menus, wizards, or druids. The aim is to make a system that is well designed and clearly presented. The ROX style favours using several small programs together instead of creating all-in-one mega-applications.
Sugar
other
- https://github.com/Lerc/notanos - html5/js
System GUI
Panel / Taskbar
- https://code.google.com/p/bmpanel2/ - fork of fbpanel
- https://github.com/LemonBoy/bar - bar-aint-recursive
- https://bitbucket.org/consortdesktop/consort-panel - fork of gnome (classic) panel
- http://kde-apps.org/content/show.php/Smooth+Tasks+2?content=148813
- https://bitbucket.org/flupp/smooth-tasks-fork/overview
System tray
Launchers
- https://wiki.archlinux.org/index.php/Gmrun
- like lsxcommand
- dmenu
- https://wiki.archlinux.org/index.php/Dmenu
- https://aur.archlinux.org/packages.php?ID=59497 [4]
- patches for height, font, etc.
- http://dmwit.com/yeganesh/
- haskell wrapper for dmenu
- remembers used commands and gives them selection weight
- no height mod
- interrobang - A tiny launcher menu packing a big bang (syntax)
- Kupfer is an interface for quick and convenient access to applications and their documents. The most typical use is to find a specific application and launch it. We have tried to make Kupfer easy to extend with plugins so that this quick-access paradigm can be extended to many more objects than just applications.
- Services menu is an application that helps the user perform actions on text in other programs. The user simply selects some text and launches Services — for example, by keyboard shortcut or clicking the fourth mouse button. A menu pops up letting the user edit the text and select desired operation, such as open a browser window searching for the text in Google.
Task switcher
Virtual desktop pagers
- https://en.wikipedia.org/wiki/Virtual_desktop - aka workspaces
- https://en.wikipedia.org/wiki/Pager_(GUI)
Infos
Conky
- Conky is a free, light-weight system monitor for X, that displays any information on your desktop. Conky is licensed under the GPL and runs on Linux and BSD.
Other
- inxi - A newer, better system information script for irc, administration, and system troubleshooters.
Notifications
On Screen Display
- NotificaThor - Themeable On Screen Displays for X.
- ghosd -- on-screen display (osd) with transparency
Volume
- https://code.google.com/p/volume-applet - keeps disappearing?
other
- gnome2-globalmenu - Global Menu Bar for GNOME, like Apples. Gnome 3 in dev.
- fsv (pronounced eff-ess-vee) is a file system visualizer in cyberspace. It lays out files and directories in three dimensions, geometrically representing the file system hierarchy to allow visual overview and analysis. fsv can visualize a modest home directory, a workstation's hard drive, or any arbitrarily large collection of files, limited only by the host computer's memory and graphics hardware. "i know this!"
- http://fedorchenko.net/fsv2.php - gtk2 port
Tiling
For non tiling WMs
- https://github.com/TheWanderer/stiler
- http://sourceforge.net/projects/pytyle/
- http://wumwum.sourceforge.net/
Screensaver and locks
- XScreenSaver is the standard screen saver collection shipped on most Linux and Unix systems running the X11 Window System. I released the first version in 1992. I ported it to MacOS X in 2006, and to iOS in 2012. On X11 systems, XScreenSaver is two things: it is both a large collection of screen savers; and it is also the framework for blanking and locking the screen.
Monitor
xset dpms force standby xset -dpms turn off power saving xset +dpms turn on power saving xset s off then off screensaver
Screenshot
import -window root Pictures/Image5.png imagemagick
Colour
Widget toolkits
- http://en.wikipedia.org/wiki/List_of_widget_toolkits
- http://en.wikipedia.org/wiki/Template:Widget_toolkits
GTK+
Used by GNOME
GTK2 theming
Tools
- Zenity is a tool that allows you to display Gtk+ dialog boxes from the command line and through shell scripts. It is similar to gdialog, but is intended to be saner. It comes from the same family as dialog, Xdialog, and cdialog, but it surpasses those projects by having a cooler name.
- GtkOrphan (a Perl/Gtk2 application for debian systems) is a graphical tool which analyzes the status of your installations, looking for orphaned libraries. It implements a GUI front-end for deborphan, adding the package-removal capability.
GTK3 theming
Clutter
Qt
qtconfig qt4