https://wiki.archlinux.org/api.php?action=feedcontributions&user=Nixpunk&feedformat=atomArchWiki - User contributions [en]2024-03-28T17:58:10ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=List_of_applications/Utilities&diff=581508List of applications/Utilities2019-09-05T14:24:46Z<p>Nixpunk: /* Terminal emulators */ removed unnecessary article for consistency sake.</p>
<hr />
<div><noinclude><br />
[[Category:Applications]]<br />
[[Category:Lists of software]]<br />
[[es:List of applications/Utilities]]<br />
[[it:List of applications/Utilities]]<br />
[[ja:アプリケーション一覧/ユーティリティ]]<br />
[[ru:List of applications/Utilities]]<br />
[[zh-hans:List of applications/Utilities]]<br />
[[zh-hant:List of applications/Utilities]]<br />
{{List of applications navigation}}<br />
</noinclude><br />
== Utilities ==<br />
<br />
=== Terminal ===<br />
<br />
==== Command shells ====<br />
<br />
See the main article: [[Command-line shell]].<br />
<br />
See also [[Wikipedia:Comparison of command shells]].<br />
<br />
==== Terminal emulators ====<br />
<br />
Terminal emulators show a GUI Window that contains a terminal. Most emulate Xterm, which in turn emulates VT102, which emulates typewriter. For further background information, see [[Wikipedia:Terminal emulator]].<br />
<br />
For a comprehensive list, see [[Wikipedia:List of terminal emulators]].<br />
<br />
* {{App|Alacritty|A cross-platform, GPU-accelerated terminal emulator.|https://github.com/jwilm/alacritty|{{Pkg|alacritty}}}}<br />
* {{App|aterm|Xterm replacement with transparency support. It has been deprecated in favour of urxvt since 2008.|http://aterm.sourceforge.net/|{{AUR|aterm}}}}<br />
* {{App|Cool Retro Term|A good looking terminal emulator which mimics the old cathode display.|https://github.com/Swordfish90/cool-retro-term|{{Pkg|cool-retro-term}}}}<br />
* {{App|Eterm|Terminal emulator intended as a replacement for xterm and designed for the [[Enlightenment]] desktop.|http://eterm.org{{Dead link|2018|01|17}}|{{AUR|eterm}}}}<br />
* {{App|Gate One|Web-based terminal emulator and SSH client.|https://github.com/liftoff/GateOne|{{AUR|gateone-git}}{{Broken package link|package not found}}}}<br />
* {{App|Hyper|A terminal with JS/CSS support.|https://github.com/zeit/hyper|{{AUR|hyper}}}}<br />
* {{App|[[Wikipedia:Konsole|Konsole]]|Terminal emulator included in the [[KDE]] desktop.|https://www.kde.org/applications/system/konsole/|{{Pkg|konsole}}}}<br />
* {{App|[[kitty]]|A modern, hackable, featureful, OpenGL based terminal emulator|https://github.com/kovidgoyal/kitty|{{Pkg|kitty}}}}<br />
* {{App|mlterm|A multi-lingual terminal emulator supporting various character sets and encodings in the world.|https://sourceforge.net/projects/mlterm/|{{AUR|mlterm}}}}<br />
* {{App|[[PuTTY]]|Highly configurable ssh/telnet/serial console program.|https://www.chiark.greenend.org.uk/~sgtatham/putty/|{{Pkg|putty}}}}<br />
* {{App|QTerminal|Lightweight Qt-based terminal emulator.|https://github.com/qterminal/qterminal|{{Pkg|qterminal}}}}<br />
* {{App|[[Wikipedia:Rxvt|rxvt]]|Popular replacement for xterm.|http://rxvt.sourceforge.net/|{{AUR|rxvt}}}}<br />
* {{App|shellinabox|A web-based SSH Terminal|https://github.com/shellinabox/shellinabox|{{AUR|shellinabox-git}}}}<br />
* {{App|[[st]]|Simple terminal implementation for X.|http://st.suckless.org|{{AUR|st}}}}<br />
* {{App|Terminology|Terminal emulator by the Enlightenment project team with innovative features: file thumbnails and media play like a media player.|https://www.enlightenment.org/about-terminology|{{Pkg|terminology}}}}<br />
* {{App|[[urxvt]]|Highly extendable (with Perl) unicode enabled rxvt-clone terminal emulator featuring tabbing, url launching, a Quake style drop-down mode and pseudo-transparency.|http://software.schmorp.de/pkg/rxvt-unicode.html|{{Pkg|rxvt-unicode}}}}<br />
* {{App|[[xterm]]|Simple terminal emulator for the X Window System. It provides DEC VT102 and Tektronix 4014 compatible terminals for programs that can't use the window system directly.|http://invisible-island.net/xterm/|{{Pkg|xterm}}}}<br />
* {{App|[[Yakuake]]|Drop-down terminal (Quake style) emulator based on Konsole.|https://yakuake.kde.org/|{{Pkg|yakuake}}}}<br />
<br />
===== VTE-based =====<br />
<br />
[https://developer.gnome.org/vte/unstable/ VTE] (Virtual Terminal Emulator) is a widget developed during early GNOME days for use in the GNOME Terminal. It has since given birth to many terminals with similar capabilities.<br />
<br />
* {{App|Deepin Terminal|Terminal emulation application for Deepin desktop.|https://www.deepin.org/en/original/deepin-terminal/|{{Pkg|deepin-terminal}}}}<br />
* {{App|evilvte|Very lightweight and highly customizable terminal emulator with support for tabs, auto-hiding and different encodings.|http://calno.com/evilvte/|{{AUR|evilvte-git}}}}<br />
* {{App|Germinal|Minimalist terminal emulator which provides a borderless maximized terminal, attached to a tmux session by default, hence providing tabs and panels.|http://www.imagination-land.org/tags/germinal.html|{{AUR|germinal}}}}<br />
* {{App|[[Wikipedia:GNOME Terminal|GNOME Terminal]]|A terminal emulator included in the [[GNOME]] desktop with support for Unicode and pseudo-transparency.|https://wiki.gnome.org/Apps/Terminal|{{Pkg|gnome-terminal}}}}<br />
* {{App|[[Guake]]|Drop-down terminal for the GNOME desktop.|http://guake-project.org/|{{Pkg|guake}}}}<br />
* {{App|LXTerminal|Desktop independent terminal emulator for [[LXDE]].|https://wiki.lxde.org/en/LXTerminal|{{Pkg|lxterminal}}}}<br />
* {{App|MATE terminal|A fork of [[Wikipedia:GNOME terminal]] for the [[MATE]] desktop.|http://www.mate-desktop.org/|{{Pkg|mate-terminal}}}}<br />
* {{App|Pantheon Terminal|A super lightweight, beautiful, and simple terminal emulator. It's designed to be setup with sane defaults and little to no configuration.|https://github.com/elementary/terminal|{{Pkg|pantheon-terminal}}}}<br />
* {{App|ROXTerm|Tabbed terminal emulator with a small footprint.|http://roxterm.sourceforge.net/|{{AUR|roxterm}}}}<br />
* {{App|sakura|Terminal emulator based on GTK and VTE.|http://www.pleyades.net/david/projects/sakura|{{Pkg|sakura}}}}<br />
* {{App|[[Terminator]]|Terminal emulator supporting multiple resizable terminal panels.|https://gnometerminator.blogspot.com/|{{Pkg|terminator}}}}<br />
* {{App|[[Termite]]|Keyboard-centric VTE-based terminal, aimed at use within a window manager with tiling and/or tabbing support.|https://github.com/thestinger/termite|{{Pkg|termite}}}}<br />
* {{App|[[Tilda]]|Configurable drop down terminal emulator.|https://github.com/lanoxx/tilda/|{{Pkg|tilda}}}}<br />
* {{App|Tilix|Tiling terminal emulator for GNOME.|https://gnunn1.github.io/tilix-web/|{{Pkg|tilix}}}}<br />
* {{App|tinyterm|Very lightweight terminal emulator based on VTE.|https://github.com/lahwaacz/tinyterm|{{AUR|tinyterm-git}}}}<br />
* {{App|[[Wikipedia:Terminal (Xfce)|Xfce Terminal]]|Terminal emulator included in the [[Xfce]] desktop with support for a colorized prompt and a tabbed interface.|https://docs.xfce.org/apps/terminal/start|{{Pkg|xfce4-terminal}}}}<br />
<br />
===== KMS-based =====<br />
<br />
The following terminal emulators are based on the [[kernel mode setting]] that could be invoked without X.<br />
* {{App|[[KMSCON]]|A KMS/DRM-based system console(getty) with an integrated terminal emulator for Linux operating systems.|https://github.com/dvdhrm/kmscon|{{Pkg|kmscon}}}}<br />
<br />
===== framebuffer-based =====<br />
<br />
In the GNU/Linux world, the [[Wikipedia:Framebuffer|framebuffer]] can refer to a virtual device in the Linux kernel ('''fbdev''') or the virtual framebuffer system for X ('''xvfb'''). This section mainly lists the terminal emulators based on the in-kernel virtual device, i.e. '''fbdev'''.<br />
<br />
* {{App|yaft|A simple terminal emulator for living without X, with UCS2 glyphs, wallpaper and 256color support.|https://github.com/uobikiemukot/yaft|{{aur|yaft}}}}<br />
<br />
==== Terminal pagers ====<br />
<br />
See also [[Wikipedia:Terminal pager]].<br />
<br />
* {{App|[[Wikipedia:More_(command)|more]]|A simple and feature-light pager. It is a part of util-linux.|https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/about/|{{Pkg|util-linux}}}}<br />
* {{App|[[Core_utilities#Essentials|less]]|A program similar to more, but with support for both forward and backward scrolling, as well as partial loading of files.|https://www.gnu.org/software/less/|{{Pkg|less}}}}<br />
* {{App|[[Wikipedia:Most_(Unix)|most]]|A pager with support for multiple windows, left and right scrolling, and built-in colour support|http://www.jedsoft.org/most/|{{Pkg|most}}}}<br />
* {{App|mcview|A pager with mouse and colour support. It is bundled with midnight commander.|http://midnight-commander.org/|{{Pkg|mc}}}}<br />
* [[Vim]] can [[Vim#Vim as a pager|also be used as a pager]].<br />
<br />
==== Terminal multiplexers ====<br />
<br />
See also [[Wikipedia:Terminal multiplexer]].<br />
<br />
* {{App|abduco|Tool for session attach and detach support which allows a process to run independently from its controlling terminal.|http://www.brain-dump.org/projects/abduco/|{{Pkg|abduco}}}}<br />
* {{App|[[Wikipedia:Byobu (software)|byobu]]|An GPLv3 licensed addon for tmux or screen. It requires a terminal multiplexer installed.|http://byobu.co/|{{AUR|byobu}}}}<br />
* {{App|[[dtach]]|Program that emulates the detach feature of [[GNU Screen]].|http://dtach.sourceforge.net/|{{AUR|dtach}}}}<br />
* {{App|dvtm|[[dwm]]-style window manager in the console.|http://brain-dump.org/projects/dvtm/|{{Pkg|dvtm}}}}<br />
* {{App|[[GNU Screen]]|Full-screen window manager that multiplexes a physical terminal.|https://www.gnu.org/software/screen/|{{Pkg|screen}}}}<br />
* {{App|mtm|Simple terminal multiplexer with just four commands: change focus, split, close, and screen redraw.|https://github.com/deadpixi/mtm|{{AUR|mtm-git}}}}<br />
* {{App|[[tmux]]|BSD licensed terminal multiplexer.|https://tmux.github.io/|{{Pkg|tmux}}}}<br />
<br />
=== Files ===<br />
<br />
==== File managers ====<br />
<br />
See also [[Wikipedia:Comparison of file managers]].<br />
<br />
===== Console =====<br />
<br />
* {{App|Clex|File manager with full-screen user interface|http://www.clex.sk/|{{Aur|clex}}}}<br />
* {{App|ded|directory editor, file manager similar to Emacs dired|http://invisible-island.net/ded/ded.html|{{AUR|ded}}}}<br />
* {{App|[[Wikipedia:Dired|Dired]]|Directory editor integrated with [[Emacs]].|https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html|{{pkg|emacs}}}}<br />
* {{App|Last File Manager|Powerful file manager written in Python 3 with a curses interface.|https://inigo.katxi.org/devel/lfm/|{{AUR|lfm}}}}<br />
* {{App|lf|Terminal file manager written in Go using server/client architecture.|https://github.com/gokcehan/lf|{{aur|lf-git}}}}<br />
* {{App|[[Midnight Commander]]|Console-based, dual-paneled file manager.|http://www.midnight-commander.org|{{Pkg|mc}}}}<br />
* {{App|nffm|"Nothing Fancy File Manager", a mouseless ncurses file manager written in C.|https://github.com/mariostg/nffm|{{AUR|nffm-git}}}}<br />
* {{App|[[nnn]]|Tiny, lightning fast, feature-packed file manager.|https://github.com/jarun/nnn|{{Pkg|nnn}}}}<br />
* {{App|fff|A simple file manager written in Bash.|https://github.com/dylanaraps/fff|{{Pkg|fff}}}}<br />
* {{App|Pilot|File manager that comes with the [[Alpine]] email client.|https://www.washington.edu/alpine/|{{AUR|alpine-git}}}}<br />
* {{App|[[Ranger]]|Console-based file manager with vi bindings, customizability, and lots of features.|https://ranger.github.io/|{{Pkg|ranger}}}}<br />
* {{App|[[Vifm]]|Ncurses-based two-panel file manager with vi-like keybindings.|http://vifm.info|{{Pkg|vifm}}}}<br />
<br />
===== Graphical =====<br />
<br />
* {{App|Caja|The file manager for the MATE desktop.|https://github.com/mate-desktop/caja|{{Pkg|caja}}}}<br />
* {{App|Deepin File Manager|File manager developed for [[Deepin]].|https://www.deepin.org/en/original/dde-file-manager/|{{Pkg|deepin-file-manager}}}}<br />
* {{App|[[Dolphin]]|File manager included in the KDE desktop.|https://userbase.kde.org/Dolphin|{{Pkg|dolphin}}}}<br />
* {{App|Gentoo|A lightweight file manager for GTK.|https://sourceforge.net/projects/gentoo/|{{AUR|gentoo}}}}<br />
* {{App|[[GNOME Files]]|Extensible, heavyweight file manager used by default in GNOME with support for custom scripts.|https://wiki.gnome.org/Apps/Files|{{Pkg|nautilus}}}}<br />
* {{App|[[Wikipedia:Konqueror|Konqueror]]|File manager and web browser for the KDE desktop.|https://konqueror.org/|{{Pkg|konqueror}}}}<br />
* {{App|Liri Files|The file manager for Liri.|https://github.com/lirios/files|{{Pkg|liri-files}}}}<br />
* {{App|[[Nemo]]|Nemo is the file manager of the Cinnamon desktop. A fork of Nautilus.|http://cinnamon.linuxmint.com/|{{Pkg|nemo}}}}<br />
* {{App|Pantheon Files|File browser designed for elementary OS.|https://github.com/elementary/files|{{Pkg|pantheon-files}}}}<br />
* {{App|PathFinder|File browser that comes with the [[Wikipedia:Fox_toolkit|FOX toolkit]].|http://fox-toolkit.org/|{{Pkg|fox}}}}<br />
* {{App|[[PCManFM]]|Very fast and lightweight file manager which can also optionally manage the desktop icons and background.|https://wiki.lxde.org/en/PCManFM|{{Pkg|pcmanfm}}}}<br />
* {{App|qtFM|Small, lightweight filemanager for Linux desktops based on pure Qt.|http://www.qtfm.eu/|{{AUR|qtfm}}}}<br />
* {{App|ROX|Small and fast file manager which can optionally manage the desktop background and panels.|http://rox.sourceforge.net|{{Pkg|rox}}}}<br />
* {{App|[[Thunar]]|File manager that can be run as a daemon with excellent start up and directory load times.|http://docs.xfce.org/xfce/thunar/start|{{Pkg|thunar}}}}<br />
<br />
====== Twin-panel ======<br />
<br />
Note that some of these twin-panel file managers can also be set to have only one pane.<br />
<br />
* {{App|Double Commander|File manager with two panels side by side. It is inspired by Total Commander and features some new ideas.|http://doublecmd.sourceforge.net//|GTK: {{Pkg|doublecmd-gtk2}}, Qt5: {{Pkg|doublecmd-qt5}}}}<br />
* {{App|[[Wikipedia:emelFM2|emelFM2]]|File manager that implements the popular two-panel design.|http://emelfm2.net/|{{Pkg|emelfm2}}}}<br />
* {{App|[[Wikipedia:GNOME Commander|GNOME Commander]]|A dual-paned file manager for the GNOME Desktop.|https://gcmd.github.io/|{{AUR|gnome-commander}}}}<br />
* {{App|[[Wikipedia:Krusader|Krusader]]|Advanced twin panel (Midnight Commander style) file manager for the KDE desktop.|http://www.krusader.org/|{{Pkg|krusader}}}}<br />
* {{App|muCommander|A lightweight, cross-platform file manager with a dual-pane interface written in Java.|http://www.mucommander.com/|{{AUR|mucommander}}}}<br />
* {{App|[[SpaceFM]]|GTK multi-panel tabbed file manager.|http://ignorantguru.github.com/spacefm/|{{AUR|spacefm}}}}<br />
* {{App|Sunflower|Small and highly customizable twin-panel file manager for Linux with support for plugins.|http://sunflower-fm.org/|{{AUR|sunflower}}}}<br />
* {{App|trolCommander|Lightweight, dual-pane file manager written in Java. Fork of muCommander.|https://github.com/trol73/mucommander|{{AUR|trolcommander}}}}<br />
* {{App|Tux Commander|Windowed file manager with two panels side by side similar to popular Total Commander or Midnight Commander file managers.|http://tuxcmd.sourceforge.net/description.php|{{Pkg|tuxcmd}}}}<br />
* {{App|Worker|Fast, lightweight and feature-rich file manager for the X Window System.|http://www.boomerangsworld.de/worker/|{{AUR|worker}}}}<br />
* {{App|[[Wikipedia:Xfe|Xfe]]|Microsoft Explorer-like file manager for X (X File Explorer).|http://roland65.free.fr/xfe/|{{AUR|xfe}}}}<br />
<br />
==== Trash management ====<br />
<br />
* {{App|trash-cli|A command-line interface implementing [https://specifications.freedesktop.org/trash-spec/trashspec-latest.html FreeDesktop.org's Trash specification].|https://github.com/andreafrancia/trash-cli|{{Pkg|trash-cli}}}}<br />
<br />
==== File synchronization ====<br />
<br />
{{Merge|Synchronization and backup programs#Data synchronization|There's a dedicated article.}}<br />
<br />
See also [[Synchronization and backup programs#Data synchronization]] and [[Wikipedia:Comparison of file synchronization software]].<br />
<br />
* {{App|[[Wikipedia:DirSync Pro|DirSync Pro]]|Small, but powerful utility for file and folder synchronization.|https://dirsyncpro.org/|{{AUR|dirsyncpro}}}}<br />
* {{App|[[Wikipedia:FreeFileSync|FreeFileSync]]|Folder comparison and synchronization software that creates and manages backup copies of all your important files.|https://www.freefilesync.org/|{{AUR|freefilesync}}}}<br />
* {{App|[[Wikipedia:git-annex|git-annex]]|Manage files with git, without checking the file contents into git.|https://git-annex.branchable.com/|{{Pkg|git-annex}}}}<br />
* {{App|hsync|Command line program to sync only those files that have been renamed/moved but otherwise unchanged. It works by issuing simple move operations at the destination without actually transferring the files, and is meant to be used in conjunction with other synchronization programs that lack this capability.|https://ambrevar.bitbucket.io/hsync/|{{AUR|hsync}}}}<br />
* {{App|rclone|Command line program to sync files and directories to and from Amazon S3, Dropbox, Google Drive, Microsoft OneDrive, Yandex Disk and many other cloud storage services as well as between local paths.|https://rclone.org/|{{Pkg|rclone}}}}<br />
* {{App|[[rsync]]|File transfer program that uses the "rsync algorithm" which provides a very fast method for bringing remote files into sync. It does this by sending just the differences in the files across the link, without requiring that both sets of files are present at one of the ends of the link beforehand.|https://rsync.samba.org/|{{Pkg|rsync}}}}<br />
* {{App|[[Wikipedia:SparkleShare|SparkleShare]]|File sharing and collaboration application written in C#. It can sync with any Git server over SSH.|http://sparkleshare.org/|{{Pkg|sparkleshare}}}}<br />
* {{App|[[Syncthing]]|Continuous file synchronization program. It synchronizes files between two or more computers in a simple way without advanced configuration.|https://syncthing.net/|Web: {{Pkg|syncthing}}, GTK: {{Pkg|syncthing-gtk}}}}<br />
* {{App|Syncany|Cloud storage and filesharing application with a focus on security and abstraction of storage.|https://www.syncany.org/|{{AUR|syncany}}}}<br />
* {{App|[[Wikipedia:Synkron|Synkron]]|Application that helps you keep your files and folders always updated. You can easily sync your documents, music or pictures to have their latest versions everywhere.|http://synkron.sourceforge.net/|{{AUR|synkron}}}}<br />
* {{App|[[Unison]]|File synchronization tool that allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other.|https://www.cis.upenn.edu/~bcpierce/unison/|{{Pkg|unison}}}}<br />
<br />
==== Archiving and compression tools ====<br />
<br />
For archiving and compression command-line tools, see [[Archiving and compression]].<br />
<br />
===== Archive managers =====<br />
<br />
* {{App|[[Wikipedia:Ark (software)|Ark]]|Archiving tool included in the KDE desktop.|https://www.kde.org/applications/utilities/ark/|{{Pkg|ark}}}}<br />
* {{App|Engrampa|Archive manager for [[MATE]]|https://github.com/mate-desktop/engrampa|{{Pkg|engrampa}}}}<br />
* {{App|[[Wikipedia:GNOME Archive Manager|GNOME Archive Manager]]|Archive manager included in the GNOME desktop (previously File Roller).|https://wiki.gnome.org/Apps/FileRoller|{{Pkg|file-roller}}}}<br />
* {{App|p7zip-gui|The GUI belonging to the p7zip software.|http://p7zip.sourceforge.net/|{{AUR|p7zip-gui}}}}<br />
* {{App|[[Wikipedia:PeaZip|PeaZip]]|Open source file and archive manager.|http://www.peazip.org/peazip-linux.html|GTK: {{AUR|peazip-gtk2}}, Qt: {{AUR|peazip-qt}}}}<br />
* {{App|Squeeze|Featherweight front-end for commandline archiving tools.|http://squeeze.xfce.org/|{{AUR|squeeze-git}}}}<br />
* {{App|[[Wikipedia:Xarchiver|Xarchiver]]|Lightweight desktop independent archive manager built with GTK.|https://github.com/ib/xarchiver|GTK 3: {{Pkg|xarchiver}}, GTK 2: {{Pkg|xarchiver-gtk2}}}}<br />
<br />
==== Comparison, diff, merge ====<br />
<br />
See also [[Wikipedia:Comparison of file comparison tools]].<br />
<br />
For managing ''pacnew''/''pacsave'' files, specialised tools exist. See [[Pacnew and Pacsave files#Managing .pac* files]].<br />
<br />
* {{App|colordiff|A Perl script wrapper for 'diff' that produces the same output but with pretty 'syntax' highlighting.|http://www.colordiff.org/|{{Pkg|colordiff}}}}<br />
* {{App|Diffuse|Small and simple text merge tool written in Python.|http://diffuse.sourceforge.net/|{{Pkg|diffuse}}}}<br />
* {{App|KDiff3|File and directory diff and merge tool for the KDE desktop.|http://kdiff3.sourceforge.net/|{{Pkg|kdiff3}}}}<br />
* {{App|[[Wikipedia:Kompare|Kompare]]|GUI front-end program for viewing and merging differences between source files. It supports a variety of diff formats and provides many options to customize the information level displayed.|https://www.kde.org/applications/development/kompare/|{{Pkg|kompare}}}}<br />
* {{App|[[Wikipedia:Meld (software)|Meld]]|Visual diff and merge tool that can compare files, directories, and version controlled projects.|http://meldmerge.org/|{{Pkg|meld}}}}<br />
* {{App|xxdiff|A graphical browser for file and directory differences.|http://furius.ca/xxdiff/|{{AUR|xxdiff}}}}<br />
* {{App|ydiff|A Python wrapper to get highlighted output from GNU diff's output or vcs-tracked file/dirs, in either unfied or side-by-side view.|https://github.com/ymattw/ydiff|{{AUR|ydiff}}}}<br />
<br />
[[Vim]] and [[Emacs]] provide merge functionality with [[Vim#Merging_files|vimdiff]] and {{ic|ediff}}.<br />
<br />
==== Batch renamers ====<br />
<br />
* {{App|[[Wikipedia:GPRename|GPRename]]|GTK batch renamer for files and directories.|http://gprename.sourceforge.net|{{Pkg|gprename}}}}<br />
* {{App|[[Wikipedia:KRename|KRename]]|Very powerful batch file renamer for the KDE desktop.|http://www.krename.net|{{Pkg|krename}}}}<br />
* {{App|metamorphose2|wxPython based batch renamer with support for regular expressions, renaming multimedia files according to their metadata, etc.|http://file-folder-ren.sourceforge.net|{{AUR|metamorphose2}}}}<br />
* {{App|pyRenamer|Application for the mass renaming of files.|https://github.com/SteveRyherd/pyRenamer|{{AUR|pyrenamer}}}}<br />
* {{App|rename.pl|Batch renamer based on perl regex.|http://search.cpan.org/~pederst/rename/bin/rename.PL|{{Pkg|perl-rename}}}}<br />
* {{App|[[Thunar]] Bulk Rename|Change the name of multiple files at once using some criterion that applies to at least one of the files. Run with {{ic|thunar -B}}.|https://docs.xfce.org/xfce/thunar/bulk-renamer/start|{{Pkg|thunar}}}}<br />
<br />
==== File searching ====<br />
<br />
This section lists utilities for file searching based on filename, file path or metadata. For full-text searching, see the next section.<br />
<br />
See also [[Wikipedia:List of search engines#Desktop search engines]].<br />
<br />
===== Console =====<br />
<br />
See [[find]] and its alternatives.<br />
<br />
===== Graphical =====<br />
<br />
* {{App|Catfish|Versatile file searching tool by Xfce, can be powered by find, locate and Zeitgeist.|https://launchpad.net/catfish-search|{{Pkg|catfish}}}}<br />
* {{App|GNOME Search Tool|GNOME utility to search for files, depends on [[GNOME/Files]].|https://gitlab.gnome.org/GNOME/gnome-search-tool|{{Pkg|gnome-search-tool}}}}<br />
* {{App|KFind|Search tool for KDE to find files by name, type or content. Has internal search and supports locate.|https://www.kde.org/applications/utilities/kfind/|{{Pkg|kfind}}}}<br />
* {{App|MATE Search Tool|MATE utility to search for files.|https://github.com/mate-desktop/mate-utils|{{Pkg|mate-utils}}}}<br />
* {{App|regexxer|Interactive search and replace tool featuring Perl-style regular expressions.|http://regexxer.sourceforge.net/|{{Pkg|regexxer}}}}<br />
* {{App|Searchmonkey|Powerful GUI search utility for matching regex patterns.|http://searchmonkey.sourceforge.net/|{{AUR|searchmonkey}}}}<br />
<br />
====== File indexers ======<br />
<br />
These programs index your files to allow for quick searching.<br />
<br />
* {{App|Basenji|Volume indexing tool designed for easy and fast indexing of CD/DVD and other type of volume collections.|https://github.com/pulb/basenji|{{AUR|basenji}}}}<br />
* {{App|fsearch|A fast file search utility for Unix-like systems based on GTK 3.|https://github.com/cboxdoerfer/fsearch|{{AUR|fsearch-git}}}}<br />
<br />
==== Full-text searching ====<br />
<br />
[[Grep]] and its alternatives provide non-indexed [[Wikipedia:Full-text search|full-text search]].<br />
<br />
===== Full-text indexers =====<br />
<br />
* {{App|[[Baloo]]|KDE's file indexing and search solution, has a CLI and is used by [[KRunner]].|https://community.kde.org/Baloo|{{Pkg|baloo}}}}<br />
* {{App|[[Wikipedia:DocFetcher|DocFetcher]]|Graphical Java desktop search application.|http://docfetcher.sourceforge.net|{{AUR|docfetcher}}}}<br />
* {{App|[[Wikipedia:Recoll|Recoll]]|Full text search tool based on Xapian, has CLI and GUI.|https://lesbonscomptes.com/recoll/|{{Pkg|recoll}}}}<br />
* {{App|[[Wikipedia:Tracker (search software)|Tracker]]|All-in-one indexer, search tool and metadata database, used by [[GNOME]] Documents, Music, Photos and Videos.|https://wiki.gnome.org/Projects/Tracker|{{Pkg|tracker}}}}<br />
* {{App|[[Zeitgeist]]|Event aggregation framework for the user's activities and notifications (files opened, websites visited, conversations had, etc.), has several third-party front-ends.|https://launchpad.net/zeitgeist-project|{{Pkg|zeitgeist}}}}<br />
<br />
=== Development ===<br />
<br />
==== Code forges ====<br />
<br />
* {{App|[[GitLab]]|Project management and code hosting application.|https://gitlab.com/gitlab-org/gitlab-ce|{{Pkg|gitlab}}}}<br />
* {{App|[[Gitea]]|Painless self-hosted Git service. Community managed fork of Gogs.|https://gitea.io|{{Pkg|gitea}}}}<br />
<br />
===== Code forge clients =====<br />
<br />
* {{App|git-open|Open a repo website (GitHub, GitLab, Bitbucket) in your browser|https://github.com/paulirish/git-open|{{AUR|git-open}}}}<br />
* {{App|hub|cli interface for Github.|https://hub.github.com|{{Pkg|hub}}}}<br />
* {{App|lab|A hub-like tool for GitLab|https://zaquestion.github.io/lab/|{{AUR|lab-bin}}}}<br />
* {{App|snippet|A terminal based interface to create a new GitLab snippet|https://gitlab.com/zj/snippet|{{AUR|snippet}}}}<br />
<br />
==== Version control systems ====<br />
<br />
See also [[Wikipedia:Comparison of revision control software]].<br />
<br />
* {{App|[[Bazaar]]|Distributed version control system that helps you track project history over time and to collaborate easily with others.|https://bazaar.canonical.com/|{{Pkg|bzr}}}}<br />
* {{App|[[CVS]]|Concurrent Versions System, a client-server revision control system.|http://cvs.nongnu.org/|{{Pkg|cvs}}}}<br />
* {{App|[[Wikipedia:Darcs|Darcs]]|Distributed revision control system that was designed to replace traditional, centralized source control systems such as CVS and Subversion.|http://darcs.net/|{{Pkg|darcs}}}}<br />
* {{App|[[Wikipedia:Fossil (software)|Fossil]]|Distributed VCS with bug tracking, wiki, forum, and technotes.|https://www.fossil-scm.org/|{{Pkg|fossil}}}}<br />
* {{App|[[Git]]|Distributed revision control and source code management system with an emphasis on speed.|https://git-scm.com/|{{Pkg|git}}}}<br />
* {{App|[[Mercurial]]|Distributed version control system written in Python and similar in many ways to Git.|https://www.mercurial-scm.org/|{{Pkg|mercurial}}}}<br />
* {{App|[[Subversion]]|Full-featured centralized version control system originally designed to be a better CVS.|https://subversion.apache.org/|{{Pkg|subversion}}}}<br />
<br />
==== Build automation ====<br />
<br />
See also [[Wikipedia:List of build automation software]].<br />
<br />
* {{App|[[Wikipedia:Apache Ant|Apache Ant]]|Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other.|http://ant.apache.org/|{{Pkg|ant}}}}<br />
* {{App|[[Wikipedia:Apache Maven|Apache Maven]]|Build automation tool used primarily for Java.|http://maven.apache.org/|{{Pkg|maven}}}}<br />
* {{App|[[Wikipedia:CMake|CMake]]|Family of tools designed to build, test and package software.|https://cmake.org/|{{Pkg|cmake}}}}<br />
* {{App|[[Wikipedia:Make (software)|GNU make]]|GNU make utility to maintain groups of programs.|http://www.gnu.org/software/make|{{Pkg|make}} (part of {{Grp|base-devel}})}}<br />
* {{App|[[Wikipedia:Gradle|Gradle]]|Powerful build system for the JVM.|https://gradle.org/|{{Pkg|gradle}}}}<br />
* {{App|Phing|PHP program designed to automate tasks of all kinds.|https://www.phing.info/|{{AUR|phing}}}}<br />
<br />
==== Integrated development environments ====<br />
<br />
See also [[Wikipedia:Comparison of integrated development environments]].<br />
<br />
* {{App|[[Wikipedia:Anjuta|Anjuta]]|Versatile IDE with project management, an application wizard, an interactive debugger, a source editor, version control support and many more tools.|http://anjuta.org/|{{Pkg|anjuta}}}}<br />
* {{App|[[Wikipedia:Aptana#Aptana_Studio|Aptana Studio]]|IDE based on Eclipse, but geared towards web development, with support for HTML, CSS, Javascript, Ruby on Rails, PHP, Adobe AIR and others.|http://www.aptana.com/|{{AUR|aptana-studio}}}}<br />
* {{App|[[Wikipedia:Bluefish (software)|Bluefish]]|Powerful editor targeted towards programmers and webdevelopers, with many options to write websites, scripts and programming code. It supports many programming and markup languages.|http://bluefish.openoffice.nl/|{{Pkg|bluefish}}}}<br />
* {{App|[[Wikipedia:Code::Blocks|Code::Blocks]]|C, C++ and Fortran IDE built to meet the most demanding needs of its users. It is designed to be very extensible and fully configurable.|http://codeblocks.org/|{{Pkg|codeblocks}}}}<br />
* {{App|[[Wikipedia:JetBrains#CLion|CLion]]|A cross-platform IDE for C and C++.|http://www.jetbrains.com/clion|{{AUR|clion}}}}<br />
* {{App|[[Wikipedia:CodeLite|CodeLite]]|Open source and cross-platform C/C++/PHP and Node.js IDE written in C++ .|http://www.codelite.org/|{{AUR|codelite}}}}<br />
* {{App|[[Wikipedia:Cloud9 IDE|Cloud9]]|State-of-the-art IDE that runs in your browser and lives in the cloud, allowing you to run, debug and deploy applications from anywhere, anytime.|https://c9.io/|{{AUR|c9.core}}}}<br />
* {{App|[[Eclipse]]|IDE for Java, C/C++, PHP, Perl and Python with subversion support and task management.|https://www.eclipse.org/|Java EE: {{Pkg|eclipse-jee}}, Java: {{Pkg|eclipse-java}}, C/C++: {{Pkg|eclipse-cpp}}, PHP: {{Pkg|eclipse-php}}, JavaScript and Web: {{Pkg|eclipse-javascript}}}}<br />
* {{App|[[Wikipedia:Eric (software)|Eric]]|Full-featured Python and Ruby IDE written in PyQt5.|https://eric-ide.python-projects.org/|{{Pkg|eric}}}}<br />
* {{App|[[Gambas]]|IDE based on a Basic interpreter with object extensions.|http://gambas.sourceforge.net/en/main.html|{{Pkg|gambas3-ide}}}}<br />
* {{App|[[Wikipedia:Geany|Geany]]|Small and lightweight IDE with many supported many programming and markup languages including C, Java, PHP, HTML, Python, Perl, Pascal.|https://geany.org/|{{Pkg|geany}}}}<br />
* {{App|[[Wikipedia:GNOME Builder|GNOME Builder]]|Tool to write and contribute to great GNOME-based applications.|https://wiki.gnome.org/Apps/Builder|{{Pkg|gnome-builder}}}}<br />
* {{App|[[Wikipedia:KDevelop|KDevelop]]|Feature-full, plugin extensible IDE for C/C++ and other programming languages.|https://www.kdevelop.org/|{{Pkg|kdevelop}}}}<br />
* {{App|[[Wikipedia:Komodo_Edit|Komodo Edit]]|A free, multi-language editor.|http://www.activestate.com/komodo-edit|{{AUR|komodo-edit}}}}<br />
* {{App|[[Wikipedia:Lazarus (IDE)|Lazarus]]|Delphi (Object Pascal) compatible IDE for Rapid Application Development. It has variety of components ready for use and a graphical form designer to easily create complex graphical user interfaces.|https://www.lazarus-ide.org/|{{Pkg|lazarus}}}}<br />
* {{App|LiteIDE|Simple Go IDE.|https://github.com/visualfc/liteide|{{Pkg|liteide}}}}<br />
* {{App|[[Wikipedia:MonoDevelop|MonoDevelop]]|Cross-platform IDE targeted for the Mono and .NET frameworks.|http://monodevelop.com/|{{AUR|monodevelop-git}}}}<br />
* {{App|[[Wikipedia:MPLAB|MPLAB]]|IDE for Microchip PIC and dsPIC development.|http://www.microchip.com/mplabx|{{AUR|microchip-mplabx-bin}}}}<br />
* {{App|[[Netbeans]]|IDE for developing with Java, JavaScript, PHP, Python, Ruby, Groovy, C, C++, Scala, Clojure, and other languages.|https://netbeans.org/|{{Pkg|netbeans}}}}<br />
* {{App|[[PHPStorm]]|JetBrains PhpStorm is a commercial, cross-platform IDE for PHP built on JetBrains' IntelliJ IDEA platform, providing an editor for PHP, HTML and JavaScript with on-the-fly code analysis, error prevention and automated refactorings for PHP and JavaScript code.|https://www.jetbrains.com/phpstorm/|{{Aur|phpstorm}} {{Aur|phpstorm-eap}}}}<br />
* {{App|[[Wikipedia:Qt Creator|Qt Creator]]|Lightweight, cross-platform C++ integrated development environment with a focus on Qt.|https://www.qt.io/ide/|{{Pkg|qtcreator}}}}<br />
<br />
===== Java IDEs =====<br />
<br />
* {{App|[[Wikipedia:BlueJ|BlueJ]]|Fully featured Java IDE used mainly for educational and beginner purposes.|https://bluej.org/|{{AUR|bluej}}}}<br />
* {{App|[[Wikipedia:IntelliJ IDEA|IntelliJ IDEA]]|IDE for Java, Groovy and other programming languages with advanced refactoring features.|http://www.jetbrains.com/idea/|{{Pkg|intellij-idea-community-edition}}}}<br />
<br />
===== Python IDEs =====<br />
<br />
* {{App|[[Wikipedia:Ninja-IDE|Ninja-IDE]]|IDE for Python development.|http://ninja-ide.org/|{{AUR|ninja-ide}}}}<br />
* {{App|[[Wikipedia:PyCharm|PyCharm]]|Python IDE with support for code analysis, debugging, unit testing, version control and web development with Django.|http://www.jetbrains.com/pycharm/|{{Pkg|pycharm-community-edition}}}}<br />
* {{App|[[Wikipedia:Spyder (software)|Spyder]]|Scientific Python Development Environment providing MATLAB-like features.|https://github.com/spyder-ide/spyder|{{Pkg|spyder2}} (Python 2) or {{Pkg|spyder3}} (Python 3)}}<br />
* {{App|[[Wikipedia:Thonny|Thonny]]|Python IDE for beginners.|http://thonny.org/|{{AUR|thonny}}}}<br />
* {{App|[[Wikipedia:Wing IDE|WingIDE]]|Proprietary Python development environment. It is fully featured and meant for professional use.|http://www.wingware.com|{{Aur|wingide}}}}<br />
<br />
===== Educational IDEs =====<br />
<br />
* {{App|[[Wikipedia:Etoys (programming language)|Etoys]]|Educational tool and media-rich authoring environment for teaching children.|http://squeakland.org/|{{AUR|etoys}}}}<br />
* {{App|[[Wikipedia:KTurtle|KTurtle]]|Educational programming environment that aims to make learning how to program as easily as possible. Part of {{Grp|kdeedu}}.|https://www.kde.org/applications/education/kturtle/|{{Pkg|kturtle}}}}<br />
* {{App|[[Wikipedia:Processing (programming language)|Processing]]|Playground for teaching non-programmers the fundamentals of computer programming in a visual context.|https://processing.org/|{{Pkg|processing}}}}<br />
* {{App|[[Wikipedia:Scratch (programming language)|Scratch]]|Programming system and content development tool for educational and entertainment purposes, such as creating interactive projects and simple sprite-based games. It is used primarly by unskilled users (such as children) as an entry to [[Wikipedia:Event-driven_programming|event-driven programming]].|https://scratch.mit.edu/|{{Pkg|scratch}}}}<br />
<br />
==== Debuggers ====<br />
<br />
* {{App|Accerciser|Interactive Python accessibility explorer. It uses the AT-SPI library to inspect, examine, and interact with widgets, allowing you to check if an application is providing correct information to assistive technologies and automated testing frameworks.|https://wiki.gnome.org/Apps/Accerciser|{{Pkg|accerciser}}}}<br />
* {{App|Alleyoop|Find memory-management problems in your programs using the valgrind tool.|http://alleyoop.sourceforge.net/|{{AUR|alleyoop}}}}<br />
* {{App|Bustle|Draws sequence diagrams of D-Bus activity. It shows signal emissions, method calls and their corresponding returns, with time stamps for each individual event and the duration of each method call.|https://www.freedesktop.org/wiki/Software/Bustle/|{{AUR|bustle-git}}}}<br />
* {{App|[[Wikipedia:Data Display Debugger|Data Display Debugger]]|Graphical front-end for command-line debuggers such as GDB.|https://www.gnu.org/software/ddd/|{{AUR|ddd}}}}<br />
* {{App|D-Feet|Easy to use D-Bus debugger to inspect D-Bus interfaces of running programs and invoke methods on those interfaces.|https://wiki.gnome.org/Apps/DFeet|{{Pkg|d-feet}}}}<br />
* {{App|GammaRay|Qt-application inspection and manipulation tool.|https://www.kdab.com/development-resources/qt-tools/gammaray/|{{Pkg|gammaray}}}}<br />
* {{App|KCachegrind|Profile data visualization tool, used to determine the most time consuming execution parts of program.|https://www.kde.org/applications/development/kcachegrind/|KDE: {{Pkg|kcachegrind}}, Qt: {{Pkg|qcachegrind}}}}<br />
* {{App|[[Wikipedia:KDbg|KDbg]]|Graphical user interface to GDB, the GNU debugger. It provides an intuitive interface for setting breakpoints, inspecting variables, and stepping through code.|http://kdbg.org/|{{Pkg|kdbg}}}}<br />
* {{App|Massif-Visualizer|Visualizer for Valgrind Massif data files.|https://phabricator.kde.org/source/massif-visualizer/|{{Pkg|massif-visualizer}}}}<br />
* {{App|[[Wikipedia:Nemiver|Nemiver]]|Easy to use standalone C/C++ debugger (GDB front-end) that integrates well in the GNOME environment.|https://wiki.gnome.org/Apps/Nemiver|{{Pkg|nemiver}}}}<br />
* {{App|Qt QDbusViewer|Tool to introspect D-Bus objects and messages.|http://doc.qt.io/qt-5/qdbusviewer.html|{{Pkg|qt5-tools}}}}<br />
* {{App|scanmem|Debugging utility designed to isolate the address of an arbitrary variable in an executing process.|https://github.com/scanmem/scanmem|CLI: {{Pkg|scanmem}}, GUI: {{Pkg|gameconqueror}}}}<br />
* {{App|Sysprof|Profiling tool that helps in finding the functions in which a program uses most of its time.|https://wiki.gnome.org/Apps/Sysprof|{{Pkg|sysprof}}}}<br />
<br />
==== Lexing and parsing ====<br />
<br />
[[Wikipedia:Lex (software)|Lex]] and [[Wikipedia:Yacc|Yacc]] are part of POSIX.<br />
<br />
* {{App|[[Wikipedia:Flex (lexical analyser generator)|flex]]|A tool for generating text-scanning programs, alternative to Lex.|https://github.com/westes/flex|{{Pkg|flex}}}}<br />
* {{App|[[Wikipedia:Berkeley Yacc|Berkeley Yacc]]|Berkeley reimplementation of the Unix parser generator Yacc.|https://invisible-island.net/byacc/|{{Pkg|byacc}}}}<br />
* {{App|[[Wikipedia:GNU bison|GNU Bison]]|The GNU general-purpose parser generator, alternative to ''byacc''.|https://www.gnu.org/software/bison/|{{Pkg|bison}}}}<br />
<br />
And then there are also:<br />
<br />
* {{App|[[Wikipedia:ANTLR|ANTLR]]|Parser generator, written in Java, for parsing structured text or binary files.|http://www.antlr.org/|{{Pkg|antlr4}}}}<br />
* {{App|LPeg|Pattern-matching library, based on PEGs, for Lua.|http://www.inf.puc-rio.br/~roberto/lpeg/|{{Pkg|lua-lpeg}}, {{Pkg|lua52-lpeg}}, {{Pkg|lua51-lpeg}}}}<br />
* {{App|peg/leg|Recursive-descent parser generators for C.|http://piumarta.com/software/peg/|{{Pkg|peg}}}}<br />
* {{App|Ragel|Compiles finite state machines from regular languages into executable C, C++, Objective-C, or D code.|http://www.colm.net/open-source/ragel/|{{Pkg|ragel}}}}<br />
<br />
==== GUI builders ====<br />
<br />
* {{App|[[Wikipedia:FLUID|FLUID]]|FLTK GUI designer.|http://www.fltk.org/|{{Pkg|fltk}}}}<br />
* {{App|[[Wikipedia:Glade Interface Designer|Glade]]|Create or open user interface designs for GTK applications.|https://glade.gnome.org/|{{Pkg|glade}}}}<br />
* {{App|KUIViewer|Quick viewer for Qt Designer UI File.|https://userbase.kde.org/KUIViewer|{{Pkg|kde-dev-utils}}}}<br />
* {{App|Qt Designer|Tool for designing and building graphical user interfaces (GUIs) with Qt Widgets.|http://doc.qt.io/qt-5/qtdesigner-manual.html|{{Pkg|qt5-tools}}}}<br />
<br />
==== Hex editors ====<br />
<br />
See also [[Wikipedia:Comparison of hex editors]].<br />
<br />
* {{App|Bless|High quality, full featured hex editor.|https://web.archive.org/web/20170503150524/http://home.gna.org/bless/|{{AUR|bless}}}}<br />
* {{App|GHex|Hex editor for GNOME, which allows the user to load data from any file, view and edit it in either hex or ascii.|https://wiki.gnome.org/Apps/Ghex|{{Pkg|ghex}}}}<br />
* {{App|hyx|Minimalistic but powerful console hex editor.|https://yx7.cc/code/|{{AUR|hyx}}}}<br />
* {{App|Okteta|KDE hex editor for viewing and editing the raw data of files.|https://www.kde.org/applications/utilities/okteta/|{{Pkg|okteta}}}}<br />
<br />
==== JSON tools ====<br />
<br />
* {{App|gron|gron transforms JSON into discrete assignments to make it easier to grep.|https://github.com/tomnomnom/gron|{{AUR|gron-bin}}}}<br />
* {{App|jid|JSON incremental digger|https://github.com/simeji/jid|{{AUR|jid}}}}<br />
* {{App|jo|A command to create JSON.|https://github.com/jpmens/jo|{{AUR|jo-git}}}}<br />
* {{App|jq|Command-line JSON processor|https://stedolan.github.io/jq/|{{Pkg|jq}}}}<br />
* {{App|jsawk|Like awk, but for JSON.|https://github.com/micha/jsawk|{{AUR|jsawk-git}}}}<br />
* {{App|jshon|A JSON parser for the shell.|http://kmkeen.com/jshon/|{{Pkg|jshon}}}}<br />
* the [[Elvish]] shell has built-in support for JSON<br />
<br />
==== Literate programming ====<br />
<br />
See also [[Wikipedia:Literate programming]].<br />
<br />
* {{App|Noweb|A Simple, Extensible Tool for Literate Programming build against ICON libs and texlive|http://www.cs.tufts.edu/~nr/noweb/|{{AUR|noweb}}}}<br />
* {{App|nuweb|A Simple Literate Programming Tool|http://nuweb.sourceforge.net/|{{AUR|nuweb}}}}<br />
<br />
==== UML modelers ====<br />
<br />
See also [[Wikipedia:List of Unified Modeling Language tools]].<br />
<br />
* {{App|[[Wikipedia:ArgoUML|ArgoUML]]|UML modeling tool with support for all standard UML 1.4 diagrams.|http://argouml.tigris.org/|{{AUR|argouml}}}}<br />
* {{App|[[Eclipse]] Modeling Tools|Tools and runtimes for building model-based applications.|https://www.eclipse.org/|{{AUR|eclipse-modeling-tools}}}}<br />
* {{App|[[Wikipedia:Modelio|Modelio]]|Modeling environment supporting the main standards: UML, BPMN, MDA, SysML.|https://www.modelio.org/|{{AUR|modelio-bin}}}}<br />
* {{App|[[Wikipedia:Papyrus (software)|Papyrus]]|Model-based engineering tool based on Eclipse.|https://www.eclipse.org/papyrus/|{{AUR|papyrus}}}}<br />
* {{App|[[Wikipedia:PlantUML|PlantUML]]|Tool to create UML diagrams from a plain text language.|http://plantuml.com/|{{AUR|plantuml}}}}<br />
* {{App|PlantUML QEditor|PlantUML editor written in Qt.|https://github.com/borco/plantumlqeditor|{{AUR|plantumlqeditor-git}}}}<br />
* {{App|[[Wikipedia:Umbrello UML Modeller|Umbrello]]|Unified Modelling Language (UML) diagram program based on KDE Technology.|https://umbrello.kde.org/|{{Pkg|umbrello}}}}<br />
* {{App|[[Wikipedia:UML Designer|UML Designer]]|Graphical tool based on Eclipse to edit and visualize UML models.|http://www.umldesigner.org/|{{AUR|umldesigner}}}}<br />
* {{App|[[Wikipedia:UMLet|UMLet]]|UML tool with a simple user interface: draw UML diagrams fast, build sequence and activity diagrams from plain text, export diagrams to eps, pdf, jpg, svg, and clipboard, share diagrams using Eclipse, and create new, custom UML elements.|http://umlet.com/|{{AUR|umlet}}}}<br />
* {{App|UML/INTERLIS-editor|Facilitate the application of the model driven approach to a greater number of users.|http://www.umleditor.org/|{{AUR|umleditor}}}}<br />
* {{App|Violet|Very easy to learn and use UML editor that draws nice-looking diagrams.|https://sourceforge.net/projects/violet/|{{AUR|violetumleditor}}}}<br />
<br />
==== API documentation browsers ====<br />
<br />
* {{App|[[Wikipedia:GNOME Devhelp|Devhelp]]|Developer tool for browsing and searching API documentation.|https://wiki.gnome.org/Apps/Devhelp|{{Pkg|devhelp}}}}<br />
* {{App|Doc Browser|API documentation browser with support for DevDocs and Hoogle.|https://github.com/qwfy/doc-browser|{{AUR|doc-browser-git}}}}<br />
* {{App|Qt Assistant|Tool for viewing on-line documentation in Qt help file format.|http://doc.qt.io/qt-5/qtassistant-index.html|{{Pkg|qt5-tools}}}}<br />
* {{App|quickDocs|Fast developer docs reader for reading Valadoc and DevDocs.|https://github.com/mdh34/quickDocs|{{AUR|quickdocs}}}}<br />
* {{App|Zeal|Offline API documentation browser for software developers.|https://zealdocs.org/|{{Pkg|zeal}}}}<br />
<br />
==== Issue tracking systems ====<br />
<br />
* {{App|[[Bugzilla]]|Bug tracker from Mozilla.|https://www.bugzilla.org|{{Pkg|bugzilla}}}}<br />
* {{App|[[Flyspray]]|Lightweight, web-based bug tracking system written in PHP|https://www.flyspray.org/|{{Pkg|flyspray}}}}<br />
* {{App|[[MantisBT]]|Web-based issue tracking system|https://www.mantisbt.org/|{{AUR|mantisbt}}}}<br />
* {{App|[[Redmine]]|A flexible project management web application. Written using the Ruby on Rails, it is cross-platform and cross-database.|https://www.redmine.org|{{Pkg|redmine}}}}<br />
* {{App|[[Request Tracker]] (RT)|The leading open-source issue tracking system.|https://bestpractical.com/rt/|{{AUR|rt}}}}<br />
* {{App|[[Trac]]|Trac Integrated SCM & Project Management using Apache & Subversion.|https://trac.edgewall.org/|{{AUR|trac}}}}<br />
<br />
See also [[Git server#Advanced web applications]].<br />
<br />
==== Code review ====<br />
<br />
* {{App|Gerrit|A web-based code review tool built on top of the Git version control system|https://www.gerritcodereview.com/|{{AUR|gerrit}}}}<br />
* [[GitLab]] also supports code reviews.<br />
<br />
See also [[Wikipedia:List of tools for code review]].<br />
<br />
==== Game development ====<br />
<br />
See also [[Wikipedia:List of game engines]].<br />
<br />
* {{App|GDevelop|Game creator designed to be used by everyone - no programming skills required.|https://gdevelop-app.com/|{{AUR|gdevelop}}}}<br />
* {{App|[[Godot Engine|Godot]]|Advanced, feature-packed, multi-platform 2D and 3D game engine. Create games with ease, using Godot's unique approach to game development.|https://godotengine.org/|{{AUR|godot}}}}<br />
* {{App|LibreSprite|Animated sprite editor and pixel art tool lets you create 2D animations for videogames.|https://github.com/LibreSprite/LibreSprite|{{AUR|libresprite}}}}<br />
* {{App|Tiled|General purpose 2D level editor with powerful tile map editing features. It’s built to be easy to use and is suitable for many type of games.|https://www.mapeditor.org/|{{Pkg|tiled}}}}<br />
<br />
==== Repository managers ====<br />
<br />
{{Style|Redirects to company blogs should not be here.}}<br />
<br />
* {{App|Nexus 2|Nexus 2 Repository Manager (OSS)|http://nexus.sonatype.org|{{AUR|nexus}}}}<br />
* {{App|Nexus 3|Nexus 3 Repository OSS|http://nexus.sonatype.org|{{AUR|nexus-oss}}}}<br />
* {{App|Artifactory|Artifactory is an advanced Binary Repository Manager for use by build tools, dependency management tools and build servers|https://bintray.com/jfrog/product/JFrog-Artifactory-Oss/view|{{AUR|artifactory-oss}}}}<br />
<br />
=== Text input ===<br />
<br />
==== Character selectors ====<br />
<br />
* {{App|GNOME Characters|Character map application for GNOME.|https://gitlab.gnome.org/GNOME/gnome-characters|{{Pkg|gnome-characters}}}}<br />
* {{App|[[Wikipedia:GNOME Character Map|gucharmap]]|GTK 3 character selector for GNOME.|https://wiki.gnome.org/Apps/Gucharmap|{{pkg|gucharmap}}}}<br />
* {{App|KCharSelect|Tool to select special characters from all installed fonts and copy them into the clipboard. Part of {{Grp|kdeutils}}.|https://utils.kde.org/projects/kcharselect/|{{Pkg|kcharselect}}}}<br />
<br />
==== On-screen keyboards ====<br />
<br />
* {{App|CellWriter|Grid-entry handwriting recognition input panel.|https://github.com/risujin/cellwriter|{{Pkg|cellwriter}}}}<br />
* {{App|eekboard|Easy to use virtual keyboard toolkit.|https://github.com/ueno/eekboard|{{AUR|eekboard}}}}<br />
* {{App|Florence|Extensible scalable on-screen virtual keyboard for GNOME that stays out of your way when not needed.|https://sourceforge.net/projects/florence/|{{AUR|florence}}}}<br />
* {{App|Onboard|Onscreen keyboard useful for tablet PC users and for mobility impaired users.|https://launchpad.net/onboard|{{Pkg|onboard}}}}<br />
* {{App|qtvkbd|Virtual keyboard written in Qt, a fork of kvkbd.|https://github.com/Alexander-r/qtvkbd|{{AUR|qtvkbd}}}}<br />
* {{App|QVKbd|Virtual keyboard written in Qt.|https://github.com/KivApple/qvkbd|{{Pkg|qvkbd}}}}<br />
* {{App|theShell On Screen Keyboard|Touchscreen keyboard for theShell.|https://github.com/vicr123/ts-kbd|{{AUR|ts-kbd}}}}<br />
* {{App|xvkbd|Virtual keyboard for X window system.|http://t-sato.in.coocan.jp/xvkbd/|{{AUR|xvkbd}}}}<br />
<br />
==== Keyboard layout switchers ====<br />
<br />
* {{App|fbxkb|A NETWM compliant keyboard indicator and switcher. It shows a flag of current keyboard in a systray area and allows you to switch to another one.|http://fbxkb.sourceforge.net/|{{AUR|fbxkb}}}}<br />
* {{App|xxkb|A lightweight keyboard layout indicator and switcher.|https://sourceforge.net/projects/xxkb/|{{Pkg|xxkb}}}}<br />
* {{App|qxkb|A keyboard switcher written in Qt.|https://github.com/disels/qxkb|{{AUR|qxkb}}}}<br />
* {{App|[[Wikipedia:X Neural Switcher|X Neural Switcher]]|A text analyser, it detects the language of the input and corrects the keyboard layout if needed.|http://www.xneur.ru/|{{AUR|xneur}}, {{AUR|gxneur}} (GUI)}}<br />
<br />
==== Input methods ====<br />
<br />
See the main article: [[Internationalization#Input methods]].<br />
<br />
=== Disks ===<br />
<br />
==== Partitioning tools ====<br />
<br />
See [[Partitioning#Partitioning tools]].<br />
<br />
==== Formatting tools ====<br />
<br />
See [[File systems#Types of file systems]].<br />
<br />
==== Cloning tools ====<br />
<br />
See [[Disk cloning#Disk cloning software]].<br />
<br />
==== Mount tools ====<br />
<br />
See also [[udisks#Mount helpers]].<br />
<br />
* {{App|9mount|Mount 9p filesystems.|http://sqweek.net/code/9mount/|{{AUR|9mount}}}}<br />
* {{App|cryptmount|Mount an encrypted file system as a regular user.|https://sourceforge.net/projects/cryptmount/|{{AUR|cryptmount}}}}<br />
* {{App|KDiskFree|Displays information about hard disks and other storage devices. It also allows to mount and unmount drives and view them in a file manager.|https://www.kde.org/applications/system/kdiskfree/|{{Pkg|kdf}}}}<br />
* {{App|ldm|A lightweight daemon that mounts drives automagically using ''udev''|https://github.com/LemonBoy/ldm|{{AUR|ldm}}}}<br />
* {{App|pmount|Mount ''source'' as a regular user to an automatically created destination {{ic|/media/''source_name''}}.|https://pmount.alioth.debian.org/|{{AUR|pmount}}}}<br />
* {{App|pmount-safe-removal|Mount removable devices as regular user with safe removal|https://mywaytoarch.tumblr.com/post/13111098534/pmount-safe-removal-of-usb-device|{{AUR|pmount-safe-removal}}}}<br />
* {{App|udevil|Mounts removable devices as a regular user, show device info, and monitor device changes. Only depends on ''udev'' and glib.|https://ignorantguru.github.io/udevil|{{Pkg|udevil}}}}<br />
* {{App|ws|Mount Windows network shares ([[Wikipedia:Server Message Block|CIFS]] and [[Wikipedia:Virtual file system|VFS]]).|https://sourceforge.net/projects/winshares/|{{AUR|ws}}}}<br />
* {{App|zulucrypt|A GUI frontend for cryptsetup to create, manage and mount encrypted volumes; supports encfs as well|https://mhogomchungu.github.io/zuluCrypt/|{{AUR|zulucrypt}}}}<br />
<br />
==== Disk usage display ====<br />
<br />
* {{App|duc|A library and suite of tools for inspecting disk usage.|http://duc.zevv.nl/|{{AUR|duc}}}}<br />
* {{App|[[Wikipedia:Filelight|Filelight]]|Disk usage analyzer that creates an interactive map of concentric, segmented rings that help visualise disk usage on your computer.|https://www.kde.org/applications/utilities/filelight|{{Pkg|filelight}}}}<br />
* {{App|[[Wikipedia:Disk Usage Analyzer|GNOME Disk Usage Analyzer]]|Disk usage analyzer for the [[GNOME]] desktop to check folder sizes and available disk space.|https://wiki.gnome.org/Apps/DiskUsageAnalyzer|{{Pkg|baobab}}}}<br />
* {{App|Graphical Disk Map|Disk usage analyzer that draws a map of rectangles sized according to file or dir sizes.|http://gdmap.sourceforge.net/|{{Pkg|gdmap}}}}<br />
* {{App|gt5|Diff-capable "du-browser".|http://gt5.sourceforge.net|{{AUR|gt5}}}}<br />
* {{App|MATE Disk Usage Analyzer|Disk usage analyzing tool for MATE Desktop.|https://github.com/mate-desktop/mate-utils|{{Pkg|mate-utils}}}}<br />
* {{App|ncdu|Simple ncurses disk usage analyzer.|http://dev.yorhel.nl/ncdu|{{Pkg|ncdu}}}}<br />
* {{App|qdirstat|Qt-based directory statistics (KDirStat/K4DirStat without any KDE - from the original KDirStat author).|https://github.com/shundhammer/qdirstat|{{AUR|qdirstat}}}}<br />
<br />
==== Disk health status ====<br />
<br />
See [[S.M.A.R.T.#GUI Applications]].<br />
<br />
==== File recovery tools ====<br />
<br />
See [[File recovery#List of utilities]].<br />
<br />
==== Disk cleaning ====<br />
<br />
* {{App|[[Wikipedia:BleachBit|BleachBit]]|Frees disk space and guards your privacy; frees cache, deletes cookies, clears Internet history, shreds temporary files, deletes logs, and discards junk you didn't know was there.|https://www.bleachbit.org/|{{Pkg|bleachbit}}}}<br />
* {{App|[[Wikipedia:fdupes|fdupes]]|Program for identifying or deleting duplicate files residing within specified directories.|https://github.com/adrianlopezroche/fdupes|{{Pkg|fdupes}}}}<br />
* {{App|fslint|A utility to find and clean various forms of lint on a filesystem.|https://www.pixelbeat.org/fslint/|{{AUR|fslint}}}}<br />
* {{App|gconf-cleaner|cleans up the unknown/invalid GConf keys that still sitting down on your GConf database.|https://code.google.com/archive/p/gconf-cleaner/|{{AUR|gconf-cleaner}}}}<br />
* {{App|rmlint|Tool to quickly find (and optionally remove) duplicate files and other lint.|https://github.com/sahib/rmlint|CLI: {{Pkg|rmlint}}, GUI: {{Pkg|rmlint-shredder}}}}<br />
* {{App|Sweeper|System cleaning utility for KDE.|https://utils.kde.org/projects/sweeper/|{{Pkg|sweeper}}}}<br />
<br />
==== Disk image writing ====<br />
<br />
See also [[Wikipedia:List of tools to create Live USB systems]].<br />
<br />
* {{App|Deepin Boot Maker|Tool to make boot disk for Deepin OS.|https://www.deepin.org/en/original/deepin-boot-maker/|{{Pkg|deepin-boot-maker}}}}<br />
* {{App|Etcher|Flash OS images to SD cards & USB drives, safely and easily. Based on the [https://electronjs.org/ Electron] platform.|https://etcher.io/|{{AUR|balena-etcher}}}}<br />
* {{App|[[Wikipedia:Fedora Media Writer|Fedora Media Writer]]|Tool that helps users put Fedora images on their portable drives such as flash disks.|https://github.com/FedoraQt/MediaWriter|{{AUR|mediawriter}}}}<br />
* {{App|GNOME MultiWriter|Write an ISO file to multiple USB devices at once.|https://wiki.gnome.org/Apps/MultiWriter|{{Pkg|gnome-multi-writer}}}}<br />
* {{App|ISOImageWriter|Tool to write a .iso file to a USB disk.|https://community.kde.org/ISOImageWriter|{{AUR|isoimagewriter}}}}<br />
* {{App|LiveUSB Install|Install various Linux distributions and operating systems on removable flash drive or external disk drive.|http://live.learnfree.eu/|{{AUR|live-usb-install}}}}<br />
* {{App|MultiBootUSB|Install multiple live Linux on a USB disk non destructively and option to uninstall distros.|http://multibootusb.org/|{{AUR|multibootusb}}}}<br />
* {{App|MultiSystem|GUI tool to create a USB system that can boot multiple distro's.|http://liveusb.info/|{{AUR|multisystem}}}}<br />
* {{App|[[Wikipedia:SUSE Studio ImageWriter|SUSE Studio ImageWriter]]|Utility for writing raw disk images & hybrid isos to USB keys.|https://github.com/openSUSE/imagewriter|{{AUR|imagewriter}}}}<br />
* {{App|[[Wikipedia:UNetbootin|UNetbootin]]|Installs Linux/BSD distributions to a partition or USB drive.|https://unetbootin.github.io/|{{AUR|unetbootin}}}}<br />
* {{App|WoeUSB|Simple tool to create USB stick windows installer from an ISO image or a real DVD. (Fork of WinUSB).|https://github.com/WoeUSB/WoeUSB-frontend-wxgtk|{{AUR|woeusb-git}}}}<br />
* {{App|windows2usb|Windows 7/8/8.1/10 ISO to Flash Drive burning utility for Linux with MBR/GPT, BIOS/UEFI, FAT32/NTFS support|https://github.com/ValdikSS/windows2usb|{{AUR|windows2usb-git}}}}<br />
<br />
=== System ===<br />
<br />
==== Task managers ====<br />
<br />
* {{App|Deepin System Monitor|Monitor system process status for Deepin desktop.|https://www.deepin.org/en/original/deepin-system-monitor/|{{Pkg|deepin-system-monitor}}}}<br />
* {{App|GNOME System Monitor|System monitor for [[GNOME]] to view and manage system resources.|https://wiki.gnome.org/Apps/SystemMonitor|{{Pkg|gnome-system-monitor}}}}<br />
* {{App|GNOME Usage|View information about use of system resources, like memory and disk space.|https://wiki.gnome.org/Apps/Usage|{{Pkg|gnome-usage}}}}<br />
* {{App|[[Wikipedia:Htop|htop]]|Simple, ncurses interactive process viewer.|http://htop.sourceforge.net/|{{Pkg|htop}}}}<br />
* {{App|[[Wikipedia:KDE System Guard|KSysGuard]]|System monitor for [[KDE]] to monitor running processes and system performance.|https://userbase.kde.org/KSysGuard|{{Pkg|ksysguard}}}}<br />
* {{App|Linux Process Explorer|Graphical process explorer for Linux.|https://sourceforge.net/projects/procexp/|{{AUR|procexp}}}}<br />
* {{App|LXTask|Lightweight task manager for [[LXDE]].|https://wiki.lxde.org/en/LXTask|{{Pkg|lxtask}}}}<br />
* {{App|MATE System Monitor|System monitor for [[MATE]].|https://github.com/mate-desktop/mate-system-monitor|{{Pkg|mate-system-monitor}}}}<br />
* {{App|Task Manager|GTK2 process management application for [[Xfce]].|http://goodies.xfce.org/projects/applications/xfce4-taskmanager|{{Pkg|xfce4-taskmanager}}}}<br />
<br />
==== System monitors ====<br />
<br />
See also [[:Category:Status monitoring and notification]]<br />
<br />
* {{App|[[Conky]]|Lightweight, scriptable system monitor.|https://github.com/brndnmtthws/conky|{{Pkg|conky}}}}<br />
* {{App|Collectd|Simple, extensible system monitoring daemon based on [http://oss.oetiker.ch/rrdtool/ rrdtool]. It has a small footprint and can be set up either stand-alone or as a server/client application.|https://collectd.org/|{{Pkg|collectd}}}}<br />
* {{App|collectl|Collectl is a light-weight performance monitoring tool capable of reporting interactively as well as logging to disk. It reports statistics on cpu, disk, infiniband, lustre, memory, network, nfs, process, quadrics, slabs and more in easy to read format.|http://collectl.sourceforge.net/|{{AUR|collectl}}}}<br />
* {{App|dstat|Versatile resource statistics tool.|http://dag.wieers.com/home-made/dstat/|{{Pkg|dstat}}}}<br />
* {{App|Fsniper|Daemon to run scripts based on changes in files monitored by inotify.|http://projects.l3ib.org/fsniper/|{{AUR|fsniper}}}}<br />
* {{App|[[Wikipedia:GKrellM|GKrellM]]|Simple, flexible system monitor package for [[GTK]] with many plug-ins.|http://billw2.github.io/gkrellm/gkrellm.html|{{Pkg|gkrellm}}}}<br />
* {{App|glances|CLI curses-based monitoring tool in Python.|http://nicolargo.github.io/glances|{{Pkg|glances}}}}<br />
* {{App|netdata|Web-based real-time performance monitor.|https://github.com/firehol/netdata/wiki|{{Pkg|netdata}}}}<br />
* {{App|[[Telegraf]]|Agent written in Go for collecting, processing, aggregating, and writing metrics.|https://docs.influxdata.com/telegraf/latest/|{{AUR|telegraf}}}}<br />
* {{App|[[Paramano]]|Light battery monitor and a CPU frequency scaler. Forked from [http://trayfreq.sourceforge.net/ trayfreq]|https://github.com/phillid/paramano|{{AUR|paramano}}}}<br />
* {{app|Sysstat|Collection of resource monitoring tools: iostat, isag, mpstat, pidstat, sadf, sar.|http://pagesperso-orange.fr/sebastien.godard/|{{Pkg|sysstat}}}}<br />
* {{App|xosview|System monitor that resembles gr_osview from SGI IRIX.|http://www.pogo.org.uk/~mark/xosview/|{{AUR|xosview}}}}<br />
<br />
==== Hardware sensor monitoring ====<br />
<br />
See [[lm_sensors#Graphical front-ends]].<br />
<br />
==== System information viewers ====<br />
<br />
===== Console =====<br />
<br />
* {{App|alsi|A system information tool for Arch Linux. It can be configured for every other system without even touching the source code of the script.|http://trizenx.blogspot.ro/2012/08/alsi.html|{{AUR|alsi}}}}<br />
* {{App|archey2|Simple python script that displays the arch logo and some basic information. Python 2.x version.|https://github.com/djmelik/archey|{{AUR|archey2}}}}<br />
* {{App|[[archey3]]|Python script to display system infomation alongside the Arch Linux logo.|https://lclarkmichalek.github.io/archey3|{{pkg|archey3}}}}<br />
* {{App|dmidecode|It reports information about your system's hardware as described in your system BIOS according to the SMBIOS/DMI standard.|http://www.nongnu.org/dmidecode/|{{Pkg|dmidecode}}}}<br />
* {{App|hwdetect|Simple script to list modules that are exported in {{ic|/sys/}}.|https://projects.archlinux.org/|{{pkg|hwdetect}}}}<br />
* {{App|hwinfo|Powerful hardware detection tool come from openSUSE.|https://github.com/openSUSE/hwinfo|{{pkg|hwinfo}}}}<br />
* {{App|inxi|A script to get system information.|https://github.com/smxi/inxi|{{AUR|inxi}}}}<br />
* {{App|neofetch|A fast, highly customizable system info script that supports displaying images with w3m.|https://github.com/dylanaraps/neofetch|{{Pkg|neofetch}}}}<br />
* {{App|screenfetch|Similar to archey but has an option to take a screenshot. Written in bash.|https://github.com/KittyKatt/screenFetch|{{Pkg|screenfetch}}}}<br />
* {{App|nmon|Console based application for monitoring various system components.|http://nmon.sourceforge.net/|{{Pkg|nmon}}}}<br />
<br />
===== Graphical =====<br />
<br />
* {{App|hardinfo|A small application that displays information about your hardware and operating system, it looks like the Device Manager in Windows.|http://hardinfo.berlios.de/HomePage|{{Pkg|hardinfo}}}}<br />
* {{App|i-Nex|An application that gathers information for hardware components available on your system and displays it using an user interface similar to the popular Windows tool CPU-Z.|http://i-nex.linux.pl/|{{AUR|i-nex-git}}}}<br />
* {{App|lshw|A small tool to provide detailed information on the hardware configuration of the machine with CLI and GTK interfaces.|http://ezix.org/project/wiki/HardwareLiSter|{{Pkg|lshw}}}}<br />
* {{App|KDE Info Center|Centralized and convenient overview of system information for KDE.|https://www.kde.org/applications/system/kinfocenter/|{{Pkg|kinfocenter}}}}<br />
* {{App|USBView|Display the topology of devices on the USB bus.|http://www.kroah.com/linux/usb/|{{Pkg|usbview}}}}<br />
<br />
==== System log viewers ====<br />
<br />
* {{App|GNOME Logs|Viewer for the systemd journal. Part of {{Grp|gnome}}.|https://wiki.gnome.org/Apps/Logs|{{Pkg|gnome-logs}}}}<br />
* {{App|GNOME System Log|System log viewer for GNOME.|https://gitlab.gnome.org/GNOME/gnome-system-log|{{Pkg|gnome-system-log}}}}<br />
* {{App|KSystemLog|System log viewer tool for KDE.|https://www.kde.org/applications/system/ksystemlog/|{{Pkg|ksystemlog}}}}<br />
* {{App|MATE System Log|System log viewer for MATE.|https://github.com/mate-desktop/mate-utils|{{Pkg|mate-utils}}}}<br />
* {{App|Pacman Log Viewer|Tool used to inspect pacman log file, in particular it lists installed, removed and upgraded packages letting you to filter by package's name and/or date.|https://www.opendesktop.org/content/show.php?content&#61;150484|{{Pkg|pacmanlogviewer}}}}<br />
<br />
==== Font viewers ====<br />
<br />
See also [[Wikipedia:Font management software]].<br />
* {{App|Font Manager|Simple font management for GTK desktop environments.|https://fontmanager.github.io/|{{AUR|font-manager}}}}<br />
* {{App|Fonty Python|Manage, view and find your fonts.|https://savannah.nongnu.org/projects/fontypython|{{AUR|fontypython}}}}<br />
* {{App|GNOME Fonts|Font viewer for GNOME.|https://gitlab.gnome.org/GNOME/gnome-font-viewer|{{Pkg|gnome-font-viewer}}}}<br />
* {{App|KFontview|KDE application to view and install different types of fonts.|https://docs.kde.org/trunk5/en/kde-workspace/kfontview/index.html|{{Pkg|plasma-desktop}}}}<br />
* {{App|MATE Font Viewer|Font viewer for MATE.|https://github.com/mate-desktop/mate-control-center|{{Pkg|mate-utils}}}}<br />
* {{App|Waterfall|GTK application to view all characters of font in all sizes.|https://keithp.com/cgit/gwaterfall.git|{{Pkg|gwaterfall}}}}<br />
<br />
==== Help viewers ====<br />
<br />
See [[man page#Viewer applications]].<br />
<br />
==== Command schedulers ====<br />
<br />
See also [[Cron]].<br />
<br />
* {{App|FcronQ|Fcron GUI, an advanced periodic command scheduler.|http://fcronq.xavion.name/|{{AUR|fcronq}}}}<br />
* {{App|GNOME Schedule|Graphical interface to crontab and at for GNOME.|http://gnome-schedule.sourceforge.net/|{{AUR|gnome-schedule}}}}<br />
* {{App|KCron|Tool for KDE to run applications in the background at regular intervals. It's a graphical interface to the Cron command.|https://userbase.kde.org/KCron|{{Pkg|kcron}}}}<br />
* {{App|KTimer|Little tool for KDE to execute programs after some time. It allows you to enter several tasks and to set a timer for each of them. The timers for each task can be started, stopped, changed, or looped.|https://www.kde.org/applications/utilities/ktimer/|{{Pkg|ktimer}}}}<br />
<br />
==== Shutdown timers ====<br />
<br />
* {{App|GShutdown|Advanced shutdown utility which allows you to schedule the shutdown or the restart of your computer, or logout your actual session.|https://gshutdown.tuxfamily.org/|{{AUR|gshutdown}}}}<br />
* {{App|Hsiu-Ming's Timer|Graphical shutdown timer, which enables you to shutdown, turn off monitor, reboot or play sound after a period of time.|https://cges30901.github.io/hmtimer-website/|{{AUR|hmtimer}}}}<br />
* {{App|KShutdown|Graphical shutdown utility, which allows you to turn off or suspend a computer at a specified time. It features various time and delay options, command-line support, and notifications.|https://kshutdown.sourceforge.io/|{{Pkg|kshutdown}}}}<br />
<br />
==== Clock synchronization ====<br />
<br />
See [[Time synchronization]].<br />
<br />
==== Screen management ====<br />
<br />
See [[Xrandr#Graphical front-ends]].<br />
<br />
==== Backlight management ====<br />
<br />
See [[Backlight#Backlight utilities]].<br />
<br />
==== Color management ====<br />
<br />
See [[ICC profiles#Utilities]] and [[Backlight#Color correction]].<br />
<br />
==== Printer management ====<br />
<br />
See [[CUPS#GUI applications]].<br />
<br />
==== Bluetooth management ====<br />
<br />
See [[Bluetooth#Front-ends]].<br />
<br />
==== Power management ====<br />
<br />
See [[Power management#Userspace tools]].<br />
<br />
==== Package management ====<br />
<br />
See [[pacman tips#Utilities]].</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=VMWare_vCLI&diff=517076VMWare vCLI2018-04-12T19:22:32Z<p>Nixpunk: 'Eventhough' -> 'Even though'</p>
<hr />
<div>[[Category:Virtualization]]<br />
[[ja:VMWare vCLI のインストール]]<br />
[[nl:Installing VMWare vCLI]]<br />
{{Related articles start}}<br />
{{Related|VMware}}<br />
{{Related|Installing_Arch_Linux_in_VMWare}}<br />
{{Related articles end}}<br />
<br />
The vCLI utilities make it possible to manage VMWare ESX servers (with the possibility of using vCenter). Even though Archlinux is not one of the "supported platforms"; the installation process is relatively straightforward. We have a two method's of VMWare vCLI installation. It's a build package from AUR, or manually installation.<br />
<br />
==Installation from AUR==<br />
Install {{AUR|vmware-vcli}} from [[AUR]].<br />
<br />
==Manually installation==<br />
<br />
===Download location===<br />
<br />
The utilities can be downloaded from [http://www.vmware.com/support/developer/vcli http://www.vmware.com/support/developer/vcli]. Registration is mandatory.<br />
It seems that registration is not enough to download latest release from this link. It gives "Download is not available."<br />
<br />
5.1 can be downloaded from here: https://my.vmware.com/group/vmware/details?downloadGroup=VSP510-VCLI-510&productId=285<br />
<br />
===Dependencies===<br />
<br />
vCLI has quite a few dependencies which can easily be managed via pacman:<br />
<br />
pacman -S e2fsprogs openssl libxml2 perl perl-libxml perl-xml-sax perl-crypt-ssleay \ <br />
perl-archive-zip perl-html-parser perl-data-dump perl-soap-lite perl-uri \ <br />
perl-lwp-protocol-https perl-class-methodmaker perl-net-ssleay perl-xml-libxml<br />
<br />
===Installation===<br />
<br />
Unpack the archive:<br />
<br />
tar xzvf VMware-vSphere-CLI-5*.tar.gz<br />
<br />
Change to the newly created directory:<br />
<br />
cd vmware-vsphere-cli-distrib/<br />
<br />
Open the file {{ic|vmware-install.pl}} with your favorite editor. Change the following rules:<br />
<br />
my $installed_ssl_version = '1.0.0'; # rule 5248<br />
my $ssleay_installed = 1; # rule 5250<br />
my $OpenSSL_installed = 1; # rule 5256<br />
my $LibXML2_installed = 1; # rule 5257<br />
my $OpenSSL_dev_installed = 1; # rule 5258<br />
my $e2fsprogs_installed = 1; # rule 5261 <br />
my $e2fsprogs_version = '1.42'; # rule 5262<br />
my $install_rhel55_local = 1; # rule 5266<br />
<br />
The next step is to configure a ftp and http proxy. These values are mandatory, even when you're not using a proxy (in which case you leave the values in a blank state):<br />
<br />
export ftp_proxy=""<br />
export http_proxy=""<br />
<br />
Fire up the installation:<br />
./vmware-install.pl <br />
<br />
Potential warnings about rpm and versions can be safely ignored.</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Bash&diff=488169Bash2017-08-31T18:07:15Z<p>Nixpunk: Removed 1 extra leading space on 'export IGNOREEOF=100'</p>
<hr />
<div>[[Category:Command shells]]<br />
[[de:Bash]]<br />
[[es:Bash]]<br />
[[it:Bash]]<br />
[[ja:Bash]]<br />
[[ru:Bash]]<br />
[[zh-hans:Bash]]<br />
{{Related articles start}}<br />
{{Related|Bash/Functions}}<br />
{{Related|Bash/Prompt customization}}<br />
{{Related|Environment variables}}<br />
{{Related|Readline}}<br />
{{Related|Fortune}}<br />
{{Related|Pkgfile}}<br />
{{Related articles end}}<br />
'''Bash''' (Bourne-again Shell) is a [[command-line shell]]/programming language by the [[GNU Project]]. Its name is a homaging reference to its predecessor: the long-deprecated Bourne shell. Bash can be run on most UNIX-like operating systems, including GNU/Linux.<br />
<br />
== Invocation ==<br />
<br />
Bash behaviour can be altered depending on how it is invoked. Some descriptions of different modes follow.<br />
<br />
If Bash is spawned by {{ic|login}} in a TTY, by an [[SSH]] daemon, or similar means, it is considered a '''login shell'''. This mode can also be engaged using the {{ic|-l}}/{{ic|--login}} command line option.<br />
<br />
Bash is considered an '''interactive shell''' when its standard input and error are connected to a terminal (for example, when run in a terminal emulator), and it is not started with the {{ic|-c}} option or [http://unix.stackexchange.com/a/96805 non-option] arguments (for example, {{ic|bash '''script'''}}). All interactive shells source {{ic|/etc/bash.bashrc}} and {{ic|~/.bashrc}}, while interactive ''login'' shells also source {{ic|/etc/profile}} and {{ic|~/.bash_profile}}.<br />
<br />
{{Note|In Arch {{ic|/bin/sh}} (which used to be the Bourne shell executable) is symlinked to {{ic|/bin/bash}}. If Bash is invoked with the name {{ic|sh}}, it tries to mimic the startup behavior of historical versions of {{ic|sh}}, including POSIX compability.}}<br />
<br />
=== Configuration files ===<br />
<br />
See [http://www.gnu.org/software/bash/manual/bash.html#Bash-Startup-Files 6.2 Bash Startup Files] and [http://mywiki.wooledge.org/DotFiles DotFiles] for a complete description.<br />
<br />
{| class="wikitable"<br />
! File<br />
! Description<br />
! Login shells <sup>(see note)</sup><br />
! Interactive, ''non-login'' shells<br />
|-<br />
| {{ic|/etc/profile}}<br />
| [[Source]]s application settings in {{ic|/etc/profile.d/*.sh}} and {{ic|/etc/bash.bashrc}}.<br />
| {{Yes}}<br />
| {{No}}<br />
|-<br />
| {{ic|~/.bash_profile}}<br />
| Per-user, after {{ic|/etc/profile}}. If this file does not exist, {{ic|~/.bash_login}} and {{ic|~/.profile}} are checked in that order. The skeleton file {{ic|/etc/skel/.bash_profile}} also sources {{ic|~/.bashrc}}.<br />
| {{Yes}}<br />
| {{No}}<br />
|-<br />
| {{ic|~/.bash_logout}}<br />
| After exit of a login shell.<br />
| {{Yes}}<br />
| {{No}}<br />
|-<br />
| {{ic|/etc/bash.bashrc}}<br />
| Depends on the {{ic|1=-DSYS_BASHRC="/etc/bash.bashrc"}} compilation flag. Sources {{ic|/usr/share/bash-completion/bash_completion}}.<br />
| {{No}}<br />
| {{Yes}}<br />
|-<br />
| {{ic|~/.bashrc}}<br />
| Per-user, after {{ic|/etc/bash.bashrc}}.<br />
| {{No}}<br />
| {{Yes}}<br />
|}<br />
<br />
{{Note|<br />
* Login shells can be non-interactive when called with the {{ic|--login}} argument.<br />
* While interactive, ''non-login'' shells do '''not''' source {{ic|~/.bash_profile}}, they still inherit the environment from their parent process (which may be a login shell). See [http://mywiki.wooledge.org/ProcessManagement#On_processes.2C_environments_and_inheritance On processes, environments and inheritance] for details.<br />
}}<br />
<br />
=== Shell and environment variables ===<br />
<br />
The behavior of Bash and programs run by it can be influenced by a number of environment variables. [[Environment variables]] are used to store useful values such as command search directories, or which browser to use. When a new shell or script is launched it inherits its parent's variables, thus starting with an internal set of shell variables[http://www.kingcomputerservices.com/unix_101/understanding_unix_shells_and_environment_variables.htm ].<br />
<br />
These shell variables in Bash can be exported in order to become environment variables:<br />
<br />
VARIABLE=content<br />
export VARIABLE<br />
<br />
or with a shortcut<br />
<br />
export VARIABLE=content<br />
<br />
Environment variables are conventionally placed in {{ic|~/.profile}} or {{ic|/etc/profile}} so that all bourne-compatible shells can use them.<br />
<br />
See [[Environment variables]] for more general information.<br />
<br />
== Command line ==<br />
<br />
Bash command line is managed by the separate library called [[Readline]]. Readline provides [[emacs]] and [[vi]] styles of shortcuts for interacting with the command line, i.e. moving back and forth on the word basis, deleting words etc. It is also Readline's responsibility to manage [[Readline#History|history]] of input commands. Last, but not least, it allows you to create [[Readline#Macros|macros]].<br />
<br />
=== Tab completion ===<br />
<br />
[[Wikipedia:Command-line_completion|Tab completion]] is the option to auto-complete typed commands by pressing {{ic|Tab}} (enabled by default).<br />
<br />
==== Single-tab ====<br />
<br />
It may require up to three tab-presses to show all possible completions for a command. To reduce the needed number of tab-presses, see [[Readline#Faster completion]].<br />
<br />
==== Common programs and options ====<br />
<br />
By default, Bash only tab-completes commands, filenames, and variables. The package {{Pkg|bash-completion}} extends this by adding more specialized tab completions for common commands and their options, which can be enabled by sourcing {{ic|/usr/share/bash-completion/bash_completion}}. With {{Pkg|bash-completion}}, normal completions (such as {{ic|$ ls file.*<tab><tab>}}) will behave differently; however, they can be re-enabled with {{ic|$ compopt -o bashdefault ''program''}} (see [https://bbs.archlinux.org/viewtopic.php?id=128471] and [https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion-Builtins.html] for more detail).<br />
<br />
==== Customize per-command ====<br />
<br />
{{Note|Using the {{ic|complete}} builtin may cause conflicts with {{Pkg|bash-completion}}.}}<br />
<br />
By default Bash only tab-completes file names following a command. You can change it to complete command names using {{ic|complete -c}}:<br />
{{hc|~/.bashrc|<br />
complete -c man which<br />
}}<br />
or complete command names and file names with {{ic|-cf}}:<br />
{{bc|complete -cf sudo}}<br />
See the Bash man page for more completion options.<br />
<br />
=== History ===<br />
<br />
==== History completion ====<br />
<br />
You can bind the up and down arrow keys to search through Bash's history (see: [[Readline#History]] and [https://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html Readline Init File Syntax]):<br />
<br />
{{hc|~/.bashrc|<br />
bind '"\e[A": history-search-backward'<br />
bind '"\e[B": history-search-forward'<br />
}}<br />
<br />
or to affect all readline programs:<br />
<br />
{{hc|~/.inputrc|<br />
"\e[A": history-search-backward<br />
"\e[B": history-search-forward<br />
}}<br />
<br />
==== Shorter history ====<br />
<br />
The {{ic|HISTCONTROL}} variable can prevent certain commands from being logged to the history. For example, to stop logging of repeated identical commands<br />
{{hc|~/.bashrc|2=export HISTCONTROL=ignoredups}}<br />
or set it to {{ic|erasedups}} to ensure that Bash's history will only contain one copy of each command (regardless of order). See the Bash man page for more options.<br />
<br />
=== Mimic Zsh run-help ability ===<br />
<br />
Zsh can invoke the manual for the command preceding the cursor by pressing {{ic|Alt+h}}.<br />
A similar behaviour is obtained in Bash using this [[Readline]] bind:<br />
{{hc|~/.bashrc|<br />
bind '"\eh": "\C-a\eb\ed\C-y\e#man \C-y\C-m\C-p\C-p\C-a\C-d\C-e"'<br />
}}<br />
This assumes are you using the (default) Emacs [[Readline#Editing mode|editing mode]].<br />
<br />
== Aliases ==<br />
<br />
[[Wikipedia:Alias_(command)|alias]] is a command, which enables a replacement of a word with another string. It is often used for abbreviating a system command, or for adding default arguments to a regularly used command. <br />
<br />
Personal aliases are preferably stored in {{ic|~/.bashrc}}, and system-wide aliases (which affect all users) belong in {{ic|/etc/bash.bashrc}}. See [https://gist.github.com/anonymous/a9055e30f97bd19645c2] for example aliases.<br />
<br />
For functions, see [[Bash/Functions]].<br />
<br />
== Tips and tricks ==<br />
<br />
=== Prompt customization ===<br />
<br />
See [[Bash/Prompt customization]].<br />
<br />
=== Command not found ===<br />
<br />
[[pkgfile]] includes a "command not found" hook that will automatically search the official repositories, when entering an unrecognized command.<br />
<br />
You need to [[source]] the hook to enable it, for example:<br />
<br />
{{hc|~/.bashrc|<br />
source /usr/share/doc/pkgfile/command-not-found.bash}}<br />
<br />
Then attempting to run an unavailable command will show the following info:<br />
<br />
{{hc|$ abiword|<br />
abiword may be found in the following packages:<br />
extra/abiword 3.0.1-2 /usr/bin/abiword<br />
}}<br />
<br />
An alternative "command not found" hook is provided by {{AUR|command-not-found}}, which looks like this:<br />
<br />
{{hc|$ abiword|<br />
The command 'abiword' is provided by the following packages:<br />
'''abiword''' (2.8.6-7) from extra<br />
[ abiword ]<br />
'''abiword''' (2.8.6-7) from staging<br />
[ abiword ]<br />
'''abiword''' (2.8.6-7) from testing<br />
[ abiword ]<br />
}}<br />
<br />
=== Disable Ctrl+z in terminal ===<br />
<br />
You can disable the {{ic|Ctrl+z}} feature (pauses/closes your application) by wrapping your command like this:<br />
<br />
#!/bin/bash<br />
trap "" 20<br />
''adom''<br />
<br />
Now when you accidentally press {{ic|Ctrl+z}} in {{AUR|adom}} instead of {{ic|Shift+z}} nothing will happen because {{ic|Ctrl+z}} will be ignored.<br />
<br />
=== Clear the screen after logging out ===<br />
<br />
To clear the screen after logging out on a virtual terminal:<br />
{{hc|~/.bash_logout|<br />
clear<br />
reset<br />
}}<br />
<br />
=== Auto "cd" when entering just a path ===<br />
<br />
Bash can automatically prepend {{ic|cd }} when entering just a path in the shell. For example:<br />
{{hc|$ /etc|<br />
bash: /etc: Is a directory<br />
}}<br />
<br />
But after adding one line into {{ic|.bashrc}} file:<br />
{{hc|~/.bashrc|<br />
...<br />
shopt -s autocd<br />
...<br />
}}<br />
<br />
You get:<br />
[user@host ~]$ /etc<br />
cd /etc<br />
[user@host etc]$<br />
<br />
=== Autojump ===<br />
<br />
{{Pkg|autojump}} allows navigating the file system by searching for strings in a database with the user's most-visited paths.<br />
<br />
After installation, {{ic|/etc/profile.d/autojump.bash}} must be [[source]]d in order to start using the application.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Line wrap on window resize ===<br />
<br />
When resizing a [[terminal emulator]], Bash may not receive the resize signal. This will cause typed text to not wrap correctly and overlap the prompt. The {{ic|checkwinsize}} shell option checks the window size after each command and, if necessary, updates the values of {{ic|LINES}} and {{ic|COLUMNS}}.<br />
<br />
{{hc|~/.bashrc|<br />
shopt -s checkwinsize<br />
}}<br />
<br />
=== Shell exits even if ignoreeof set ===<br />
<br />
If you have set the {{ic|ignoreeof}} option and you find that repeatedly hitting {{ic|ctrl-d}} causes the shell to exit, it is because this option only allows 10 consecutive invocations of this keybinding (or 10 consecutive EOF characters, to be precise), before exiting the shell.<br />
<br />
To allow higher values, you have to use the IGNOREEOF variable.<br />
<br />
For example:<br />
export IGNOREEOF=100<br />
<br />
== See also ==<br />
<br />
* [https://www.gnu.org/software/bash/manual/bashref.html Bash Reference Manual], or {{ic|/usr/share/doc/bash/bashref.html}}<br />
* [https://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html Readline Init File Syntax]<br />
* [http://www.aosabook.org/en/bash.html The Bourne-Again Shell] - The third chapter of ''The Architecture of Open Source Applications''<br />
* [http://shellcheck.net Shellcheck] - Check bash scripts for common errors<br />
<br />
=== Tutorials ===<br />
<br />
* [http://mywiki.wooledge.org/BashGuide BashGuide on Greg's Wiki]<br />
* [http://mywiki.wooledge.org/BashFAQ BashFAQ on Greg's Wiki]<br />
* [http://wiki.bash-hackers.org/doku.php Bash Hackers Wiki]<br />
* [http://wiki.bash-hackers.org/scripting/tutoriallist Bash Hackers: List of Bash online-tutorials]<br />
* [http://www.grymoire.com/Unix/Quote.html Quote Tutorial]<br />
<br />
=== Community ===<br />
<br />
* [irc://irc.freenode.net#bash An active and friendly IRC channel for Bash]<br />
* [http://bashscripts.org Bashscripts.org]<br />
<br />
=== Examples ===<br />
<br />
* [http://tldp.org/HOWTO/Xterm-Title-4.html How to change the title of an xterm]</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Metasploit_Framework&diff=279934Metasploit Framework2013-10-26T21:18:25Z<p>Nixpunk: h</p>
<hr />
<div>[[Category:Networking]]<br />
[[Category:Security]]<br />
{{stub}}<br />
== Overview ==<br />
<br />
Consider the MSF to be one of the single most useful auditing tools freely available to security professionals today. From a wide array of commercial grade exploits and an extensive exploit development environment, all the way to network information gathering tools and web vulnerability plugins. The Metasploit Framework provides a truly impressive work environment. The MSF is far more than just a collection of exploits, it's an infrastructure that you can build upon and utilize for your custom needs. This allows you to concentrate on your unique environment, and not have to reinvent the wheel.<br />
Currently, metasploit requires you to setup and configure postgresql on your system to work.<br />
This wiki will show you how to get metasploit-git working with a postgresql database.<br />
<br />
== Installation ==<br />
<br />
If you choose to install {{AUR|metasploit}} package, you can update the framework from within the msfconsole with:<br />
msf> svn update<br />
<br />
but the updates won't be tracked by pacman.<br />
<br />
A better solution is using {{AUR|metasploit-git}}.<br />
<br />
== Interfaces ==<br />
<br />
There are serveral interfaces you can use with MSF although msfconsole is the one that can provide the most features available in MSF. To run it, go to terminal and run:<br />
# /opt/metasploit/msfconsole<br />
<br />
or put the following alias into your {{ic|.bashrc}}:<br />
alias msfconsole='/opt/metasploit/msfconsole'<br />
<br />
Note that '''metasploit''' is installed in {{ic|/opt/metasploit/}} and '''metasploit-git''' in {{ic|/usr/src/metasploit/}} so for the git version you do not need the alias.<br />
<br />
Other interfaces are '''msfcli''' and '''msfgui'''.<br />
<br />
== See also ==<br />
<br />
* [http://www.offensive-security.com/metasploit-unleashed/Metasploit_Unleashed_Information_Security_Training Metasploit Unleashed] Free information security training.</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Improving_performance&diff=262472Improving performance2013-06-12T04:07:04Z<p>Nixpunk: /* Firefox */ Fixed phishing link</p>
<hr />
<div>[[Category:Hardware]]<br />
[[Category:System administration]]<br />
[[ar:Maximizing Performance]]<br />
[[es:Maximizing Performance]]<br />
[[ja:Maximizing Performance]]<br />
[[ru:Maximizing Performance]]<br />
[[zh-CN:Maximizing Performance]]<br />
This article is a retrospective analysis and basic rundown about gaining performance in Arch Linux.<br />
<br />
==The basics==<br />
<br />
===Know your system===<br />
The best way to tune a system is to target the bottlenecks, that is the subsystems that limit the overall speed. They usually can be identified by knowing the specifications of the system, but there are some basic indications:<br />
* If the computer becomes slow when big applications, like OpenOffice.org and Firefox, are running at the same time, then there is a good chance the amount of RAM is insufficient. To verify available RAM, use this command, and check for the line beginning with -/+buffers:<br />
$ free -m<br />
* If boot time is really slow, and if applications take a lot of time to load the first time they are launched, but run fine afterwards, then the hard drive is probably too slow. The speed of a hard drive can be measured using the hdparm command:<br />
$ hdparm -t /dev/sdx<br />
This is only the pure read speed of the hard drive, and is not a valid benchmark, but a value superior to 40MB/s (assuming drive tested while idle) can be considered decent on an average system. hdparm can be found in the [[Official Repositories]].<br />
* If the CPU load is consistently high even when RAM is available, then lowering CPU usage should be a priority. CPU load can be monitored in many ways, like using the top command:<br />
$ top<br />
* If the only applications lagging are the ones using direct rendering, meaning they use the graphic card, like video players and games, then improving the graphic performance should help. First step would be to verify if direct rendering simply is not enabled. This is indicated by the glxinfo command:<br />
$ glxinfo | grep direct<br />
glxinfo is part of mesa-demos package.<br />
<br />
===The first thing to do===<br />
The simplest and most efficient way of improving overall performance is to run lightweight environments and applications.<br />
* Use a [[Window Manager|window manager]] instead of a [[Desktop Environment]]. Choices include [[dwm]], [[wmii]], [[i3]], [[Awesome]], [[Openbox]], [[Fluxbox]] and [[JWM]].<br />
* Choose a minimal Desktop Environment over a heavier one like [[GNOME]] or [[KDE]]. Something like [[LXDE]] or [[Xfce]].<br />
* Using lightweight applications. Search [[Common Applications]] for console applications and the Light and Fast Applications Awards threads in the forum: [https://bbs.archlinux.org/viewtopic.php?id=41168 2007], [https://bbs.archlinux.org/viewtopic.php?id=67951 2008], [https://bbs.archlinux.org/viewtopic.php?id=78490 2009], [https://bbs.archlinux.org/viewtopic.php?id=88515 2010], [https://bbs.archlinux.org/viewtopic.php?id=111878 2011], and [https://bbs.archlinux.org/viewtopic.php?id=138281 2012]<br />
* Remove unnecessary [[daemons]].<br />
<br />
===Compromise===<br />
Almost all tuning brings drawbacks. Lighter applications usually come with less features and some tweaks may make a system unstable, or simply require time to implement and maintain. This page tries to highlight those drawbacks, but the final judgment rests on the user.<br />
<br />
===Benchmarking===<br />
The effects of optimization are often difficult to judge. They can however be measured by [[benchmarking]] tools<br />
<br />
==Storage devices==<br />
===Device Layout===<br />
One of the biggest performance gains comes from having multiple storage devices in a layout that spreads the operating system work around. Having {{ic|/}} {{ic|/home}} {{ic|/var}} and {{ic|/usr}} on separate disks is dramatically faster than a single disk layout where they are all on the same hard drive.<br />
<br />
====Swap Files====<br />
Creating your swap files on a separate disk can also help quite a bit, especially if your machine swaps frequently. It happens if you do not have enough RAM for your environment. Using KDE with all the features and applications that come along may require several GiB of memory, whereas a tiny window manager with console applications will perfectly fit in less than 512 MiB of memory.<br />
<br />
====RAID Benefits====<br />
If you have multiple disks (2 or more) available, you can set them up as a software [[RAID]] for serious speed improvements. In a RAID 0 array there is no redundancy in case of drive failure, but for each additional disk you add to the array, the speed of the disk becomes that much faster. The smart choice is to use RAID 5 which offers both speed and data protection.<br />
<br />
====Multiple Hardware Paths====<br />
An internal hardware path is how the storage device is connected to your motherboard. There are different ways to connect to the motherboard such as TCP/IP through a NIC, plugged in directly using PCIe/PCI, Firewire, Raid Card, USB, etc. By spreading your storage devices across these multiple connection points you maximize the capabilities of your motherboard, for example 6 hard-drives connected via USB would be much much slower than 3 over USB and 3 over Firewire. The reason is that each entry path into the motherboard is like a pipe, and there is a set limit to how much can go through that pipe at any one time. The good news is that the motherboard usually has several pipes.<br />
<br />
More Examples<br />
# Directly to the motherboard using pci/PCIe/ata<br />
# Using an external enclosure to house the disk over USB/Firewire<br />
# Turn the device into a network storage device by connecting over tcp/ip<br />
<br />
Note also that if you have a 2 USB ports on the front of your machine, and 4 USB ports on the back, and you have 4 disks, it would probably be fastest to put 2 on front/2 on back or 3 on back/1 on front. This is because internally the front ports are likely a separate Root Hub than the back, meaning you can send twice as much data by using both than just 1. Use the following commands to determine the various paths on your machine.<br />
<br />
{{hc|USB Device Tree|$ lsusb -tv}}<br />
<br />
{{hc|PCI Device Tree|$ lspci -tv}}<br />
<br />
===Partitioning===<br />
The partition layout can influence the system's performance. Sectors at the beginning of the drive (closer to the center of the disk) are faster than those at the end. Also, a smaller partition requires less movements from the drive's head, and so speed up disk operations. Therefore, it is advised to create a small partition (10gb, more or less depending on your needs) only for your system, as near to the beginning of the drive as possible. Other data (pictures, videos) should be kept on a separate partition, and this is usually achieved by separating the home directory (/home/user) from the system (/).<br />
<br />
===Choosing and tuning your filesystem===<br />
Choosing the best filesystem for a specific system is very important because each has its own strengths. The [[Beginner%27s_Guide#Filesystem_types|beginner's guide]] provides a short summary of the most popular ones. You can also find relevant articles [[:Category:File systems|here]].<br />
<br />
====Summary====<br />
*XFS: Excellent performance with large files. Low speed with small files. A good choice for /home.<br />
*Ext3: Average performance, reliable.<br />
*Ext4: Great overall performance, reliable, has performance issues with sqlite and some other databases.<br />
*JFS: Good overall performance, very low CPU usage, extremely fast resume after power failure.<br />
*Btrfs: Probably best overall performance (with compression) and lots of features. Still in heavy development and fully supported, but considered as unstable. Do not use this filesystem yet unless you know what you are doing and are prepared for potential data loss.<br />
<br />
====Mount options====<br />
Mount options offer an easy way to improve speed without reformatting. They can be set using the mount command:<br />
$ mount -o option1,option2 /dev/partition /mnt/partition<br />
To set them permanently, you can modify /etc/fstab to make the relevant line look like this:<br />
/dev/partition /mnt/partition partitiontype option1,option2 0 0<br />
The mount options {{Ic|noatime,nodiratime}} are known for improving performance on almost all file-systems. The former is a superset of the latter (which applies to directories only -- {{Ic|noatime}} applies to both files and directories). In rare cases, for example if you use mutt, it can cause minor problems. You can instead use the {{Ic|relatime}} option (NB relatime is the default in >2.6.30)<br />
<br />
====Ext3====<br />
See [[Ext3]].<br />
<br />
====Ext4====<br />
See [[Ext4#Tips_and_tricks | Ext4]].<br />
<br />
====JFS====<br />
See [[JFS Filesystem#Optimizations| JFS Filesystem]].<br />
<br />
====XFS====<br />
For optimal speed, just create an XFS file-system with:<br />
$ mkfs.xfs /dev/thetargetpartition<br />
Yep, so simple — since all of the [http://xfs.org/index.php/XFS_FAQ#Q:_I_want_to_tune_my_XFS_filesystems_for_.3Csomething.3E "boost knobs" are already "on" by default].<br />
<br />
==== Reiserfs ====<br />
<br />
The {{Ic|<nowiki>data=writeback</nowiki>}} mount option improves speed, but may corrupt data during power loss. The {{Ic|notail}} mount option increases the space used by the filesystem by about 5%, but also improves overall speed. You can also reduce disk load by putting the journal and data on separate drives. This is done when creating the filesystem: <br />
<br />
$ mkreiserfs –j /dev/hda1 /dev/hdb1<br />
<br />
Replace /dev/hda1 with the partition reserved for the journal, and /dev/hdb1 with the partition for data. You can learn more about reiserfs with this [http://www.funtoo.org/en/articles/linux/ffg/2/ article].<br />
<br />
====Btrfs====<br />
See [[Btrfs#Defragmentation|defragmentation]] and [[Btrfs#Compression|compression]].<br />
<br />
===Compressing /usr===<br />
{{Note|As of version 3.0 of the Linux kernel, aufs2 is no longer supported.}}<br />
{{out of date|aufs is no longer in the official repos. Also, read the Note box above.}}<br />
A way to speed up reading from the hard drive is to compress the data, because there is less data to be read. It must however be decompressed, which means a greater CPU load. Some file systems support transparent compression, most notably Btrfs and reiserfs4, but their compression ratio is limited by the 4k block size. A good alternative is to compress {{ic|/usr}} in a squashfs file, with a 64k(128k) block size, as instructed in this [http://forums.gentoo.org/viewtopic-t-646289.html Gentoo forums thread]. What this tutorial does is basically to compress the {{ic|/usr}} folder into a compressed squashfs file-system, then mounts it with aufs. A lot of space is saved, usually two thirds of the original size of {{ic|/usr}}, and applications load faster. However, each time an application is installed or reinstalled, it is written uncompressed, so {{ic|/usr}} must be re-compressed periodically. Squashfs is already in the kernel, and aufs2 is in the official repositories, so no kernel compilation is needed if using the stock kernel.<br />
Since the linked guide is for Gentoo, the next commands outline the steps specifically for Arch. To get it working, [[pacman|install]] the packages {{pkg|aufs2}} and {{pkg|squashfs-tools}}. These packages provide the aufs-modules and some userspace-tools for the squash-filesystem.<br />
<br />
Now we need some extra directories where we can store the archive of {{ic|/usr}} as read-only and another folder where we can store the data changed after the last compression as writeable:<br />
# mkdir -p /squashed/usr/{ro,rw}<br />
Now that we got a rough setup you should perform a complete system-upgrade since every change of content in {{ic|/usr}} after the compression will be excluded from this speedup. If you use prelink you should also perform a complete prelink before creating the archive. Now it is time to invoke the command to compress {{ic|/usr}}:<br />
# mksquashfs /usr /squashed/usr/usr.sfs -b 65536<br />
These parameters/options are the ones suggested by the Gentoo link but there might be some room for improvement using some of the options described [http://www.tldp.org/HOWTO/SquashFS-HOWTO/mksqoverview.html#mksqusing here].<br />
Now to get the archive mounted together with the writeable folder it is necessary to edit {{ic|/etc/fstab}} and add the following lines:<br />
/squashed/usr/usr.sfs /squashed/usr/ro squashfs loop,ro 0 0 <br />
usr /usr aufs udba=reval,br:/squashed/usr/rw:/squashed/usr/ro 0 0<br />
Now you should be done and able to reboot. The original author suggests to delete all the old content of {{ic|/usr}}, but this might cause some problems if anything goes wrong during some later re-compression. It is safer to leave the old files in place.<br />
<br />
A [https://bbs.archlinux.org/viewtopic.php?pid=714052 Bash script] has been created that will automate the process of re-compressing (read updating) the archive since the tutorial is meant for Gentoo and some options do not correlate to what they should be in Arch.<br />
<br />
===Tuning for an SSD===<br />
[[SSD#Tips_for_Maximizing_SSD_Performance]]<br />
<br />
===RAM disks / tuning for really slow disks===<br />
* [http://cs.joensuu.fi/~mmeri/usbraid/ USB stick RAID]<br />
* [https://bbs.archlinux.org/viewtopic.php?pid=493773#p493773 Combine RAM disk with disk in RAID]<br />
<br />
==CPU==<br />
The only way to directly improve CPU speed is overclocking. As it is a complicated and risky task, it is not recommended for anyone except experts. The best way to overclock is through the BIOS. When purchasing your system, keep in mind that most Intel motherboards are notorious for disabling the capacity to overclock.<br />
<br />
Many Intel i5 and i7 chips, even when overclocked properly through the BIOS or UEFI interface, will not report the correct clock frequency to acpi_cpufreq and most other utilities. This will result in excessive messages in dmesg about delays unless the module acpi_cpufreq is unloaded and blacklisted. The only tool known to correctly read the clock speed of these overclocked chips under Linux is i7z. The i7z package is available in the community repo and i7z-svn is available in the AUR.<br />
<br />
A way to modify performance ([http://lkml.org/lkml/2009/9/6/136 ref]) is to use Con Kolivas' desktop-centric kernel patchset, which, among other things, replaces the Completely Fair Scheduler (CFS) with the Brain Fuck Scheduler (BFS).<br />
<br />
Kernel PKGBUILDs that include the BFS patch can be installed from the [[AUR]] or [[Unofficial User Repositories]]. See the respective pages for {{AUR|linux-ck}} and [[Linux-ck]] wiki page, {{AUR|linux-bfs}} or {{AUR|linux-pf}} for more information on their additional patches.<br />
<br />
{{Note|BFS/CK are designed for desktop/laptop use and not servers. They provide low latency and work well for 16 CPUs or less. Also, Con Kolivas suggests setting HZ to 1000. For more information, see the [http://ck.kolivas.org/patches/bfs/bfs-faq.txt BFS FAQ] and [http://users.on.net/~ckolivas/kernel/ Kernel patch homepage of Con Kolivas].}}<br />
<br />
===Verynice===<br />
[[Verynice]] is a daemon, available in the [[AUR]] as {{AUR|verynice}}, for dynamically adjusting the nice levels of executables. The nice level represents the priority of the executable when allocating CPU resources. Simply define executables for which responsiveness is important, like X or multimedia applications, as ''goodexe'' in {{ic|/etc/verynice.conf}}. Similarly, CPU-hungry executables running in the background, like make, can be defined as ''badexe''. This prioritization greatly improves system responsiveness under heavy load.<br />
<br />
===Ulatencyd===<br />
[[Ulatencyd]] is a daemon that controls how the Linux kernel will spend its resources on the running processes. It uses dynamic cgroups to give the kernel hints and limitations on processes. It supports prioritizing processes for disk I/O as well as CPU shares, and uses more clever heuristics than Verynice. In addition, it comes with a good set of configs out of the box.<br />
<br />
One note of warning, by default it changes the default scheduler of all block devices to cfq, to disable behavior see [[Ulatencyd]].<br />
<br />
==Graphics==<br />
<br />
===Xorg.conf configuration===<br />
Graphic performance heavily depends on the settings in {{ic|/etc/X11/xorg.conf}}. There are tutorials for [[Nvidia]], [[ATI]] and [[Intel]] cards. Improper settings may stop Xorg from working, so caution is advised.<br />
<br />
===Driconf===<br />
Driconf is a small utility that can be found in the [[official repositories]] that allows you to change the direct rendering settings for open source drivers. Enabling HyperZ can drastically improve performance.<br />
<br />
===GPU Overclocking===<br />
Overclocking a graphics card is typically more expedient than with a CPU, since there are readily accessible software packages which allow for on-the-fly GPU clock adjustments. For ATI users, get {{AUR|rovclock}} or {{AUR|amdoverdrivectrl}}, and Nvidia users should get {{AUR|nvclock}} from AUR. Intel chipsets users can install [http://www.gmabooster.com/ GMABooster] from with the {{AUR|gmabooster}} AUR package.<br />
<br />
The changes can be made permanent by running the appropriate command after X boots, for example by adding it to {{ic|~/.xinitrc}}. A safer approach would be to only apply the overclocked settings when needed.<br />
<br />
==RAM and swap==<br />
=== Relocate files to tmpfs ===<br />
Relocate files, such as your browser profile, to a [[Wikipedia:tmpfs|tmpfs]] file system, including {{ic|/tmp}}, or {{ic|/dev/shm}} for improvements in application response as all the files are now stored in RAM.<br />
<br />
Use an active management script for maximal reliability and ease of use. <br />
<br />
Refer to the [[Profile-sync-daemon]] wiki article for more information on syncing browser profiles.<br />
<br />
Refer to the [[Anything-sync-daemon]] wiki article for more information on syncing any specified folder.<br />
<br />
=== Swappiness ===<br />
<br />
The swappiness represent how much the kernel prefers swap to RAM. Setting it to a very low value, meaning the kernel will almost always use RAM, is known to improve responsiveness on many systems. To do that, simply add these lines to {{ic|/etc/sysctl.conf}}:<br />
<br />
vm.swappiness=20<br />
vm.vfs_cache_pressure=50<br />
<br />
To test and more on why this may work, take a look at this [http://rudd-o.com/en/linux-and-free-software/tales-from-responsivenessland-why-linux-feels-slow-and-how-to-fix-that article].<br />
<br />
===Compcache / Zram ===<br />
[https://code.google.com/p/compcache/ Compcache], nowadays replaced by the '''zram''' kernel module, creates a device in RAM and compresses it. If you use for swap means that part of the RAM can hold much more information but uses more CPU. Still, it is much quicker than swapping to a hard drive. If a system often falls back to swap, this could improve responsiveness. Zram is in mainline staging (therefore its not stable yet, use with caution).<br />
<br />
The AUR package {{aur|zramswap}} provides an automated script fot setting up such swap devices with optimal settings for your system (such as RAM size and CPU core number). The script creates one zram device per CPU core with a total space equivalent to the RAM available. To do this automatically on every boot:<br />
<br />
* If you use [[rc.conf|initscripts]], add {{ic|zramswap}} to the DAEMONS array in {{ic|/etc/rc.conf}}.<br />
* If you use [[systemd]], enable {{ic|zramswap.service}} via systemctl. <br />
<br />
You will have a compressed swap with higher priority than your regular swap which will utilize multiple CPU cores for compessing data.<br />
<br />
{{Tip|Using zram is also a good way to reduce disk read/write cycles due to swap on SSDs.}}<br />
{{Note|The service file (and rc.d script) have been moved to a separate package in the AUR called [https://aur.archlinux.org/packages/zramswap/ zramswap].}}<br />
<br />
===Using the graphic card's RAM===<br />
In the unlikely case that you have very little RAM and a surplus of video RAM, you can use the latter as swap. See [[Swap on video ram]].<br />
<br />
=== Preloading ===<br />
Preloading is the action of putting and keeping target files into the RAM. The benefit is that preloaded applications start more quickly because reading from the RAM is always quicker than from the hard drive. However, part of your RAM will be dedicated to this task, but no more than if you kept the application open. Therefore preloading is best used with large and often-used applications like Firefox and OpenOffice.<br />
==== Go-preload ====<br />
[https://aur.archlinux.org/packages.php?ID=34207 Go-preload] is a small daemon created in the [http://forums.gentoo.org/viewtopic-t-789818-view-next.html?sid=5457cff93039fc7d4a3e445ef90f9821 Gentoo forum]. To use it, first run this command in a terminal for each program you want to preload at boot:<br />
# gopreload-prepare program<br />
Then, as instructed, press Enter when the program is fully loaded. This will add a list of files needed by the program in {{ic|/usr/share/gopreload/enabled}}. To load all lists at boot, add {{ic|gopreload}} to your DAEMONS array in {{ic|/etc/rc.conf}}. To disable the loading of a program, remove the appropriate list in {{ic|/usr/share/gopreload/enabled}} or move it to {{ic|/usr/share/gopreload/disabled}}.<br />
<br />
====Preload====<br />
A more automated approach is used by [[Preload]]. All you have to do is enable it with this command:<br />
# systemctl enable preload<br />
It will monitor the most used files on your system, and with time build its own list of files to preload at boot.<br />
<br />
====Readahead====<br />
[[Readahead]] is a tool that can cache files before they are needed and help accelerate program loading.<br />
<br />
==Boot time==<br />
You can find tutorials with good tips in the article [[Improve Boot Performance]].<br />
<br />
===Suspend to RAM===<br />
The best way to reduce boot time is not booting at all. Consider [[Suspend to RAM|suspending your system to RAM]] instead.<br />
<br />
==Application-specific tips==<br />
===Firefox===<br />
The [[Firefox Tweaks]] article offers good tips; notably [[Firefox Tweaks#Turn off anti-phishing|turning off anti-phishing]] and [[Firefox Tweaks#Defragment the profile's SQLite databases|cleaning the SQlite database]]. See also: [[Firefox Ramdisk|Firefox in Ramdisk]].<br />
<br />
Firefox in the official repositories is built with the profile guided optimization flag enabled. You may want to use it in your custom build.<br />
To do this append<br />
ac_add_options --enable-profile-guided-optimization<br />
to your mozconfig.<br />
<br />
===Gcc/Makepkg===<br />
See [[Ccache]].<br />
<br />
===LibreOffice===<br />
See [[LibreOffice#Speed up LibreOffice|Speed up LibreOffice]].<br />
<br />
===Pacman===<br />
See [[Improve Pacman Performance]].<br />
<br />
===SSH===<br />
See [[SSH#Speeding up SSH|Speed up SSH]].<br />
<br />
==Laptops==<br />
See [[Laptop]].</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=I3&diff=255610I32013-04-29T00:23:47Z<p>Nixpunk: fixed typo</p>
<hr />
<div>{{DISPLAYTITLE:i3}}<br />
[[Category:Tiling WMs]]<br />
[[Category:Dynamic WMs]]<br />
[[ko:i3]]<br />
[http://i3wm.org/ i3] is a dynamic [[Wikipedia:Tiling window manager|tiling window manager]] inspired by [[wmii]] that is primarily targeted at developers and advanced users.<br />
<br />
Clients (windows) are organized in a tree data structure within containers. The tree branches via horizontal or vertical splits, and containers can also be set to tabbed or stacked layouts. Floating windows are available for corner cases that don't mix well with tiling, and remain on a separate layer above the tiled windows.<br />
<br />
== Installation ==<br />
Install the {{Pkg|i3}} [[Pacman#Installing package groups|package group]] from the [[official repositories]], which includes the {{Pkg|i3lock}}, {{Pkg|i3status}} and {{Pkg|i3-wm}} packages. Install {{ic|i3-wm}} for the window manger, {{ic|i3status}} to write a status line to i3bar through [[Wikipedia:Standard streams#Standard output (stdout)|stdout]], or {{ic|i3lock}} for an improved screenlocker.<br />
<br />
Additional packages are available in the [[Arch User Repository]]. Install {{AUR|i3-git}} for the development version. Install {{AUR|i3-gnome}} to add a [[GNOME]]-session.<br />
<br />
== Configuration ==<br />
<br />
Edit your {{ic|~/.xinitrc}} and add:<br />
exec i3<br />
If you want i3 to log its output (useful for debugging), add this line to {{ic|~/.xinitrc}}:<br />
exec i3 -V >> ~/.i3/i3log 2>&1<br />
If you use the Nvidia binary driver '''<302.17''' you need to add the --force-xinerama flag to {{ic|~/.xinitrc}}. A detailed explanation can be found at [http://i3wm.org/docs/multi-monitor.html i3wm.org].<br />
exec i3 --force-xinerama<br />
<br />
=== Status bar ===<br />
The internal status bar, i3-''ws''bar, was deprecated and replaced by i3bar in i3 v4.0.<br />
<br />
==== New method: i3bar ====<br />
Unlike i3-wsbar, which requires dzen2, i3bar does not have any dependencies other than {{Pkg|i3-wm}}. It can be used to view information generated by [[conky]] or i3status. For example (as of version 4.1):<br />
{{hc|~/.i3/config|<nowiki><br />
bar {<br />
output LVDS1<br />
status_command i3status<br />
position top<br />
mode hide<br />
workspace_buttons yes<br />
tray_output none<br />
<br />
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1<br />
<br />
colors {<br />
background #000000<br />
statusline #ffffff<br />
<br />
focused_workspace #ffffff #285577<br />
active_workspace #ffffff #333333<br />
inactive_workspace #888888 #222222<br />
urgent_workspace #ffffff #900000<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
For further information see the [http://i3wm.org/docs/userguide.html#_configuring_i3bar Configuring i3bar] section of the official User Guide.<br />
<br />
==== Comparison of i3bar and dzen2 ====<br />
This comparison of i3bar and dzen2 only takes into account how well the two programs can handle the input from conky or i3status.<br />
{| border="1" cellpadding="5" align="center"<br />
! Program !! Color Codes !! Formatting !! Special Fonts !! Dock !! Trayer<br />
|-<br />
| i3bar || Yes || No, right aligned || No (UTF8 only)|| Yes || Yes<br />
|-<br />
| dzen2 || Yes || No, left aligned || Yes || Yes (the svn version) || No<br />
|-<br />
|}<br />
<br />
Though development of i3bar is very active and support for custom formatting and fonts has been announced, dzen2-svn has an edge over i3bar (as of August 7th).<br />
<br />
==== Alternatives ====<br />
* [https://github.com/enkore/i3pystatus i3pystatus] - extensible i3status replacement with many modules and very flexible configuration. Multi-threaded and lock-up free.<br />
* [https://github.com/ultrabug/py3status py3status] – an extensible i3status wrapper written in python<br />
<br />
=== Quickly jumping to open window ===<br />
* [https://github.com/proxypoke/quickswitch-for-i3 quickswitch-for-i3] – A Python utility to quickly change to and locate windows in i3<br />
* [https://github.com/yiuin/i3-wm-scripts i3-wm-scripts] – search for and jump to windows with particular names matching regexp<br />
* [https://github.com/ziberna/i3-py/tree/master/examples#winmenupy winmenupy] launches dmenu with a list of clients, sorted after workspaces. Selecting a client jumps to that window.<br />
<br />
== Suspending with i3lock ==<br />
You need to add unit file below and enable it with {{ic|# systemctl enable suspend@<user>.service}}.<br />
<br />
{{hc|/etc/systemd/system/suspend@.service|2=<nowiki><br />
[Unit]<br />
Description=Starts i3lock at suspend time<br />
Before=sleep.target<br />
<br />
[Service]<br />
User=%I<br />
Type=forking<br />
Environment=DISPLAY=:0<br />
ExecStartPre= <br />
ExecStart=/usr/bin/i3lock<br />
<br />
[Install]<br />
WantedBy=sleep.target</nowiki>}}<br />
<br />
== Usage ==<br />
{{Box BLUE||See the [http://i3wm.org/docs official documentation] on this subject for more information: [http://i3wm.org/docs/userguide.html i3 User’s Guide]}}<br />
<br />
i3 currently uses [[dmenu]] as a application launcher, which is bound by default to {{Keypress|Mod1|background=#FF0}}+{{Keypress|d}}.<br />
<br />
=== Clipboard (copy & paste issues) ===<br />
<br />
By default, when you close a window, the buffer with the clipboard info will dissapear. You have to use a clipboard manager like "Parcellite" to avoid that.<br />
<br />
== See also ==<br />
* [[Comparison of Tiling Window Managers]]<br />
* [http://i3wm.org Official website]<br />
* [http://code.stapelberg.de/git/i3 Source code]<br />
* [https://wiki.archlinux.org/index.php/Systemd#Suspend.2Fresume_service_files Suspend/resume service files]<br />
* [https://github.com/ashinkarov/i3-extras Collection of scripts and patches]<br />
'''Arch Linux Forums'''<br />
* [https://bbs.archlinux.org/viewtopic.php?id=99064 ''The i3 thread''] - A general discussion about i3<br />
* [https://bbs.archlinux.org/viewtopic.php?pid=1229978 ''i3 desktop screenshots and config sharing'']</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Awesome&diff=254933Awesome2013-04-22T20:08:30Z<p>Nixpunk: /* YouTube: fullscreen appears in background */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[[Category:Tiling WMs]]<br />
[[cs:Awesome]]<br />
[[es:Awesome]]<br />
[[fr:Awesome3]]<br />
[[it:Awesome]]<br />
[[ja:Awesome]]<br />
[[ko:Awesome]]<br />
[[ru:Awesome]]<br />
[[sv:Awesome]]<br />
[[zh-CN:Awesome]]<br />
{{Lowercase title}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|A guide on how to install, use, configure, and customize awesome window manager.}}<br />
{{Article summary end}}<br />
<br />
From the [[Wikipedia:awesome (window manager)|awesome]] website:<br />
<br />
"''[http://awesome.naquadah.org/ awesome] is a highly configurable, next generation framework window manager for X. It is very fast, extensible and licensed under the GNU GPLv2 license.''<br />
<br />
''It is primarly targeted at power users, developers and any people dealing with every day computing tasks and who want to have fine-grained control on its graphical environment.''"<br />
<br />
==Installation==<br />
<br />
Install {{pkg|awesome}} from the [[official repositories]].<br />
<br />
For pre-release versions, an {{aur|awesome-git}} build is in the [[Arch User Repository|AUR]]. These versions are not considered stable and may have a different configuration syntax.<br />
<br />
== Run awesome ==<br />
<br />
=== Without login manager ===<br />
To run awesome without a login manager, simply add {{Ic|exec awesome}} to the startup script of your choice (e.g. ~/.xinitrc.)<br />
<br />
See [[xinitrc]] for details, such as preserving the logind (and/or consolekit) session.<br />
<br />
You can also start awesome as preferred user without even logging in. See [[Start X at Login]].<br />
<br />
=== With login manager ===<br />
To start awesome from a login manager, see [[Display Manager|this article]].<br />
<br />
==== KDM ====<br />
<br />
Create as root:<br />
{{hc|/usr/share/apps/kdm/sessions/awesome.desktop|2=<br />
[Desktop Entry]<br />
Name=Awesome<br />
Comment=Tiling Window Manager<br />
Type=Application<br />
Exec=/usr/bin/awesome<br />
TryExec=/usr/bin/awesome<br />
}}<br />
<br />
==Configuration==<br />
Awesome includes some good default settings right out of the box, but sooner or later you'll want to change something. The lua based configuration file is at {{Ic|~/.config/awesome/rc.lua}}.<br />
<br />
===Creating the configuration file===<br />
First, run the following to create the directory needed in the next step:<br />
$ mkdir -p ~/.config/awesome/<br />
<br />
Whenever compiled, awesome will attempt to use whatever custom settings are contained in ~/.config/awesome/rc.lua. This file is not created by default, so we must copy the template file first:<br />
$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/<br />
<br />
The syntax of the configuration often changes when awesome updates. So, remember to repeat the command above when you get something strange with awesome, or you'd like to modify the configuration.<br />
<br />
For more information about configuring awesome, check out the [http://awesome.naquadah.org/wiki/Awesome_3_configuration configuration page at awesome wiki]<br />
<br />
===More configuration resources===<br />
{{Note|The syntax of awesome configuration changes regularly, so you will likely have to modify any file you download.}}<br />
<br />
Some good examples of rc.lua would be as follows:<br />
<br />
* http://git.sysphere.org/awesome-configs/tree/ - Awesome 3.4 configurations from Adrian C. (anrxc).<br />
* http://pastebin.com/f6e4b064e - Darthlukan's awesome 3.4 configuration. <br />
* http://www.ugolnik.info/downloads/awesome/rc.lua - Awesome 3.1 configuration with small titlebar and statusbar.<br />
* https://github.com/setkeh/Awesome - [[User:Setkeh|Setkeh]]'s 3.4 Configuration.<br />
* https://github.com/setkeh/Awesome-Laptop-3.5 - [[User:Setkeh|Setkeh]]'s 3.5 Configuration.<br />
* http://awesome.naquadah.org/wiki/User_Configuration_Files - Collection of user configurations on the awesome homepage.<br />
<br />
===Debugging rc.lua===<br />
<br />
[https://www.archlinux.org/packages/?q=xephyr Xephyr] allows you to run X nested in another X's client window. This allows you to debug rc.lua without breaking your current desktop. Start by copying rc.lua into a new file (e.g. rc.lua.new), and modify it as needed. Then run new instance of awesome in Xephyr, supplying rc.lua.new as a config file like this:<br />
<br />
$ Xephyr :1 -ac -br -noreset -screen 1152x720 &<br />
$ DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new<br />
<br />
The advantage of this approach is that if you introduce bugs you do not break your current awesome desktop, potentially crashing X apps and losing work. Once you are happy with the new configuration, copy rc.lua.new to rc.lua and restart awesome.<br />
<br />
An alternative to Xepher is {{aur|awmtt}} which provides the above functionality and more.<br />
<br />
===Changing Keyboard Layout===<br />
<br />
If it were necessary for someone to need a different keyboard layout [qwerty -> dvorak] there are methods for such listed [http://awesome.naquadah.org/wiki/Change_keyboard_maps#Display.2Fchange_keyboard_map here on the awesome wiki].<br />
<br />
==Themes==<br />
<br />
[http://awesome.naquadah.org/wiki/Beautiful Beautiful] is a lua library that allows you to theme awesome using an external file, it becomes very easy to dynamically change your whole awesome colours and wallpaper without changing your {{ic|rc.lua}}. <br />
<br />
The default theme is at {{ic|/usr/share/awesome/themes/default}}. Copy it to {{ic|~/.config/awesome/themes/default}} and change {{ic|theme_path}} in {{ic|rc.lua}}. <br />
beautiful.init(awful.util.getdir("config") .. "/themes/default/theme.lua")<br />
<br />
More details [http://awesome.naquadah.org/wiki/Beautiful here]<br />
<br />
A few sample [http://awesome.naquadah.org/wiki/Beautiful_themes themes]<br />
<br />
===Setting up your wallpaper===<br />
{{out of date | With version 3.5 Awesome no longer provides a awsetbg command, instead it has a gears module. You can find how to use it in default config}}<br />
Beautiful can handle your wallpaper, thus you do not need to set it up in your {{ic|.xinitrc}} or {{ic|.xsession}} files. This allows you to have a specific wallpaper for each theme. If you take a look at the default theme file you'll see a wallpaper_cmd key, the given command is executed when {{ic|beautiful.init}}("path_to_theme_file") is run. You can put here you own command or remove/comment the key if you do not want Beautiful to interfere with your wallpaper business.<br />
<br />
For instance, if you use {{ic|awsetbg}} to set your wallpaper, you can write in the {{ic|theme.lua}} page that you just selected:<br />
<br />
theme.wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }<br />
<br />
{{Note|For awsetbg to work you need to have a program that can manage desktop backgrounds installed. For example '''[[Feh]]'''.}}<br />
<br />
====Random Background Image====<br />
<br />
add this to your {{ic|rc.lua}}(for awesome >= 3.5 ):<br />
{{bc|1=<br />
-- configuration - edit to your liking<br />
wp_index = 1<br />
wp_timeout = 10<br />
wp_path = "/path/to/wallpapers/"<br />
wp_files = { "01.jpg", "02.jpg", "03.jpg" }<br />
<br />
-- setup the timer<br />
wp_timer = timer { timeout = wp_timeout }<br />
wp_timer:connect_signal("timeout", function()<br />
<br />
-- set wallpaper to current index<br />
gears.wallpaper.maximized( wp_path .. wp_files[wp_index] , s, true)<br />
<br />
-- stop the timer (we don't need multiple instances running at the same time)<br />
wp_timer:stop()<br />
<br />
-- get next random index<br />
wp_index = math.random( 1, #wp_files)<br />
<br />
--restart the timer<br />
wp_timer.timeout = wp_timeout<br />
wp_timer:start()<br />
end)<br />
<br />
-- initial start when rc.lua is first run<br />
wp_timer:start()<br />
}}<br />
<br />
To rotate the wallpapers randomly, just comment the {{ic|wallpaper_cmd}} line above, and add a script into your {{ic|.xinitrc}} with the codes below(for awesome <= 3.4 ):<br />
{{bc|<br />
while true;<br />
do<br />
awsetbg -r <path/to/the/directory/of/your/wallpapers><br />
sleep 15m<br />
done &<br />
}}<br />
<br />
==Tips & Tricks==<br />
Feel free to add any tips or tricks that you would like to pass on to other awesome users.<br />
<br />
===Use awesome as GNOME's window manager===<br />
GNOME has the advantage of being very "ready to use" and integrating. You can set up GNOME to use awesome as the visual interface, but have GNOME work in the background for your pleasure. If you are using GNOME 3, you can simply install the [https://aur.archlinux.org/packages.php?ID=53096 awesome-gnome] package, then when logging in with GDM, choose the session type "Awesome GNOME". See the [http://awesome.naquadah.org/wiki/Quickly_Setting_up_Awesome_with_Gnome awesome wiki] for details.<br />
<br />
===Expose effect like compiz===<br />
<br />
Revelation brings up a view of all your open clients; left-clicking a client pops to the first tag that client is visible on and raises/focuses the client. In addition, the Enter key pops to the currently focused client, and Escape aborts. <br />
<br />
http://awesome.naquadah.org/wiki/Revelation<br />
<br />
===Hide / show wibox in awesome 3===<br />
<br />
To map Modkey-b to hide/show default statusbar on active screen (as default in awesome 2.3), add to your ''globalkeys'' in rc.lua:<br />
<br />
awful.key({ modkey }, "b", function ()<br />
mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible<br />
end),<br />
<br />
===Enable printscreens===<br />
<br />
To enable printscreens in awesome through the PrtScr button you need to have a screen capturing program.<br />
Scrot is a easy to use utility for this purpose and is available in Arch repositories.<br />
<br />
Just type:<br />
# pacman -S scrot<br />
<br />
and install optional dependencies if you feel that you need them.<br />
<br />
Next of we need to get the key name for PrtScr, most often this is named "Print" but one can never be too sure.<br />
<br />
Start up:<br />
# xev<br />
<br />
And press the PrtScr button, the output should be something like:<br />
KeyPress event ....<br />
root 0x25c, subw 0x0, ...<br />
state 0x0, keycode 107 (keysym 0xff61, '''Print'''), same_screen YES,<br />
....<br />
<br />
In my case as you see, the keyname is Print.<br />
<br />
Now to the configuration of awesome!<br />
<br />
Somewhere in your globalkeys array (doesn't matter where) type:<br />
<br />
Lua code:<br />
<br />
awful.key({ }, "Print", function () awful.util.spawn("scrot -e 'mv $f ~/screenshots/ 2>/dev/null'") end),<br />
<br />
Also, this function saves screenshots inside ~/screenshots/, edit this to fit your needs.<br />
<br />
===Dynamic tagging===<br />
<br />
[http://awesome.naquadah.org/wiki/Eminent Eminent] is a small lua library that monkey-patches awful to provide you with effortless and quick wmii-style dynamic tagging. Unlike shifty, eminent does not aim to provide a comprehensive tagging system, but tries to make dynamic tagging as simple as possible. In fact, besides importing the eminent library, you do not have to change your rc.lua at all, eminent does all the work for you.<br />
<br />
[http://awesome.naquadah.org/wiki/Shifty Shifty] is an Awesome 3 extension that implements dynamic tagging. It also implements fine client matching configuration allowing YOU to be the master of YOUR desktop only by setting two simple config variables and some keybindings!<br />
<br />
===Space Invaders===<br />
[http://awesome.naquadah.org/wiki/Space_Invaders Space Invaders] is a demo to show the possibilities of the Awesome Lua API.<br />
<br />
Please note that it is no longer included in the Awesome package since the 3.4-rc1 release.<br />
<br />
===Naughty for popup notification===<br />
See [http://awesome.naquadah.org/wiki/Naughty the awesome wiki page on naughty].<br />
<br />
===Popup Menus===<br />
There's a simple menu by default in awesome3, and customed menus seem very easy now. However, if you're using 2.x awesome, have a look at ''[http://awesome.naquadah.org/wiki/Awful.menu awful.menu]''.<br />
<br />
If you want a freedesktop.org menu, you could take a look at ''[https://github.com/terceiro/awesome-freedesktop awesome-freedesktop]'' .<br />
<br />
An example for awesome3:<br />
{{bc|1=<br />
myawesomemenu = {<br />
{ "lock", "xscreensaver-command -activate" },<br />
{ "manual", terminal .. " -e man awesome" },<br />
{ "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },<br />
{ "restart", awesome.restart },<br />
{ "quit", awesome.quit }<br />
}<br />
<br />
mycommons = {<br />
{ "pidgin", "pidgin" },<br />
{ "OpenOffice", "soffice-dev" },<br />
{ "Graphic", "gimp" }<br />
}<br />
<br />
mymainmenu = awful.menu.new({ items = { <br />
{ "terminal", terminal },<br />
{ "icecat", "icecat" },<br />
{ "Editor", "gvim" },<br />
{ "File Manager", "pcmanfm" },<br />
{ "VirtualBox", "VirtualBox" },<br />
{ "Common App", mycommons, beautiful.awesome_icon },<br />
{ "awesome", myawesomemenu, beautiful.awesome_icon }<br />
}<br />
})<br />
}}<br />
<br />
===More Widgets in awesome===<br />
''Widgets in awesome are objects that you can add to any widget-box (statusbars and titlebars), they can provide various information about your system, and are useful for having access to this information, right from your window manager. Widgets are simple to use and offer a great deal of flexibility.'' -- Source [http://awesome.naquadah.org/wiki/Widgets_in_awesome Awesome Wiki: Widgets].<br />
<br />
There's a widely used widget library called '''Wicked''' (compatible with awesome versions '''prior to 3.4'''), that provides more widgets, like MPD widget, CPU usage, memory usage, etc. For more details see the [http://awesome.naquadah.org/wiki/Wicked Wicked page].<br />
<br />
As a replacement for Wicked in awesome v3.4 check '''[http://awesome.naquadah.org/wiki/Vicious Vicious]''', '''[http://awesome.naquadah.org/wiki/Obvious Obvious]''' and '''[http://awesome.naquadah.org/wiki/Bashets Bashets]'''. If you pick vicious, you should also take a good look at [http://git.sysphere.org/vicious/tree/README vicious documentation].<br />
<br />
===Transparency===<br />
Awesome has support for true transparency through a [[Xorg#Composite | compositing manager]] such as {{Pkg|xcompmgr}}({{AUR|xcompmgr-git}}), compton({{AUR|compton-git}}) or {{AUR|cairo-compmgr-git}}.<br />
<br />
To use xcompmgr, add this to your {{ic|~/.xinitrc}}:<br />
xcompmgr &<br />
See ''man xcompmgr'' or [[xcompmgr]] for more options.<br />
<br />
{{out of date | Awesome 3.5 has come and add_signal API has changed to connect_signal}}<br />
In awesome 3.4, window transparency can be set dynamically using signals. For example, your rc.lua could contain the following:<br />
<br />
client.add_signal("focus", function(c)<br />
c.border_color = beautiful.border_focus<br />
c.opacity = 1<br />
end)<br />
client.add_signal("unfocus", function(c)<br />
c.border_color = beautiful.border_normal<br />
c.opacity = 0.7<br />
end)<br />
'''If you got error messages about add_signal, using connect_signal insteaded.''' <br />
<br />
Note that if you are using conky, you must set it to create its own window instead of using the desktop. To do so, edit ~/.conkyrc to contain:<br />
<br />
own_window yes<br />
own_window_transparent yes<br />
own_window_type desktop<br />
<br />
Otherwise strange behavior may be observed, such as all windows becoming fully transparent. Note also that since conky will be creating a transparent window on your desktop, any actions defined in awesome's rc.lua for the desktop will not work where conky is.<br />
<br />
As of Awesome 3.1, there is built-in pseudo-transparency for wiboxes. To enable it, append 2 hexadecimal digits to the colors in your theme file (~/.config/awesome/themes/default, which is usually a copy of /usr/share/awesome/themes/default), like shown here:<br />
<br />
bg_normal = #000000AA<br />
<br />
where "AA" is the transparency value.<br />
<br />
To change transparency for the actual selected window by pressing Modkey + PageUp/PageDown you can also use tansset-df available through the community package repository and the following modification to your rc.lua:<br />
<br />
globalkeys = awful.util.table.join(<br />
-- your keybindings<br />
[...]<br />
awful.key({ modkey }, "Next", function (c)<br />
awful.util.spawn("transset-df --actual --inc 0.1")<br />
end),<br />
awful.key({ modkey }, "Prior", function (c)<br />
awful.util.spawn("transset-df --actual --dec 0.1")<br />
end),<br />
-- Your other key bindings<br />
[...]<br />
)<br />
<br />
==== ImageMagick ====<br />
You may have problems if you set your wallpaper with imagemagick's ''display'' command, it doesn't work well with xcompmgr. Please note that awsetbg may be using ''display'' if it doesn't have any other options. Installing habak, feh, hsetroot or whatever should fix the problem (''grep -A 1 wpsetters /usr/bin/awsetbg'' to see your options).<br />
<br />
===Autorun programs===<br />
''See also [https://awesome.naquadah.org/wiki/Autostart the Autostart page on the Awesome wiki].''<br />
<br />
awesome doesn't run programs set to autostart by the Freedesktop specification like GNOME or KDE. However, awesome does provide a few functions for starting programs (in addition to the Lua standard library function {{Ic|os.execute}}). To run the same programs on startup as GNOME or KDE, you can install [https://aur.archlinux.org/packages.php?ID=41099 dex] from the [[AUR]] and then run that in your rc.lua:<br />
<br />
os.execute"dex -a -e Awesome"<br />
<br />
If you just want to set up a list of apps for awesome to launch at startup, you can create a table of all the commands you want to spawn and loop through it:<br />
<br />
do<br />
local cmds = <br />
{ <br />
"swiftfox",<br />
"mutt",<br />
"consonance",<br />
"linux-fetion",<br />
"weechat-curses",<br />
--and so on...<br />
}<br />
<br />
for _,i in pairs(cmds) do<br />
awful.util.spawn(i)<br />
end<br />
end<br />
<br />
(You could also run calls to {{Ic|os.execute}} with commands ending in '{{Ic|&}}', but it's probably a better idea to stick to the proper spawn function.)<br />
<br />
To run a program only if it is not currently running, you can spawn it with a shell command that runs the program only if {{Ic|pgrep}} doesn't find a running process with the same name:<br />
function run_once(prg)<br />
awful.util.spawn_with_shell("pgrep -u $USER -x " .. prg .. " || (" .. prg .. ")")<br />
end<br />
<br />
So, for example, to run {{Ic|parcellite}} only if there is not a {{Ic|parcellite}} process already running:<br />
<br />
run_once("parcellite")<br />
<br />
===Passing content to widgets with awesome-client===<br />
<br />
You can easily send text to an awesome widget. Just create a new widget:<br />
{{bc|<nowiki><br />
mywidget = widget({ type = "textbox", name = "mywidget" })<br />
mywidget.text = "initial text"<br />
</nowiki>}}<br />
To update the text from an external source, use awesome-client:<br />
{{bc|<nowiki> <br />
echo -e 'mywidget.text = "new text"' | awesome-client<br />
</nowiki>}}<br />
Don't forget to add the widget to your wibox.<br />
<br />
===Using a different panel with awesome===<br />
<br />
If you like awesome's lightweightness and functionality but do not like the way its default panel looks, you can install a different panel. Just install xfce4-panel by issuing:<br />
{{bc|<br />
sudo pacman -S xfce4-panel<br />
}}<br />
Of course any other panel will do as well. <br />
Then add it to autorun section of your rc.lua (how to do that is written elsewhere on this wiki). You can also comment out the section which creates wiboxes for each screen (starting from "mywibox[s] = awful.wibox({ position = "top", screen = s })" ) but it isn't necessary. Any way do not forget to check your rc.lua for errors by typing <br />
{{bc|<br />
awesome -k rc.lua<br />
}}<br />
Also you should change your "modkey+R" keybinding, in order to start some other application launcher instead of built in awesome. Xfrun4, bashrun, etc. Check the Application launchers section of [[Openbox_Themes_and_Apps#Application_launchers|Openbox]] article for examples. Don't forget to add<br />
{{bc|<nowiki><br />
properties = { floating = true } },<br />
{ rule = { instance = "$yourapplicationlauncher" },<br />
</nowiki>}}<br />
to your rc.lua.<br />
<br />
===Fix Java (GUI appears gray only)===<br />
Guide taken from [https://bbs.archlinux.org/viewtopic.php?pid=450870].<br />
#Install {{Pkg|wmname}} from community<br />
#Run the following command or add it to your {{ic|.xinitrc}}: {{bc|wmname LG3D}}<br />
<br />
{{Note|<br />
If you use a non-reparenting window manager and Java 6, you should uncomment the corresponding line in {{Ic|/etc/profile.d/openjdk6.sh}}<br />
<br />
If you use a non-reparenting window manager and Java 7, you should uncomment the corresponding line in <br />
{{Ic|/etc/profile.d/jre.sh}} <br />
}}<br />
<br />
===Prevent Nautilus from displaying the desktop (Gnome3)===<br />
Run dconf-editor. Navigate to org->gnome->desktop->background and uncheck "draw-background" as well as "show-desktop-icons" for good measure. That's it!<br />
<br />
Another option is moving /usr/bin/nautilus to a new location and replacing it with a script that runs 'nautilus --no-desktop' passing any arguments it receives along.<br />
<br />
#!/bin/sh<br />
/usr/bin/nautilus-real --no-desktop $@<br />
<br />
===Transitioning away from Gnome3===<br />
Run 'gnome-session-properties' and remove programs that you won't be needing anymore (e.g Bluetooth Manager, Login Sounds, etc).<br />
<br />
If you'd like to get rid of GDM, make sure that your rc.conf DAEMONS list includes "dbus" (and "cupsd" if you have a printer). It's advisable to get a different login manager (like [https://wiki.archlinux.org/index.php/SLiM SLiM]), but you can do things manually if you wish. That entails setting up your [https://wiki.archlinux.org/index.php/Udev .xinitrc properly] and installing something like devmon ([https://aur.archlinux.org/packages.php?ID=45842 AUR]).<br />
<br />
If you want to keep a few convenient systray applets and your GTK theme, append this to your rc.lua;<br />
function start_daemon(dae)<br />
daeCheck = os.execute("ps -eF | grep -v grep | grep -w " .. dae)<br />
if (daeCheck ~= 0) then<br />
os.execute(dae .. " &")<br />
end<br />
end<br />
<br />
procs = {"gnome-settings-daemon", "nm-applet", "kupfer", "gnome-sound-applet", "gnome-power-manager"}<br />
for k = 1, #procs do<br />
start_daemon(procs[k])<br />
end<br />
<br />
===Prevent the mouse scroll wheel from changing tags===<br />
In your rc.lua, change the Mouse Bindings section to the following;<br />
-- {{{ Mouse bindings<br />
root.buttons(awful.util.table.join(<br />
awful.button({ }, 3, function () mymainmenu:toggle() end)))<br />
-- }}}<br />
<br />
==Troubleshooting==<br />
<br />
===LibreOffice===<br />
If you encounter UI problems with libreoffice install libreoffice-gnome.<br />
<br />
===Mod4 key===<br />
<br />
The Mod4 is by default the '''Win key'''. If it's not mapped by default, for some reason, you can check the keycode of your Mod4 key with<br />
<br />
$ xev<br />
<br />
It should be 115 for the left one. Then add this to your ~/.xinitrc<br />
<br />
xmodmap -e "keycode 115 = Super_L" -e "add mod4 = Super_L"<br />
exec awesome<br />
<br />
The problem in this case is that some xorg installations recognize keycode 115, but incorrectly as the 'Select' key. The above command explictly remaps keycode 115 to the correct 'Super_L' key.<br />
<br />
====Mod4 key vs. IBM ThinkPad users====<br />
<br />
IBM ThinkPads do not come equipped with a Window key (although Lenovo have changed this tradition on their ThinkPads). As of writing, the Alt key is not used in command combinations by the default rc.lua (refer to the Awesome wiki for a table of commands), which allows it be used as a replacement for the Super/Mod4/Win key. To do this, edit your rc.lua and replace:<br />
<br />
modkey = "Mod4"<br />
<br />
by:<br />
<br />
modkey = "Mod1"<br />
<br />
Note: Awesome does a have a few commands that make use of Mod4 plus a single letter. Changing Mod4 to Mod1/Alt could cause overlaps for some key combinations. The small amount of instances where this happens can be changed in the rc.lua file.<br />
<br />
If you do not like to change the awesome standards, you might like to remap a key. For instance the caps lock key is rather useless (for me) adding the following contents to ~/.Xmodmap <br />
<br />
clear lock <br />
add mod4 = Caps_Lock<br />
<br />
and [[Extra Keyboard Keys in Xorg#Step 2: Testing|(re)load]] the file.<br />
This will change the caps lock key into the mod4 key and works nicely with the standard awesome settings. In addition, if needed, it provides the mod4 key to other X-programs as well.<br />
<br />
Not confirmed, but if recent updates of xorg related packages break mentioned remapping the second line can be replaced by (tested on a DasKeyboard with no left Super key):<br />
<br />
keysym Caps_Lock = Super_L Caps_Lock<br />
<br />
===Eclipse: cannot resize/move main window===<br />
If you get stuck and cannot move or resize the main window (using mod4 + left/right mouse button) edit the workbench.xml and set fullscreen/maximized to false (if set) and reduce the width and height to numbers smaller than your single screen desktop area.<br />
{{Note|workbench.xml can be found in: <eclipse_workspace>/.metadata/.plugins/org.eclipse.ui.workbench/ and the line to edit is <window height&#61;"xx" maximized&#61;"true" width&#61;"xx" x&#61;"xx" y&#61;"xx">.}}<br />
<br />
===YouTube: fullscreen appears in background===<br />
[https://bbs.archlinux.org/viewtopic.php?pid=1085494#p1085494] If YouTube videos appear underneath your web browser when in fullscreen mode, or underneath the panel with controls hidden, add this to your rc.lua<br />
<br />
{ rule = { instance = "plugin-container" },<br />
properties = { floating = true } },<br />
<br />
With Chromium add<br />
<br />
{ rule = { instance = "exe" },<br />
properties = { floating = true } },<br />
<br />
===Starting console clients on specific tags===<br />
It does not work when the console application is invoked from a GTK terminal (e.g. LXTerminal). [[URxvt]] is known to work. <br />
<br />
===Redirecting console output to a file===<br />
Some GUI application are very verbose when launched from a terminal. As a consequence, when started from Awesome, they output everything to the TTY from where Awesome was started, which tend to get messy. To remove the garbage output, you have to redirect it. However, the {{ic|awful.util.spawn}} function does not handle pipes and redirections very well as stated in [http://awesome.naquadah.org/wiki/FAQ#How_to_execute_a_shell_command.3F the official FAQ].<br />
<br />
As example, let's redirect [[Luakit]] output to a temporary file:<br />
<br />
awful.key({ modkey, }, "w", function () awful.util.spawn_with_shell("luakit 2>>/tmp/luakit.log") end),<br />
<br />
==External Links==<br />
* http://awesome.naquadah.org/wiki/FAQ - FAQ<br />
* http://www.lua.org/pil/ - Programming in Lua (first edition)<br />
* http://awesome.naquadah.org/ - The official awesome website<br />
* http://awesome.naquadah.org/wiki/Main_Page - the awesome wiki<br />
* http://www.penguinsightings.org/desktop/awesome/ - A review<br />
* http://compsoc.tardis.ed.ac.uk/wiki/AwesomeWM_guide - Awesome guide<br />
* https://bbs.archlinux.org/viewtopic.php?id=88926 - share your awesome!</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=246953Snapwm2013-02-10T03:53:28Z<p>Nixpunk: /* Icons */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a xinerama aware, very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite).<br />
<br />
Snapwm has an emphasis on easy configurability and choice. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the AUR ===<br />
<br />
Download {{AUR|snapwm-git}} from the [[Arch User Repository|AUR]]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
<br />
The sample configuration files will be installed in {{ic|/usr/share/snapwm-git/}}. Create the directory {{ic|~/.config/snapwm/}}:<br />
$ mkdir -p ~/.config/snapwm/<br />
Copy the three sample files to {{ic|~/.config/snapwm/{rc.conf, key.conf, apps.conf} }} and edit to suit.<br />
<br />
=== Using Git ===<br />
<br />
The latest version can be downloaded using [[Git]]. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with {{ic|git pull}}. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you will notice that in moetunes' GitHub, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like {{ic|~/bin}} for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an auto-complete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The sample.key.conf file comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
CMD dmenucmd;dmenu_run;-i;-nb;#666622;-nf;white;NULL;<br />
KEY Alt;v;spawn;dmenucmd;<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
All user settings are read from three files in ~/.config/snapwm/ .<br />
Each line in these files takes the form of :<br />
<Option><space><semi colon separated list><br />
and if there is more than one item in the list the line must end in a semi colon.<br />
<br />
snapwm comes with sample configurations files which make it easy to start configuration.<br />
<br />
All options and settings in the three configuration files are changeable in the running window manager<br />
by editing and saving the configuration file/s and updating. (default key Alt+u)<br />
<br />
===RC.CONF===<br />
<br />
<option><space><semi colon separated list><br />
<br />
Should have the number of desktops as the first option, which is changeable in the running window manager.<br />
<br />
Colours, how new windows are handled and options for the bar are set here.<br />
<br />
===KEY.CONF===<br />
<br />
There are two options CMD and KEY . CMD should come before any key using it.<br />
<br />
CMD takes the form of :<br />
CMD<space><label>;<comand>;<command option1>;<command option2>...;NULL;<br />
The line must end in NULL;<br />
<br />
The label is passed to a KEY with spawn as the function and the label as the variable<br />
<br />
KEY takes the form of :<br />
KEY<space><Modifier>;<key>;<function>;<variable>;<br />
There are eight modifying keys available :<br />
Alt CtrlAlt ShftAlt Super ShftSuper Control CtrlSuper ALTSuper<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
To make the command and the keyboard shortcut.<br />
CMD xtermcmd;xterm;-bg;black;-fg;white;NULL;<br />
KEY Alt;x;spawn;xtermcmd;<br />
<br />
===APPS.CONF===<br />
<br />
There are two options DESKTOP and POSITION . Order isn't important.<br />
<br />
DESKTOP is used to set the desktop that an app will open on and whether to change to that desktop when the app opens.<br />
<br />
POSITION is used to set the geometry of an app in stacking mode.<br />
<br />
DESKTOP takes the form of :<br />
DESKTOP<space><window class>;<desktop to open on>;<zero to change to that desktop>;<br />
<window class> is found by using xprop on the app and reading the WM_CLASS value.<br />
<br />
POSITION takes the form of :<br />
POSITION<space><window class>;<x>;<y>;<width>;<height>;<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and has space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. Clicking elsewhere in the bar will change to the last desktop.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the rc file to have the bar shown at the top or the bottom. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the desktop switcher are defined in SWITCHERTHEME in rc.conf.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the rest of the bar and text in the bar are defined in STATUSTHEME in rc.conf.<br />
<br />
*'''Color 0''' : the default background colour for the bar<br />
*'''Color 1''' : the current desktop font in the switcher and also for external text.<br />
*'''Color 2''' : the unfocused desktops font in the switcher and also for external text.<br />
*'''Color 3''' : the unfocused desktops with opened windows font in the switcher and also for external text.<br />
*'''Color 4''' : the focused window name font and also the for external text.<br />
*'''Colors 5 - 9''' : are for external text.<br />
<br />
The colors for the windows are defined in WINDOWTHEME in rc.conf.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
The background colour in the bar can be changed by placing &B in front of the number of the wanted colour in your script.<br />
For example, using conky, you could do something like this for displaying the time using the third colour for the background and the second color for external text:<br />
&B2&1${time %I:%M}&B0<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file and updating.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in rc.conf or your script/conky. You can also use a font like [https://aur.archlinux.org/packages.php?ID=58930 stlarch_font] that just contains icons. You can use it in combination with another font using a comma to separate them in your rc.conf:<br />
static const char defaultfontlist[] = "-*-stlarch-medium-r-*-*-10-*-*-*-*-*-*-*,-*-terminus-medium-r-*-*-12-*-*-*-*-*-*-*";<br />
<br />
== '''Layout Modes''' ==<br />
<br />
Snapwm has five layout modes: vertical, fullscreen, horizontal, grid and center stacking. The tiling mode for each desktop is set in rc.conf, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in rc.conf, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | |<br />
|Master| |<br />
|------|----|<br />
| w | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
<br />
=== Stacking ===<br />
<br />
___________<br />
| ______ |<br />
| _|__ | |<br />
|| | | |<br />
||____|___| |<br />
|___________|<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Window placement strategy is set in rc.conf<br />
CENTER_STACK 0 all windows open centered on screen<br />
CENTER_STACK 1 windows set their preferred position<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*Windows can be added/removed to/from the master area with keyboard shortcuts Alt+Shift+m/l<br />
*The window *W* at the top of the stack can be resized with keyboard shortcuts Alt+o/p.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
<br />
==''' Window Manager Functions '''==<br />
<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
move the current window up the stack<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
move the current window down the stack<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
move the current window to the master area<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
send the current window to another desktop and open that desktop<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
send the current window to another desktop<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + v/f/h/g/c<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
order is vertical, fullscreen, horizontal, grid, stacking<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
more_master<br />
Default keyboard shortcut : Alt + Shift + m/l<br />
add/remove window from the master area in vert or horiz mode<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
increase/decrease the size of the window at the top of the stack<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
<br />
==''' Transparency '''==<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
<br />
==''' Multi Monitor Support '''==<br />
<br />
With X aware of multiple connected monitors, snapwm will place different desktops on each monitor.<br />
<br />
Using xrandr, or the appropriate method for the graphics card, set the second monitor to the right of the first,<br />
the third monitor to the right of the second, etc.<br />
<br />
Using two monitors and four desktops as an example:<br />
<br />
desktops 1 & 3 will show on monitor 1, the last focused one always visible<br />
<br />
desktops 2 & 4 will show on monitor 2, the last focused one always visible<br />
<br />
To move an application to the other monitor, send it to the desktop showing on that monitor<br />
with the follow_/client_to_desktop functions.<br />
<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=246952Snapwm2013-02-10T03:52:38Z<p>Nixpunk: /* Configuration */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a xinerama aware, very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite).<br />
<br />
Snapwm has an emphasis on easy configurability and choice. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the AUR ===<br />
<br />
Download {{AUR|snapwm-git}} from the [[Arch User Repository|AUR]]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
<br />
The sample configuration files will be installed in {{ic|/usr/share/snapwm-git/}}. Create the directory {{ic|~/.config/snapwm/}}:<br />
$ mkdir -p ~/.config/snapwm/<br />
Copy the three sample files to {{ic|~/.config/snapwm/{rc.conf, key.conf, apps.conf} }} and edit to suit.<br />
<br />
=== Using Git ===<br />
<br />
The latest version can be downloaded using [[Git]]. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with {{ic|git pull}}. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you will notice that in moetunes' GitHub, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like {{ic|~/bin}} for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an auto-complete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The sample.key.conf file comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
CMD dmenucmd;dmenu_run;-i;-nb;#666622;-nf;white;NULL;<br />
KEY Alt;v;spawn;dmenucmd;<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
All user settings are read from three files in ~/.config/snapwm/ .<br />
Each line in these files takes the form of :<br />
<Option><space><semi colon separated list><br />
and if there is more than one item in the list the line must end in a semi colon.<br />
<br />
snapwm comes with sample configurations files which make it easy to start configuration.<br />
<br />
All options and settings in the three configuration files are changeable in the running window manager<br />
by editing and saving the configuration file/s and updating. (default key Alt+u)<br />
<br />
===RC.CONF===<br />
<br />
<option><space><semi colon separated list><br />
<br />
Should have the number of desktops as the first option, which is changeable in the running window manager.<br />
<br />
Colours, how new windows are handled and options for the bar are set here.<br />
<br />
===KEY.CONF===<br />
<br />
There are two options CMD and KEY . CMD should come before any key using it.<br />
<br />
CMD takes the form of :<br />
CMD<space><label>;<comand>;<command option1>;<command option2>...;NULL;<br />
The line must end in NULL;<br />
<br />
The label is passed to a KEY with spawn as the function and the label as the variable<br />
<br />
KEY takes the form of :<br />
KEY<space><Modifier>;<key>;<function>;<variable>;<br />
There are eight modifying keys available :<br />
Alt CtrlAlt ShftAlt Super ShftSuper Control CtrlSuper ALTSuper<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
To make the command and the keyboard shortcut.<br />
CMD xtermcmd;xterm;-bg;black;-fg;white;NULL;<br />
KEY Alt;x;spawn;xtermcmd;<br />
<br />
===APPS.CONF===<br />
<br />
There are two options DESKTOP and POSITION . Order isn't important.<br />
<br />
DESKTOP is used to set the desktop that an app will open on and whether to change to that desktop when the app opens.<br />
<br />
POSITION is used to set the geometry of an app in stacking mode.<br />
<br />
DESKTOP takes the form of :<br />
DESKTOP<space><window class>;<desktop to open on>;<zero to change to that desktop>;<br />
<window class> is found by using xprop on the app and reading the WM_CLASS value.<br />
<br />
POSITION takes the form of :<br />
POSITION<space><window class>;<x>;<y>;<width>;<height>;<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and has space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. Clicking elsewhere in the bar will change to the last desktop.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the rc file to have the bar shown at the top or the bottom. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the desktop switcher are defined in SWITCHERTHEME in rc.conf.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the rest of the bar and text in the bar are defined in STATUSTHEME in rc.conf.<br />
<br />
*'''Color 0''' : the default background colour for the bar<br />
*'''Color 1''' : the current desktop font in the switcher and also for external text.<br />
*'''Color 2''' : the unfocused desktops font in the switcher and also for external text.<br />
*'''Color 3''' : the unfocused desktops with opened windows font in the switcher and also for external text.<br />
*'''Color 4''' : the focused window name font and also the for external text.<br />
*'''Colors 5 - 9''' : are for external text.<br />
<br />
The colors for the windows are defined in WINDOWTHEME in rc.conf.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
The background colour in the bar can be changed by placing &B in front of the number of the wanted colour in your script.<br />
For example, using conky, you could do something like this for displaying the time using the third colour for the background and the second color for external text:<br />
&B2&1${time %I:%M}&B0<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file and updating.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in rc.conf or your script/conky. You can also use a font like [https://aur.archlinux.org/packages.php?ID=58930 stlarch_font] that just contains icons. You can use it in combination with another font using a comma to seperate them in your rc.conf:<br />
static const char defaultfontlist[] = "-*-stlarch-medium-r-*-*-10-*-*-*-*-*-*-*,-*-terminus-medium-r-*-*-12-*-*-*-*-*-*-*";<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
Snapwm has five layout modes: vertical, fullscreen, horizontal, grid and center stacking. The tiling mode for each desktop is set in rc.conf, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in rc.conf, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | |<br />
|Master| |<br />
|------|----|<br />
| w | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
<br />
=== Stacking ===<br />
<br />
___________<br />
| ______ |<br />
| _|__ | |<br />
|| | | |<br />
||____|___| |<br />
|___________|<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Window placement strategy is set in rc.conf<br />
CENTER_STACK 0 all windows open centered on screen<br />
CENTER_STACK 1 windows set their preferred position<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*Windows can be added/removed to/from the master area with keyboard shortcuts Alt+Shift+m/l<br />
*The window *W* at the top of the stack can be resized with keyboard shortcuts Alt+o/p.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
<br />
==''' Window Manager Functions '''==<br />
<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
move the current window up the stack<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
move the current window down the stack<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
move the current window to the master area<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
send the current window to another desktop and open that desktop<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
send the current window to another desktop<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + v/f/h/g/c<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
order is vertical, fullscreen, horizontal, grid, stacking<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
more_master<br />
Default keyboard shortcut : Alt + Shift + m/l<br />
add/remove window from the master area in vert or horiz mode<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
increase/decrease the size of the window at the top of the stack<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
<br />
==''' Transparency '''==<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
<br />
==''' Multi Monitor Support '''==<br />
<br />
With X aware of multiple connected monitors, snapwm will place different desktops on each monitor.<br />
<br />
Using xrandr, or the appropriate method for the graphics card, set the second monitor to the right of the first,<br />
the third monitor to the right of the second, etc.<br />
<br />
Using two monitors and four desktops as an example:<br />
<br />
desktops 1 & 3 will show on monitor 1, the last focused one always visible<br />
<br />
desktops 2 & 4 will show on monitor 2, the last focused one always visible<br />
<br />
To move an application to the other monitor, send it to the desktop showing on that monitor<br />
with the follow_/client_to_desktop functions.<br />
<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Snapwm&diff=246951Snapwm2013-02-10T03:51:40Z<p>Nixpunk: /* RC.CONF */</p>
<hr />
<div>[[Category:Dynamic WMs]]<br />
[https://github.com/moetunes/Nextwm Snapwm] is a xinerama aware, very minimal and lightweight dynamic tiling window manager based on [https://github.com/moetunes/dminiwm dminiwm] (same author), which is based on [https://bbs.archlinux.org/viewtopic.php?id=100215&p=1 catwm] (by pyknite).<br />
<br />
Snapwm has an emphasis on easy configurability and choice. It's primarily keyboard driven but has some mouse support also.<br />
<br />
== '''Installation''' ==<br />
<br />
<br />
=== Using the AUR ===<br />
<br />
Download {{AUR|snapwm-git}} from the [[Arch User Repository|AUR]]. Then, as a non-root user, run:<br />
$ makepkg -i<br />
while in the saved PKGBUILD's directory. The files will be retrieved, built and installed.<br />
<br />
The sample configuration files will be installed in {{ic|/usr/share/snapwm-git/}}. Create the directory {{ic|~/.config/snapwm/}}:<br />
$ mkdir -p ~/.config/snapwm/<br />
Copy the three sample files to {{ic|~/.config/snapwm/{rc.conf, key.conf, apps.conf} }} and edit to suit.<br />
<br />
=== Using Git ===<br />
<br />
The latest version can be downloaded using [[Git]]. Initially, you can do:<br />
git clone https://github.com/moetunes/Nextwm <br />
and then update with {{ic|git pull}}. See the [[Git]] wiki page or man git for more info.<br />
<br />
{{Note|While the official name of the window manager and executable is snapwm, you will notice that in moetunes' GitHub, the directory is named Nextwm which may cause some confusion.}}<br />
<br />
Xlib is all that is required. To install it, do:<br />
<br />
$make<br />
#make install<br />
$make clean<br />
<br />
=== Alternative Method ===<br />
Instead of actually installing it system-wide as above, you can simply run make and then copy the executable to somewhere in your path, like {{ic|~/bin}} for example. You can then run it the same way(exec snapwm) on a per user basis.<br />
<br />
=== Dmenu ===<br />
<br />
Most users will want this. As the name implies, [http://tools.suckless.org/dmenu dmenu] is a menu that acts like an auto-complete for typing the name of binaries. It integrates well with tiling window managers like snapwm. See the [[dmenu]] wiki page or man dmenu for more info. To install it, do:<br />
pacman -S dmenu<br />
The sample.key.conf file comes with a command to start demenu_run, which will search $PATH for a matching executable as soon as you start typing.<br />
CMD dmenucmd;dmenu_run;-i;-nb;#666622;-nf;white;NULL;<br />
KEY Alt;v;spawn;dmenucmd;<br />
<br />
<br />
== '''Configuration''' ==<br />
<br />
All user settings are read from three files in ~/.config/snapwm/ .<br />
Each line in these files takes the form of :<br />
<Option><space><semi colon seperated list><br />
and if there is more than one item in the list the line must end in a semi colon.<br />
<br />
snapwm comes with sample configurations files which make it easy to start configuration.<br />
<br />
All options and settings in the three configuration files are changeable in the running window manager<br />
by editing and saving the configuration file/s and updating. (default key Alt+u)<br />
<br />
===RC.CONF===<br />
<br />
<option><space><semi colon separated list><br />
<br />
Should have the number of desktops as the first option, which is changeable in the running window manager.<br />
<br />
Colours, how new windows are handled and options for the bar are set here.<br />
<br />
===KEY.CONF===<br />
<br />
There are two options CMD and KEY . CMD should come before any key using it.<br />
<br />
CMD takes the form of :<br />
CMD<space><label>;<comand>;<command option1>;<command option2>...;NULL;<br />
The line must end in NULL;<br />
<br />
The label is passed to a KEY with spawn as the function and the label as the variable<br />
<br />
KEY takes the form of :<br />
KEY<space><Modifier>;<key>;<function>;<variable>;<br />
There are eight modifying keys available :<br />
Alt CtrlAlt ShftAlt Super ShftSuper Control CtrlSuper ALTSuper<br />
<br />
An example for setting Alt+x to open xterm. The terminal command would be<br />
<br />
xterm -bg black -fg white<br />
<br />
To make the command and the keyboard shortcut.<br />
CMD xtermcmd;xterm;-bg;black;-fg;white;NULL;<br />
KEY Alt;x;spawn;xtermcmd;<br />
<br />
===APPS.CONF===<br />
<br />
There are two options DESKTOP and POSITION . Order isn't important.<br />
<br />
DESKTOP is used to set the desktop that an app will open on and whether to change to that desktop when the app opens.<br />
<br />
POSITION is used to set the geometry of an app in stacking mode.<br />
<br />
DESKTOP takes the form of :<br />
DESKTOP<space><window class>;<desktop to open on>;<zero to change to that desktop>;<br />
<window class> is found by using xprop on the app and reading the WM_CLASS value.<br />
<br />
POSITION takes the form of :<br />
POSITION<space><window class>;<x>;<y>;<width>;<height>;<br />
<br />
<br />
== '''The Bar''' ==<br />
<br />
Snapwm has an integrated bar that has a clickable desktop switcher, shows the tiling mode, shows the focused window's name and has space to display some external text.<br />
<br />
The desktop switcher can optionally show the number of windows open on unfocused desktops and in fullscreen mode. Clicking on the current desktop in the switcher will focus the next window. Clicking elsewhere in the bar will change to the last desktop.<br />
<br />
The bar uses the root window's name to display colored external text, which can be changed with xsetroot -name.<br />
<br />
For example, with conky, you could use something like: <br />
conky | while read -r; do xsetroot -name "$REPLY"; done &<br />
<br />
You can toggle the bars' visibility.<br />
Default keyboard shortcut : Super+b<br />
There's options in the rc file to have the bar shown at the top or the bottom. The bars' position is changeable in the running wm by editing the rc file.<br />
<br />
=== Colors ===<br />
<br />
The colors for the desktop switcher are defined in SWITCHERTHEME in rc.conf.<br />
<br />
*'''Color 0''' : focused desktop in switcher.<br />
*'''Color 1''' : unfocused desktop in switcher.<br />
*'''Color 2''' : unfocused desktop in switcher with open windows.<br />
*'''Color 3''' : the bar's border.<br />
<br />
The colors for the rest of the bar and text in the bar are defined in STATUSTHEME in rc.conf.<br />
<br />
*'''Color 0''' : the default background colour for the bar<br />
*'''Color 1''' : the current desktop font in the switcher and also for external text.<br />
*'''Color 2''' : the unfocused desktops font in the switcher and also for external text.<br />
*'''Color 3''' : the unfocused desktops with opened windows font in the switcher and also for external text.<br />
*'''Color 4''' : the focused window name font and also the for external text.<br />
*'''Colors 5 - 9''' : are for external text.<br />
<br />
The colors for the windows are defined in WINDOWTHEME in rc.conf.<br />
<br />
*'''Color 0''' : focused window border.<br />
*'''Color 1''' : unfocused window border.<br />
<br />
The colors for external text can be displayed by placing & in front of the number of the color in your script. For example, using conky, you could do something like this for displaying the time using the second color for external text:<br />
&1${time %I:%M}<br />
<br />
The background colour in the bar can be changed by placing &B in front of the number of the wanted colour in your script.<br />
For example, using conky, you could do something like this for displaying the time using the third colour for the background and the second color for external text:<br />
&B2&1${time %I:%M}&B0<br />
<br />
<br />
The colors in the running wm are changeable by editing the rc file and updating.<br />
<br />
=== Icons ===<br />
<br />
The bar does not support icons but you can draw "icons" into a font and use those. You can find more info on that in the [https://bbs.archlinux.org/viewtopic.php?id=92895&p=1 dwm hacking thread] on the forum. There are a few fonts in the [https://aur.archlinux.org/ AUR], such as [https://aur.archlinux.org/packages.php?ID=49117 terminusmod], [https://aur.archlinux.org/packages.php?ID=53507 tamsynmod], [https://aur.archlinux.org/packages.php?ID=54304 termsyn], and [https://aur.archlinux.org/packages.php?ID=54124 ohsnap] that have some icons. To have them shown in the bar print them in a terminal then copy/paste them in rc.conf or your script/conky. You can also use a font like [https://aur.archlinux.org/packages.php?ID=58930 stlarch_font] that just contains icons. You can use it in combination with another font using a comma to seperate them in your rc.conf:<br />
static const char defaultfontlist[] = "-*-stlarch-medium-r-*-*-10-*-*-*-*-*-*-*,-*-terminus-medium-r-*-*-12-*-*-*-*-*-*-*";<br />
<br />
<br />
== '''Layout Modes''' ==<br />
<br />
Snapwm has five layout modes: vertical, fullscreen, horizontal, grid and center stacking. The tiling mode for each desktop is set in rc.conf, and can be changed in the running wm.<br />
<br />
It allows the "normal" method of tiling window managers, with the new window as the master, or with the new window opened at the top or bottom of the stack(attach aside). The default tiling method for all layout modes is set in rc.conf, and can be changed in the running wm.<br />
<br />
=== Vertical ===<br />
<br />
--------------<br />
| | W |<br />
| |___|<br />
| Master | |<br />
| |___|<br />
| | |<br />
--------------<br />
<br />
Default keyboard shortcut : Alt+Shift+v<br />
<br />
<br />
<br />
=== Fullscreen ===<br />
<br />
Takes up all the screen less the bar.<br />
<br />
Default keyboard shortcut : Alt+Shift+f<br />
<br />
There are no borders in fullscreen mode or if there is only one open window.<br />
<br />
<br />
=== Horizontal ===<br />
<br />
-------------<br />
| |<br />
| Master |<br />
|-----------|<br />
| W | | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+h<br />
<br />
<br />
=== Grid ===<br />
<br />
-------------<br />
| | |<br />
|Master| |<br />
|------|----|<br />
| w | |<br />
-------------<br />
<br />
Default keyboard shortcut : Alt+Shift+g<br />
<br />
<br />
=== Stacking ===<br />
<br />
___________<br />
| ______ |<br />
| _|__ | |<br />
|| | | |<br />
||____|___| |<br />
|___________|<br />
<br />
Default keyboard shortcut : Alt+Shift+c<br />
<br />
Window placement strategy is set in rc.conf<br />
CENTER_STACK 0 all windows open centered on screen<br />
CENTER_STACK 1 windows set their preferred position<br />
<br />
Windows can be moved up/down<br />
Default keyboard shortcut : Alt+Shift+j/k<br />
Windows can be moved right/left<br />
Default keyboard shortcut : Alt+Shift+p/o<br />
Windows can be made wider/narrower<br />
Default keyboard shortcut : Alt+h/l<br />
Windows can be made taller/shorter<br />
Default keyboard shortcut : Alt+p/o<br />
<br />
<br />
*Changing the layout mode or resizing windows on one desktop doesn't affect the other desktops.<br />
*The Master window can be resized.<br />
*Windows can be added/removed to/from the master area with keyboard shortcuts Alt+Shift+m/l<br />
*The window *W* at the top of the stack can be resized with keyboard shortcuts Alt+o/p.<br />
*In stacking mode the windows can be resized/moved with Alt+right/left mouse button and<br />
* the size and position is remembered when the mode is changed<br />
<br />
<br />
==''' Window Manager Functions '''==<br />
<br />
The functions available to the user are :<br />
next_win<br />
Default keyboard shortcut : Alt + j<br />
<br />
prev_win<br />
Default keyboard shortcut : Alt + k<br />
<br />
move_up<br />
Default keyboard shortcut : Alt + Shift + j<br />
move the current window up the stack<br />
<br />
move_down<br />
Default keyboard shortcut : Alt + Shift + k<br />
move the current window down the stack<br />
<br />
swap_master<br />
Default keyboard shortcut : Alt + Shift + Return<br />
move the current window to the master area<br />
<br />
change_desktop<br />
Default keyboard shortcut : Alt + [number]<br />
<br />
last_desktop<br />
Default keyboard shortcut : Alt + Tab<br />
<br />
rotate_desktop<br />
Default keyboard shortcut : Super + Right/Left<br />
<br />
follow_client_to_desktop<br />
Default keyboard shortcut : Alt + Shift + [number]<br />
send the current window to another desktop and open that desktop<br />
<br />
client_to_desktop<br />
Default keyboard shortcut : Super + Shift + [number]<br />
send the current window to another desktop<br />
<br />
switch_mode<br />
Default keyboard shortcut : Alt + Shift + v/f/h/g/c<br />
<br />
rotate_mode<br />
Default keyboard shortcut : Alt + a<br />
order is vertical, fullscreen, horizontal, grid, stacking<br />
<br />
resize_master<br />
Default keyboard shortcut : Alt + h/l<br />
<br />
more_master<br />
Default keyboard shortcut : Alt + Shift + m/l<br />
add/remove window from the master area in vert or horiz mode<br />
<br />
resize_stack<br />
Default keyboard shortcut : Alt + p/o<br />
increase/decrease the size of the window at the top of the stack<br />
<br />
kill_client<br />
Default keyboard shortcut : Alt + c<br />
<br />
quit<br />
Default keyboard shortcut : Control + Alt + q<br />
<br />
spawn<br />
Default keyboard shortcut : User defined for each application<br />
<br />
toggle_bar<br />
Default keyboard shortcut : Super + b<br />
<br />
update_config<br />
Default keyboard shortcut : Alt + u<br />
<br />
<br />
==''' Transparency '''==<br />
<br />
Unfocused windows have an alpha value and can be transparent if used with a compositing manager(like cairo-compmgr).<br />
<br />
The value is a percent and can be changed in the running wm by editing the rc file, 100 is opaque.<br />
<br />
<br />
==''' Multi Monitor Support '''==<br />
<br />
With X aware of multiple connected monitors, snapwm will place different desktops on each monitor.<br />
<br />
Using xrandr, or the appropriate method for the graphics card, set the second monitor to the right of the first,<br />
the third monitor to the right of the second, etc.<br />
<br />
Using two monitors and four desktops as an example:<br />
<br />
desktops 1 & 3 will show on monitor 1, the last focused one always visible<br />
<br />
desktops 2 & 4 will show on monitor 2, the last focused one always visible<br />
<br />
To move an application to the other monitor, send it to the desktop showing on that monitor<br />
with the follow_/client_to_desktop functions.<br />
<br />
<br />
== See also ==<br />
<br />
*The [https://github.com/moetunes/Nextwm README] and ChangeLog for additional info.<br />
<br />
*[https://bbs.archlinux.org/viewtopic.php?id=126463 Snapwm and dminiwm forum thread]. The author(moetunes) is helpful, friendly and active on the forum.</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=SABnzbd&diff=236427SABnzbd2012-11-22T17:22:17Z<p>Nixpunk: fixed spelling error</p>
<hr />
<div>[[Category:Internet Applications]]<br />
SABnzbd is an Open Source Binary Newsreader written in Python.<br />
<br />
''It's totally free, incredibly easy to use, and works practically everywhere. SABnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.''<br />
<br />
== Installation ==<br />
Install {{AUR|sabnzbd}} from the [[Arch User Repository]].<br />
<br />
== Configuration ==<br />
=== systemd ===<br />
SABnzbd comes with a system service file, this can be used to control the daemon as follows:<br />
#systemctl {start,stop,enable,disable} sabnzbd.service<br />
<br />
{{ic|start}} and {{ic|stop}} are direct, {{ic|enable}} and {{ic|disable}} configure automatic starting of the service during boot. For more information, refer to the [[Systemd]] article.<br />
<br />
It is recommended to run through the initial setup wizard after starting the service by going to 127.0.0.1:8080 in your favourite web-browser. This initial setup should be enough to get SABnzbd working correctly for regular users. Users wanting HTTPS access are recommended to read further on in [https://wiki.archlinux.org/index.php/SABnzbd#enabling_https enabling https].<br />
<br />
=== enabling https ===<br />
enabling https is a threefold process:<br />
<br />
* edit {{ic|/opt/sabnzbd/sabnzbd.ini}} and set '''enable_https''' to {{ic|1}}<br />
<br />
* copy {{ic|/usr/lib/systemd/system/sabnzbd.service}} to {{ic|/etc/systemd/system/}} then edit it and set '''PIDFile''' to {{ic|/run/sabnzbd/sabnzbd-9090.pid}}<br />
<br />
* reload systemd with {{ic|# systemctl --system daemon-reload}}<br />
<br />
You should now be able to start sabnzbd with SSL support.<br />
<br />
=== using a custom port ===<br />
Using a custom port is similar to using https:<br />
<br />
* edit {{ic|/opt/sabnzbd/sabnzbd.ini}} and set '''port''' in '''[misc]''' section to the port you wish to use.<br />
<br />
* copy {{ic|/usr/lib/systemd/system/sabnzbd.service}} to {{ic|/etc/systemd/system/}} then edit it and set '''PIDFile''' to {{ic|/run/sabnzbd/sabnzbd-''yourport''.pid}} where ''yourport'' is the same as set in the first step.<br />
<br />
* edit {{ic|/etc/conf.d/sabnzbd_systemd}} and set '''SABNZBD_PORT''' to the port set in the first step.<br />
<br />
* reload systemd with {{ic|# systemctl --system daemon-reload}}<br />
<br />
You should now be able to start sabnzbd with a custom port.<br />
<br />
== Troubleshooting ==<br />
=== systemd times out when starting SABnzbd with https enabled ===<br />
When faced with the following:<br />
[user@host ~]$ sudo systemctl start sabnzbd.service<br />
Job failed. See system journal and 'systemctl status' for details.<br />
<br />
[user@host ~]$ sudo systemctl status sabnzbd.service<br />
sabnzbd.service - SABnzbd binary newsreader<br />
Loaded: loaded (/usr/lib/systemd/system/sabnzbd.service; disabled)<br />
Active: failed (Result: timeout) since Tue, 25 Sep 2012 20:10:47 +0200; 9s ago<br />
CGroup: name=systemd:/system/sabnzbd.service<br />
<br />
It's likely that you've forgotten to edit {{ic|sabnzbd.service}} to reflect the proper PID file as mentioned in [https://wiki.archlinux.org/index.php/SABnzbd#enabling_https enabling https].<br />
<br />
=== SABnzbd redirects to localhost on remote access when only https is enabled ===<br />
This strange issue seems to appear, when you have no https port configured (so it will use the configured http port for http) and your {{ic|/etc/conf.d/sabnzbd[_systemd]}} says<br />
SABNZBD_PROTOCOL=https<br />
instead of:<br />
SABNZBD_PROTOCOL=http<br />
<br />
You might need to restart your clientside browser.<br />
<br />
== External Links ==<br />
* [http://sabnzbd.org/ SABnzbd homepage]<br />
* [http://wiki.sabnzbd.org/ SABnzbd wiki]</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Tint2&diff=191833Tint22012-03-26T03:40:14Z<p>Nixpunk: Just added a comma ;)</p>
<hr />
<div>[[Category:Eye candy (English)]] <br />
{{i18n|Tint2}}<br />
<br />
[http://code.google.com/p/tint2/ tint2] is a system panel for linux. It is described by its developers as "simple panel/taskbar unobtrusive and light". It can be configured to include (or not include) among other things a system tray, a task list, a battery monitor and a clock. Its look can also be configured a great deal, and it does not have many dependencies. This makes it ideal for window manager users who want a panel but do not have one by default, like [[Openbox]] users.<br />
<br />
==Installation==<br />
tint2 is in the community repository. Use [[pacman]] to install it:<br />
# pacman -S tint2<br />
<br />
==Configuration==<br />
tint2 has a configuration file in {{ic|~/.config/tint2/tint2rc}}. A skeleton configuration file with the default settings is created on the first time tint2 is ran. You can then change this file to your liking. Full documentation on how to configure tint2 is found [http://code.google.com/p/tint2/wiki/Configure here]. You can configure the fonts, colors, looks, location and more in this file. The tint2 package now contains a GUI configuration tool that can be accessed by typing the command: <br />
<pre><br />
$ tint2conf<br />
</pre><br />
<br />
Alternatively, you can edit your tint2rc configuration file graphically with [https://aur.archlinux.org/packages.php?ID=29696 tintwizard] from the [[AUR]]. The alternate and now outdated development branch [https://aur.archlinux.org/packages.php?ID=29766 tintwizard-svn] can also be used, but is the same as the tint2conf command.<br />
<br />
===Application Launchers in tint2-svn (AUR)===<br />
With the version of tint2 in subversion (available via AUR: [https://aur.archlinux.org/packages.php?ID=20733 tint2-svn]), it has become possible to add application launchers to tint2. In order to do this it is necessary to manually edit your tint2 configuration file, as [https://aur.archlinux.org/packages.php?ID=29696 tintwizard] does not yet support the launchers.<br />
{{Note|When you edit your tint2 config file using tintwizard after manually adding your launchers, tintwizard will delete any configuration options it does not recognize. I.e. it deletes your launchers.}}<br />
It is necessary to add the following configuration options to your tint2 config file:<br />
<br />
Under # {{Ic|Panel:}}<br />
<pre><br />
# Panel<br />
panel_items = LTSBC<br />
</pre><br />
<br />
And under the new section # {{Ic|Launchers:}}<br />
<pre><br />
# Launchers<br />
launcher_icon_theme = LinuxLex-8<br />
launcher_padding = 5 0 10<br />
launcher_background_id = 9<br />
launcher_icon_size = 85<br />
launcher_item_app = /some/where/application.desktop<br />
launcher_item_app = /some/where/anotherapplication.desktop<br />
</pre><br />
The option {{Ic|launcher_icon_theme}} seems not to be documented yet.<br />
<br />
{{Ic|panel_items}} is a new configuration option which defines which items tint2 shows and in what order:<br />
; L: Show Launcher<br />
; T: Show Taskbar<br />
; S: Show Systray<br />
; B: Show Battery status<br />
; C: Show Clock<br />
<br />
===Applications Menu in OpenBox3===<br />
If running the -svn branch of tint2 from AUR, you have the ability to create launchers. Unfortunately, tint2 does not support nested menus yet, so there is no native function to enable an applications menu. With a little ingenuity, one can trick tint2 and get an applications menu anyway! This example will create such a launcher for OpenBox3.<br />
<br />
First, you require OpenBox3, tint2-svn, and xdotool. We will assume you already have acquired these packages and installed them. If not, then {{Ic|pacman -S openbox xdotool}} and [https://aur.archlinux.org/packages.php?ID=20733 tint2-svn]. Next you want to create a keybinding for opening the OpenBox menu. For OpenBox, this would require the following entry between the <keyboard> and </keyboard> tags in rc.xml:<br />
<pre><br />
<!-- Keybinding for opening OpenBox menu --><br />
<keybind key="C-A-space"><br />
<action name="ShowMenu"><menu>root-menu</menu></action><br />
</keybind><br />
</pre><br />
<br />
This will set Control-Alt-Spacebar to open the root-menu(this is the menu that opens when you right-click the desktop). You can change root-menu to any menu-id that you have defined in menu.xml. Next we need to make that keybinding into a .desktop file with xdotool. First test that your keybind works with <br />
{{Ic|xdotool key ctrl+alt+space}}. If the menu you chose pops up under your mouse cursor, you have done it right! Now create a tint2.desktop file inside /usr/share/applications/ directory. Be sure to add the line {{Ic|Exec&#61;xdotool key ctrl+alt+space}} where [ctrl+alt+space] are your chosen key combinations. Open your new tint2.desktop file from your file manager and, once again, you should see the menu appear under your cursor. Now just add this to tint2 as a launcher, and you have your OpenBox Applications Menu as a launcher for tint2!<br />
<br />
See [http://openbox.org/wiki/Help:Menus Openbox Menus] for further help on creating your own menu to use here, and menumaker to generate a nice full menu.xml for most (possibly all) of your installed programs.<br />
<br />
==Running tint2==<br />
You can run tint2 by simply typing the command:<br />
$ tint2<br />
<br />
If you want to run it when starting [[X]], simply add this to ~/.xinitrc. For example if you run tint2 with [[openbox]]:<br />
#!/bin/sh<br />
#<br />
# ~/.xinitrc<br />
#<br />
# Executed by startx (run your window manager from here)<br />
'''tint2 &'''<br />
exec ck-launch-session openbox-session<br />
<br />
If you want to run tint2 when starting [[Openbox]], you will need to update ~/.config/openbox/autostart by adding the following:<br />
tint2 &<br />
<br />
Note: if you do not have an autostart.sh file in ~/.config/openbox, you can copy the default one from /etc/xdg/autostart.sh.<br />
<br />
Refer to [http://openbox.org/wiki/Help:Autostart Openbox help] for more information on autostart.sh options for Openbox.<br />
<br />
==Enabling transparency==<br />
To make tint2 look its best, some form of compositing is required. If your tint2 has a large black rectangular box behind it you are either using a window manager without native compositing (like Openbox) or it is not enabled.<br />
<br />
To enable compositing under Openbox you can install [[Xcompmgr]] or [[Cairo Compmgr]]:<br />
<br />
# pacman -S xcompmgr<br />
<br />
or<br />
<br />
# pacman -S cairo-compmgr<br />
<br />
Xcompmgr can be started like this:<br />
<br />
$ xcompmgr<br />
<br />
You will have to kill and restart tint2 to enable transparency.<br />
<br />
If Xcompmgr is used solely to provide tint2 with transparency effects it can be run at boot by changing the autostart section in ~/.config/openbox/autostart.sh to this:<br />
<br />
# Launch Xcomppmgr and tint2 with openbox<br />
if which tint2 >/dev/null 2>&1; then<br />
(sleep 2 && xcompmgr) &<br />
(sleep 2 && tint2) &<br />
fi<br />
<br />
Various other (better) ways to make Xcompmgr run at startup are discussed in the [[Openbox]] article.</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Uniform_look_for_Qt_and_GTK_applications&diff=185142Uniform look for Qt and GTK applications2012-02-18T03:55:42Z<p>Nixpunk: /* oxygen-gtk */</p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
[[Category:Eye candy (English)]]<br />
[[Category:Widget Toolkits (English)]]<br />
{{i18n|Uniform Look for QT and GTK Applications}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|This articles details theme configuration of GTK+ at QT applications to ensure a uniform style. This article will cover configuration, theme engines, tricks and troubleshooting.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|GTK+}}<br />
{{Article summary wiki|Qt}}<br />
{{Article summary end}}<br />
<br />
[[Qt]] and [[GTK+]] based programs both use a different widget toolkit to render the graphical user interface. Each come with different themes, styles and icon sets by default, among other things, so the "look and feel" differ significantly. This article will help you make your Qt and GTK+ applications look similar for a more streamlined and "integrated" desktop experience.<br />
<br />
*'''Theme''' - Collection of a style, an icon theme and a colour theme.<br />
*'''Style''' - Graphical layout; look.<br />
*'''Icon Theme''' - Set of global icons.<br />
*'''Colour Theme''' - Set of global colours that are used in conjunction with the style.<br />
<br />
You can choose various approaches:<br />
<br />
* Modify [[Uniform Look for QT and GTK Applications#Styles for both Qt and GTK+|GTK+ and Qt styles]] separately with the tools listed below for each toolkit and aim for choosing similarly looking themes (style, colours, icons, cursors, fonts).<br />
* Use a special [[Uniform Look for QT and GTK Applications#Theme Engines|theme engine]], which intermediates the modification of the other graphical toolkit to match your main toolkit:<br />
** if you work in KDE 4 desktop environment then there is available a GTK-Qt engine, which updates GTK+ configuration files automatically so that GTK+ appearance is similar to the Qt one;<br />
** if you work in other desktop environments, you can choose QGtkStyle engine (built in Qt), which forces Qt apps to use your GTK+ 2.x theme.<br />
<br />
Should you use also GTK+ 3.x toolkit, follow the [[GTK+#GTK+ 3.x|GTK+ 3.x]] wiki article to find out how to make it look similar to GTK+ 2.x themes.<br />
<br />
== Styles for both Qt and GTK+ ==<br />
<br />
There are widget style sets available for the purpose of integration, where builds are written and provided for both Qt and GTK+, all major versions included. With these, you can have one look for all applications regardless of the toolkit they had been written with.<br />
<br />
=== KDE4 Oxygen ===<br />
<br />
[http://www.oxygen-icons.org/ Oxygen] is the QT4 style that installs with KDE4.<br />
<br />
There's also a GTK+ version called [http://kde-look.org/content/show.php?content=103741 oxygen-molecule] and it's available via [http://aur.archlinux.org/packages.php?ID=26138 AUR]. Its goal is to provide a uniform look for GTK+ applications when used under the KDE desktop environment, by using gtk-engine-pixbuf, a dependency, which is also available via [http://aur.archlinux.org/packages.php?ID=16862 AUR]. While the AUR package provides some quick and enough instructions to finish the installation, download [http://kde-look.org/content/show.php?content=103741 oxygen-molecule] from KDE-look for further documentation and variations.<br />
<br />
==== oxygen-gtk ====<br />
A couple of GTK+ ports are available in the {{Pkg|oxygen-gtk}} packages. Their primary goal is to ensure visual consistency between GTK2/GTK3 and qt-based applications running under kde. Secondary objectives are to also have stand-alone, nice looking gtk themes that behave well on other Desktop Environments. Unlike other attempts made to port the kde oxygen theme to gtk, these attempts do not depend on Qt (via some Qt to Gtk conversion engine), nor do they render widget appearances via hard coded pixmaps, which otherwise break everytime some setting is changed in kde. <br />
<br />
pacman -S oxygen-gtk2 oxygen-gtk3<br />
<br />
=====Automatic procedure=====<br />
To change the GTK theme a few applications are available:<br />
pacman -S gtk-kde4<br />
pacman -S gtk-chtheme<br />
pacman -S gtk-theme-switch2<br />
pacman -S lxappearance<br />
<br />
Then change the theme of your choice in the respective application:<br />
gtk-kde4 ("System Settings > Lost and Found > GTK style")<br />
gtk-chtheme<br />
gtk-theme-switch2<br />
lxappearance<br />
<br />
You can also install {{AUR|chakra-gtk-config}}. After install it can be found in '''System Settings > Application Appearance > GTK Config'''.<br />
<br />
=====Manually procedure=====<br />
To manually change the GTK theme to {{Pkg|oxygen-gtk}} , you need to create the file {{ic|~/.kde4/share/config/gtkrc-2.0}} with the following content:<br />
<br />
include "/usr/share/themes/oxygen-gtk/gtk-2.0/gtkrc"<br />
include "~/.themes/oxygen-gtk/gtk-2.0/gtkrc"<br />
style "user"<br />
{ <br />
fg[NORMAL] = "#1b1918"<br />
bg[NORMAL] = "#d5d1cf"<br />
text[NORMAL] = "#181615"<br />
base[NORMAL] = "#ffffff"<br />
fg[ACTIVE] = "#1b1918"<br />
bg[ACTIVE] = "#d5d1cf"<br />
text[ACTIVE] = "#181615"<br />
base[ACTIVE] = "#ffffff"<br />
fg[PRELIGHT] = "#1b1918"<br />
bg[PRELIGHT] = "#d5d1cf"<br />
text[PRELIGHT] = "#ffffff"<br />
base[PRELIGHT] = "#43ace8"<br />
fg[SELECTED] = "#1b1918"<br />
bg[SELECTED] = "#d5d1cf"<br />
text[SELECTED] = "#ffffff"<br />
base[SELECTED] = "#43ace8"<br />
fg[INSENSITIVE] = "#8d8a88"<br />
bg[INSENSITIVE] = "#ccc7c5"<br />
text[INSENSITIVE] = "#a6a5a5"<br />
base[INSENSITIVE] = "#f4f4f4"<br />
GtkTreeView::odd_row_color="#ffffff"<br />
GtkTreeView::even_row_color="#f8f7f6"<br />
}<br />
widget_class "*" style "user"<br />
style "tooltips"<br />
{ <br />
bg[NORMAL] = "#bedfff"<br />
fg[NORMAL] = "#252321"<br />
}<br />
widget "gtk-tooltips" style "tooltips"<br />
#gtk-theme-name="qt4"<br />
gtk-font-name="Sans Serif 9"<br />
gtk-icon-theme-name="gk4ico"<br />
gtk-icon-sizes = "panel-menu=16,16:panel=16,16:gtk-button=22,22:gtk-large-toolbar=22,22"<br />
<br />
Then you need to create the symbolic link {{ic|~/.kde4/share/config/gtkrc}}:<br />
ln -s ~/.kde4/share/config/gtkrc-2.0 ~/.kde4/share/config/gtkrc<br />
<br />
==== Oxygen Icons ====<br />
If you are using Oxygen icons and want a consistent look in GTK open/save dialogs, you can install an [http://aur.archlinux.org/packages.php?O=0&K=oxygenrefit2-icon-theme&do_Search=Go oxygenrefit2] icon theme from AUR and set it as your GTK icon theme. Add the theme to the {{ic|~/.gtkrc-2.0}} file or you can use lxappearance and set it.<br />
gtk-icon-theme-name="OxygenRefit2"<br />
There are also a couple GTK themes built on the [http://aur.archlinux.org/packages.php?ID=24329 gtk-kde42-oxygen-theme Oxygen style] that can also do this.<br />
<br />
=== QtCurve ===<br />
<br />
Available for ''qt4'' (kde4), ''qt3'' (kde3), and ''gtk2'' (gnome) in the '''[extra]''' repository, this highly-configurable style is the most popular all-rounder. It has many controls for various options, ranging from the appearance of buttons to the shape of sliders. You can install all of them using pacman.<br />
# pacman -S qtcurve-gtk2 qtcurve-kde3 qtcurve-kde4<br />
<br />
To manually change the GTK theme to '''QtCurve''', you need to create the file {{ic|~/.gtkrc-2.0-kde4}} with the following content:<br />
include "/usr/share/themes/QtCurve/gtk-2.0/gtkrc"<br />
include "/etc/gtk-2.0/gtkrc"<br />
<br />
style "user-font"<br />
{<br />
font_name="Sans Serif"<br />
}<br />
widget_class "*" style "user-font" <br />
gtk-theme-name="QtCurve"<br />
Then you need to create the symbolic link {{ic|~/.gtkrc-2.0}}:<br />
ln -s .gtkrc-2.0-kde4 .gtkrc-2.0<br />
If you want also specify a font, you can add (and adapt) the following line to the file:<br />
gtk-font-name="Sans Serif 9"<br />
<br />
=== Others ===<br />
<br />
Similar style sets are those that look like each other - written and provided for both Qt and GTK+ - but are not necessarily from the same developers. You may have to do some minor tweaking to make them look the same. Below is a list:<br />
<br />
*klearlooks (qt3); clearlooks (gtk2)<br />
<br />
== How do I set styles for each toolkit? ==<br />
<br />
You can use the following methods to change the theme used in each environment.<br />
<br />
=== QT3 styles ===<br />
* Using ''KDE3 Control Center'' (kcontrol):<br />
:--> Appearance & Themes --> Style --> Widget Style<br />
* kde-config --style [name of style]<br />
* ''Qt Configuration'' (qt3config | /opt/qt/bin/qtconfig)<br />
:--> Appearance --> Select GUI Style<br />
<br />
=== QT4 styles ===<br />
* Using ''KDE4 System Settings'' (/usr/bin/systemsettings)<br />
:--> Common Appearance and Behavior --> Application Appearance --> Style --> Widget Style''<br />
* ''Qt Configuration'' (/usr/bin/qtconfig)<br />
:--> Appearance --> Select GUI Style<br />
<br />
Note that while Qt Configuration allows you to choose the theme, font, etc. for the Qt apps, you can modify more settings with KDE 4 System Settings - e.g. font antialiasing and hinting.<br />
<br />
=== GTK2 styles ===<br />
* {{Pkg|gtk-kde4}} (allows you to change style and font of GTK applications in KDE4)<br />
* {{Pkg|lxappearance}} (a DE independent configuration tool from the LXDE project, which does not require any other parts of LXDE)<br />
* {{Pkg|gtk-chtheme}} (considered a better alternative to switch2)<br />
* {{Pkg|gtk2_prefs}}<br />
* {{Pkg|gtk-theme-switch2}}<br />
* [[GTK%2B#GTK.2B_2.x|Manual configuration]]<br />
<br />
=== GTK1 styles ===<br />
* [https://aur.archlinux.org/packages.php?K=gtk-theme-switch gtk-theme-switch package (AUR)]<br />
<br />
== Theme Engines ==<br />
<br />
A Theme Engine can be thought of as a thin layer API which translates themes (excluding icons) between one or more toolkits. These engines add some extra code in the process and it is arguable that this kind of a solution is not as elegant and optimal as using native styles.<br />
<br />
=== GTK-QT-Engine ===<br />
<br />
This one is for use by GTK+ applications running in KDE, which basically means this does not work in other desktop environments. It applies all Qt settings (styles, fonts, not icons though) to the GTK+ applications and uses the style plug-ins directly. Please note that there are rendering issues with some Qt styles.<br />
<br />
# pacman -S gtk-qt-engine<br />
<br />
You can access it from:<br />
:''Control Center (kcontrol) --> Appearance & Themes --> GTK Styles and Fonts''<br />
<br />
If you want to remove it entirely and every trace of it, you should delete the following files:<br />
<br />
*~/.gtkrc2.0-kde<br />
*~/.kde4/env/gtk-qt-engine.rc.sh<br />
*~/gtk-qt-engine.rc<br />
<br />
==== Make it work with OpenOffice ====<br />
Set (as root):<br />
export SAL_GTK_USE_PIXMAPPAINT=1<br />
into /etc/profile. In KDE4 systemsettings, make sure "use my KDE style in GTK applications" is selected in Appearance > GTK styles and fonts.<br />
<br />
=== QGtkStyle ===<br />
<br />
This is a Qt style which intends to make applications blend perfectly into the GNOME desktop environment by using GTK to render all components. To use this style you must have at least GTK+ 2.0 and Qt 4.3, although Qt 4.4 or higher is preferred. To enable this style, use Qt Configuration or KDE 4 System Settings (see above) and choose "GTK+" style.<br />
<br />
{{Note|Beginning with version 4.5 this style is included in Qt and does not require a separate package anymore.}}<br />
<br />
====Having trouble making your Qt applications use QGtkStyle?====<br />
<br />
Qt won't apply QGtkStyle correctly if GTK is using the [[Uniform Look for QT and GTK Applications#GTK-QT-Engine|GTK-QT-Engine]]. Qt determines whether the [[Uniform Look for QT and GTK Applications#GTK-QT-Engine|GTK-QT-Engine]] is in use by reading the GTK configuration files listed in the environmental variable '''GTK2_RC_FILES'''. If the environmental variable is not set properly, Qt assumes you are using the [[Uniform Look for QT and GTK Applications#GTK-QT-Engine|GTK-QT-Engine]], sets QGtkStyle to use the style GTK style ''Clearlooks'', and outputs an error message:<br />
<br />
QGtkStyle cannot be used together with the GTK_Qt engine.<br />
<br />
Another error you may get after launching qtconfig from a shell and selecting the Gtk+ style is:<br />
<br />
QGtkStyle was unable to detect the current GTK+ theme.<br />
<br />
Users of [[Openbox]] and other non-GNOME environments may encounter this problem. Here is a solution:<br />
<br />
*Tell Qt where to look for your GTK configuration file by adding the following to your {{ic|.xinitrc}} file:<br />
**Add this line before invoking the window manager.<br />
**To add multiple paths, separate them with colons.<br />
**The $HOME part will expand to be path to your user's home directory. Using the ~ shortcut won't work.<br />
{{hc|.xinitrc|2=...<br />
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"<br />
...}}<br />
<br />
*In {{ic|.gtkrc-2.0}} you must specify a GTK theme. For example:<br />
**This is usually done for you by an [[Uniform Look for QT and GTK Applications#GTK2_styles|application which sets GTK2 Styles]]<br />
**If {{ic|~/.gtkrc-2.0}} doesn't exist, simply create it and insert the following line.<br />
{{hc|.gtkrc-2.0|2=...<br />
gtk-theme-name="Crux"<br />
...}}<br />
However it seems in some cases those tools insert only an include directive like<br />
{{hc|.gtkrc-2.0|...<br />
include "/usr/share/themes/SomeTheme/gtk-2.0/gtkrc"<br />
...}} which apparently is not recognized by all versions of QGtkStyle. You can hotfix this problem by inserting the gtk-theme-name manually in your .gtkrc-2.0 like above, note however that Gtk2-style-change applications might overwrite that change when you use them.<br />
<br />
If these steps do not work, install gconf and run this command:<br />
<br />
gconftool-2 --set --type string /desktop/gnome/interface/gtk_theme '''your-theme-name'''<br />
<br />
To choose your GTK theme for QT apps you must run:<br />
<br />
qtconfig<br />
<br />
== Other Tricks ==<br />
=== KDE file dialogs for GTK2 apps ===<br />
KGtk is a wrapper script that LD_PRELOAD to force KDE file dialogs (open, save, etc) in GTK2 apps. If you use KDE and prefer its file dialogs over GTK's then you can install kgtk from AUR. Once installed you can run GTK2 applications with kgtk-wrapper in 2 ways (using gimp in the examples).<br />
<br />
Calling kgtk-wrapper directly and using the GTK2 binary as an arguement<br />
/usr/bin/kgtk-wrapper gimp<br />
<br />
OR<br />
<br />
Creating a symbolic link to kgtk using the name of the GTK2 binary. Then you can run /usr/bin/gimp when you want to run gimp with KDE dialogs.<br />
ln -s /usr/bin/kgtk-wrapper /usr/local/bin/gimp<br />
/usr/local/bin/gimp<br />
<br />
=== aMSN GTK or KDE dialogs ===<br />
aMSN's TK file dialogs are plain looking but no fear there is a plugin that will allow you to use GTK or KDE file dialogs to match your desktop. You can find the plugin on [http://www.amsn-project.net/plugins.php aMSN's Plugin Page]<br />
<br />
=== Using custom GTK style ===<br />
You can use custom styles for specific GTK2 applications. For this, use GTK2_RC_FILES=/path/to/theme/gtk-2.0/gtkrc appname<br />
<br />
For example:<br />
GTK2_RC_FILES=/usr/share/themes/QtCurve/gtk-2.0/gtkrc firefox<br />
It will launch firefox with QtCurve theme.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Themes not working in GTK apps ===<br />
<br />
If the style or theme engine you setup isn't showing in your GTK apps then it's likely your GTK settings files aren't being loaded for some reason. You can check where your system expects to find these files by doing the following..<br />
$ export | grep gtk<br />
<br />
Usually the expected files should be ~/.gtkrc for GTK1, ~/.gtkrc2.0 or ~/.gtkrc2.0-kde for GTK2<br />
<br />
Newer versions of gtk-qt-engine use ~/.gtkrc2.0-kde and set the export variable in ~/.kde/env/gtk-qt-engine.rc.sh<br />
If you recently removed gtk-qt-engine and are trying to set a GTK theme then you must remove ~/.kde/env/gtk-qt-engine.rc.sh and reboot. Doing this will ensure that GTK looks for it's settings in the standard ~/.gtkrc2.0 instead of ~/.gtkrc2.0-kde</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Uniform_look_for_Qt_and_GTK_applications&diff=185141Uniform look for Qt and GTK applications2012-02-18T03:51:32Z<p>Nixpunk: /* oxygen-gtk */</p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
[[Category:Eye candy (English)]]<br />
[[Category:Widget Toolkits (English)]]<br />
{{i18n|Uniform Look for QT and GTK Applications}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|This articles details theme configuration of GTK+ at QT applications to ensure a uniform style. This article will cover configuration, theme engines, tricks and troubleshooting.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|GTK+}}<br />
{{Article summary wiki|Qt}}<br />
{{Article summary end}}<br />
<br />
[[Qt]] and [[GTK+]] based programs both use a different widget toolkit to render the graphical user interface. Each come with different themes, styles and icon sets by default, among other things, so the "look and feel" differ significantly. This article will help you make your Qt and GTK+ applications look similar for a more streamlined and "integrated" desktop experience.<br />
<br />
*'''Theme''' - Collection of a style, an icon theme and a colour theme.<br />
*'''Style''' - Graphical layout; look.<br />
*'''Icon Theme''' - Set of global icons.<br />
*'''Colour Theme''' - Set of global colours that are used in conjunction with the style.<br />
<br />
You can choose various approaches:<br />
<br />
* Modify [[Uniform Look for QT and GTK Applications#Styles for both Qt and GTK+|GTK+ and Qt styles]] separately with the tools listed below for each toolkit and aim for choosing similarly looking themes (style, colours, icons, cursors, fonts).<br />
* Use a special [[Uniform Look for QT and GTK Applications#Theme Engines|theme engine]], which intermediates the modification of the other graphical toolkit to match your main toolkit:<br />
** if you work in KDE 4 desktop environment then there is available a GTK-Qt engine, which updates GTK+ configuration files automatically so that GTK+ appearance is similar to the Qt one;<br />
** if you work in other desktop environments, you can choose QGtkStyle engine (built in Qt), which forces Qt apps to use your GTK+ 2.x theme.<br />
<br />
Should you use also GTK+ 3.x toolkit, follow the [[GTK+#GTK+ 3.x|GTK+ 3.x]] wiki article to find out how to make it look similar to GTK+ 2.x themes.<br />
<br />
== Styles for both Qt and GTK+ ==<br />
<br />
There are widget style sets available for the purpose of integration, where builds are written and provided for both Qt and GTK+, all major versions included. With these, you can have one look for all applications regardless of the toolkit they had been written with.<br />
<br />
=== KDE4 Oxygen ===<br />
<br />
[http://www.oxygen-icons.org/ Oxygen] is the QT4 style that installs with KDE4.<br />
<br />
There's also a GTK+ version called [http://kde-look.org/content/show.php?content=103741 oxygen-molecule] and it's available via [http://aur.archlinux.org/packages.php?ID=26138 AUR]. Its goal is to provide a uniform look for GTK+ applications when used under the KDE desktop environment, by using gtk-engine-pixbuf, a dependency, which is also available via [http://aur.archlinux.org/packages.php?ID=16862 AUR]. While the AUR package provides some quick and enough instructions to finish the installation, download [http://kde-look.org/content/show.php?content=103741 oxygen-molecule] from KDE-look for further documentation and variations.<br />
<br />
==== oxygen-gtk ====<br />
Another GTK+ port is in the {{Pkg|oxygen-gtk}} package(s). Its primary goal is to ensure visual consistency between GTK2/GTK3 and qt-based applications running under kde. A secondary objective is to also have a stand-alone nice looking gtk theme that would behave well on other Desktop Environments. Unlike other attempts made to port the kde oxygen theme to gtk, this attempt does not depend on Qt (via some Qt to Gtk conversion engine), nor does render the widget appearance via hard coded pixmaps, which otherwise breaks everytime some setting is changed in kde. <br />
<br />
pacman -S oxygen-gtk2 oxygen-gtk3<br />
<br />
=====Automatic procedure=====<br />
To change the GTK theme a few applications are available:<br />
pacman -S gtk-kde4<br />
pacman -S gtk-chtheme<br />
pacman -S gtk-theme-switch2<br />
pacman -S lxappearance<br />
<br />
Then change the theme of your choice in the respective application:<br />
gtk-kde4 ("System Settings > Lost and Found > GTK style")<br />
gtk-chtheme<br />
gtk-theme-switch2<br />
lxappearance<br />
<br />
You can also install {{AUR|chakra-gtk-config}}. After install it can be found in '''System Settings > Application Appearance > GTK Config'''.<br />
<br />
=====Manually procedure=====<br />
To manually change the GTK theme to {{Pkg|oxygen-gtk}} , you need to create the file {{ic|~/.kde4/share/config/gtkrc-2.0}} with the following content:<br />
<br />
include "/usr/share/themes/oxygen-gtk/gtk-2.0/gtkrc"<br />
include "~/.themes/oxygen-gtk/gtk-2.0/gtkrc"<br />
style "user"<br />
{ <br />
fg[NORMAL] = "#1b1918"<br />
bg[NORMAL] = "#d5d1cf"<br />
text[NORMAL] = "#181615"<br />
base[NORMAL] = "#ffffff"<br />
fg[ACTIVE] = "#1b1918"<br />
bg[ACTIVE] = "#d5d1cf"<br />
text[ACTIVE] = "#181615"<br />
base[ACTIVE] = "#ffffff"<br />
fg[PRELIGHT] = "#1b1918"<br />
bg[PRELIGHT] = "#d5d1cf"<br />
text[PRELIGHT] = "#ffffff"<br />
base[PRELIGHT] = "#43ace8"<br />
fg[SELECTED] = "#1b1918"<br />
bg[SELECTED] = "#d5d1cf"<br />
text[SELECTED] = "#ffffff"<br />
base[SELECTED] = "#43ace8"<br />
fg[INSENSITIVE] = "#8d8a88"<br />
bg[INSENSITIVE] = "#ccc7c5"<br />
text[INSENSITIVE] = "#a6a5a5"<br />
base[INSENSITIVE] = "#f4f4f4"<br />
GtkTreeView::odd_row_color="#ffffff"<br />
GtkTreeView::even_row_color="#f8f7f6"<br />
}<br />
widget_class "*" style "user"<br />
style "tooltips"<br />
{ <br />
bg[NORMAL] = "#bedfff"<br />
fg[NORMAL] = "#252321"<br />
}<br />
widget "gtk-tooltips" style "tooltips"<br />
#gtk-theme-name="qt4"<br />
gtk-font-name="Sans Serif 9"<br />
gtk-icon-theme-name="gk4ico"<br />
gtk-icon-sizes = "panel-menu=16,16:panel=16,16:gtk-button=22,22:gtk-large-toolbar=22,22"<br />
<br />
Then you need to create the symbolic link {{ic|~/.kde4/share/config/gtkrc}}:<br />
ln -s ~/.kde4/share/config/gtkrc-2.0 ~/.kde4/share/config/gtkrc<br />
<br />
==== Oxygen Icons ====<br />
If you are using Oxygen icons and want a consistent look in GTK open/save dialogs, you can install an [http://aur.archlinux.org/packages.php?O=0&K=oxygenrefit2-icon-theme&do_Search=Go oxygenrefit2] icon theme from AUR and set it as your GTK icon theme. Add the theme to the {{ic|~/.gtkrc-2.0}} file or you can use lxappearance and set it.<br />
gtk-icon-theme-name="OxygenRefit2"<br />
There are also a couple GTK themes built on the [http://aur.archlinux.org/packages.php?ID=24329 gtk-kde42-oxygen-theme Oxygen style] that can also do this.<br />
<br />
=== QtCurve ===<br />
<br />
Available for ''qt4'' (kde4), ''qt3'' (kde3), and ''gtk2'' (gnome) in the '''[extra]''' repository, this highly-configurable style is the most popular all-rounder. It has many controls for various options, ranging from the appearance of buttons to the shape of sliders. You can install all of them using pacman.<br />
# pacman -S qtcurve-gtk2 qtcurve-kde3 qtcurve-kde4<br />
<br />
To manually change the GTK theme to '''QtCurve''', you need to create the file {{ic|~/.gtkrc-2.0-kde4}} with the following content:<br />
include "/usr/share/themes/QtCurve/gtk-2.0/gtkrc"<br />
include "/etc/gtk-2.0/gtkrc"<br />
<br />
style "user-font"<br />
{<br />
font_name="Sans Serif"<br />
}<br />
widget_class "*" style "user-font" <br />
gtk-theme-name="QtCurve"<br />
Then you need to create the symbolic link {{ic|~/.gtkrc-2.0}}:<br />
ln -s .gtkrc-2.0-kde4 .gtkrc-2.0<br />
If you want also specify a font, you can add (and adapt) the following line to the file:<br />
gtk-font-name="Sans Serif 9"<br />
<br />
=== Others ===<br />
<br />
Similar style sets are those that look like each other - written and provided for both Qt and GTK+ - but are not necessarily from the same developers. You may have to do some minor tweaking to make them look the same. Below is a list:<br />
<br />
*klearlooks (qt3); clearlooks (gtk2)<br />
<br />
== How do I set styles for each toolkit? ==<br />
<br />
You can use the following methods to change the theme used in each environment.<br />
<br />
=== QT3 styles ===<br />
* Using ''KDE3 Control Center'' (kcontrol):<br />
:--> Appearance & Themes --> Style --> Widget Style<br />
* kde-config --style [name of style]<br />
* ''Qt Configuration'' (qt3config | /opt/qt/bin/qtconfig)<br />
:--> Appearance --> Select GUI Style<br />
<br />
=== QT4 styles ===<br />
* Using ''KDE4 System Settings'' (/usr/bin/systemsettings)<br />
:--> Common Appearance and Behavior --> Application Appearance --> Style --> Widget Style''<br />
* ''Qt Configuration'' (/usr/bin/qtconfig)<br />
:--> Appearance --> Select GUI Style<br />
<br />
Note that while Qt Configuration allows you to choose the theme, font, etc. for the Qt apps, you can modify more settings with KDE 4 System Settings - e.g. font antialiasing and hinting.<br />
<br />
=== GTK2 styles ===<br />
* {{Pkg|gtk-kde4}} (allows you to change style and font of GTK applications in KDE4)<br />
* {{Pkg|lxappearance}} (a DE independent configuration tool from the LXDE project, which does not require any other parts of LXDE)<br />
* {{Pkg|gtk-chtheme}} (considered a better alternative to switch2)<br />
* {{Pkg|gtk2_prefs}}<br />
* {{Pkg|gtk-theme-switch2}}<br />
* [[GTK%2B#GTK.2B_2.x|Manual configuration]]<br />
<br />
=== GTK1 styles ===<br />
* [https://aur.archlinux.org/packages.php?K=gtk-theme-switch gtk-theme-switch package (AUR)]<br />
<br />
== Theme Engines ==<br />
<br />
A Theme Engine can be thought of as a thin layer API which translates themes (excluding icons) between one or more toolkits. These engines add some extra code in the process and it is arguable that this kind of a solution is not as elegant and optimal as using native styles.<br />
<br />
=== GTK-QT-Engine ===<br />
<br />
This one is for use by GTK+ applications running in KDE, which basically means this does not work in other desktop environments. It applies all Qt settings (styles, fonts, not icons though) to the GTK+ applications and uses the style plug-ins directly. Please note that there are rendering issues with some Qt styles.<br />
<br />
# pacman -S gtk-qt-engine<br />
<br />
You can access it from:<br />
:''Control Center (kcontrol) --> Appearance & Themes --> GTK Styles and Fonts''<br />
<br />
If you want to remove it entirely and every trace of it, you should delete the following files:<br />
<br />
*~/.gtkrc2.0-kde<br />
*~/.kde4/env/gtk-qt-engine.rc.sh<br />
*~/gtk-qt-engine.rc<br />
<br />
==== Make it work with OpenOffice ====<br />
Set (as root):<br />
export SAL_GTK_USE_PIXMAPPAINT=1<br />
into /etc/profile. In KDE4 systemsettings, make sure "use my KDE style in GTK applications" is selected in Appearance > GTK styles and fonts.<br />
<br />
=== QGtkStyle ===<br />
<br />
This is a Qt style which intends to make applications blend perfectly into the GNOME desktop environment by using GTK to render all components. To use this style you must have at least GTK+ 2.0 and Qt 4.3, although Qt 4.4 or higher is preferred. To enable this style, use Qt Configuration or KDE 4 System Settings (see above) and choose "GTK+" style.<br />
<br />
{{Note|Beginning with version 4.5 this style is included in Qt and does not require a separate package anymore.}}<br />
<br />
====Having trouble making your Qt applications use QGtkStyle?====<br />
<br />
Qt won't apply QGtkStyle correctly if GTK is using the [[Uniform Look for QT and GTK Applications#GTK-QT-Engine|GTK-QT-Engine]]. Qt determines whether the [[Uniform Look for QT and GTK Applications#GTK-QT-Engine|GTK-QT-Engine]] is in use by reading the GTK configuration files listed in the environmental variable '''GTK2_RC_FILES'''. If the environmental variable is not set properly, Qt assumes you are using the [[Uniform Look for QT and GTK Applications#GTK-QT-Engine|GTK-QT-Engine]], sets QGtkStyle to use the style GTK style ''Clearlooks'', and outputs an error message:<br />
<br />
QGtkStyle cannot be used together with the GTK_Qt engine.<br />
<br />
Another error you may get after launching qtconfig from a shell and selecting the Gtk+ style is:<br />
<br />
QGtkStyle was unable to detect the current GTK+ theme.<br />
<br />
Users of [[Openbox]] and other non-GNOME environments may encounter this problem. Here is a solution:<br />
<br />
*Tell Qt where to look for your GTK configuration file by adding the following to your {{ic|.xinitrc}} file:<br />
**Add this line before invoking the window manager.<br />
**To add multiple paths, separate them with colons.<br />
**The $HOME part will expand to be path to your user's home directory. Using the ~ shortcut won't work.<br />
{{hc|.xinitrc|2=...<br />
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"<br />
...}}<br />
<br />
*In {{ic|.gtkrc-2.0}} you must specify a GTK theme. For example:<br />
**This is usually done for you by an [[Uniform Look for QT and GTK Applications#GTK2_styles|application which sets GTK2 Styles]]<br />
**If {{ic|~/.gtkrc-2.0}} doesn't exist, simply create it and insert the following line.<br />
{{hc|.gtkrc-2.0|2=...<br />
gtk-theme-name="Crux"<br />
...}}<br />
However it seems in some cases those tools insert only an include directive like<br />
{{hc|.gtkrc-2.0|...<br />
include "/usr/share/themes/SomeTheme/gtk-2.0/gtkrc"<br />
...}} which apparently is not recognized by all versions of QGtkStyle. You can hotfix this problem by inserting the gtk-theme-name manually in your .gtkrc-2.0 like above, note however that Gtk2-style-change applications might overwrite that change when you use them.<br />
<br />
If these steps do not work, install gconf and run this command:<br />
<br />
gconftool-2 --set --type string /desktop/gnome/interface/gtk_theme '''your-theme-name'''<br />
<br />
To choose your GTK theme for QT apps you must run:<br />
<br />
qtconfig<br />
<br />
== Other Tricks ==<br />
=== KDE file dialogs for GTK2 apps ===<br />
KGtk is a wrapper script that LD_PRELOAD to force KDE file dialogs (open, save, etc) in GTK2 apps. If you use KDE and prefer its file dialogs over GTK's then you can install kgtk from AUR. Once installed you can run GTK2 applications with kgtk-wrapper in 2 ways (using gimp in the examples).<br />
<br />
Calling kgtk-wrapper directly and using the GTK2 binary as an arguement<br />
/usr/bin/kgtk-wrapper gimp<br />
<br />
OR<br />
<br />
Creating a symbolic link to kgtk using the name of the GTK2 binary. Then you can run /usr/bin/gimp when you want to run gimp with KDE dialogs.<br />
ln -s /usr/bin/kgtk-wrapper /usr/local/bin/gimp<br />
/usr/local/bin/gimp<br />
<br />
=== aMSN GTK or KDE dialogs ===<br />
aMSN's TK file dialogs are plain looking but no fear there is a plugin that will allow you to use GTK or KDE file dialogs to match your desktop. You can find the plugin on [http://www.amsn-project.net/plugins.php aMSN's Plugin Page]<br />
<br />
=== Using custom GTK style ===<br />
You can use custom styles for specific GTK2 applications. For this, use GTK2_RC_FILES=/path/to/theme/gtk-2.0/gtkrc appname<br />
<br />
For example:<br />
GTK2_RC_FILES=/usr/share/themes/QtCurve/gtk-2.0/gtkrc firefox<br />
It will launch firefox with QtCurve theme.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Themes not working in GTK apps ===<br />
<br />
If the style or theme engine you setup isn't showing in your GTK apps then it's likely your GTK settings files aren't being loaded for some reason. You can check where your system expects to find these files by doing the following..<br />
$ export | grep gtk<br />
<br />
Usually the expected files should be ~/.gtkrc for GTK1, ~/.gtkrc2.0 or ~/.gtkrc2.0-kde for GTK2<br />
<br />
Newer versions of gtk-qt-engine use ~/.gtkrc2.0-kde and set the export variable in ~/.kde/env/gtk-qt-engine.rc.sh<br />
If you recently removed gtk-qt-engine and are trying to set a GTK theme then you must remove ~/.kde/env/gtk-qt-engine.rc.sh and reboot. Doing this will ensure that GTK looks for it's settings in the standard ~/.gtkrc2.0 instead of ~/.gtkrc2.0-kde</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Uniform_look_for_Qt_and_GTK_applications&diff=185140Uniform look for Qt and GTK applications2012-02-18T03:49:21Z<p>Nixpunk: updated oxygen-gtk{2,3} content to current package names</p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
[[Category:Eye candy (English)]]<br />
[[Category:Widget Toolkits (English)]]<br />
{{i18n|Uniform Look for QT and GTK Applications}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|This articles details theme configuration of GTK+ at QT applications to ensure a uniform style. This article will cover configuration, theme engines, tricks and troubleshooting.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|GTK+}}<br />
{{Article summary wiki|Qt}}<br />
{{Article summary end}}<br />
<br />
[[Qt]] and [[GTK+]] based programs both use a different widget toolkit to render the graphical user interface. Each come with different themes, styles and icon sets by default, among other things, so the "look and feel" differ significantly. This article will help you make your Qt and GTK+ applications look similar for a more streamlined and "integrated" desktop experience.<br />
<br />
*'''Theme''' - Collection of a style, an icon theme and a colour theme.<br />
*'''Style''' - Graphical layout; look.<br />
*'''Icon Theme''' - Set of global icons.<br />
*'''Colour Theme''' - Set of global colours that are used in conjunction with the style.<br />
<br />
You can choose various approaches:<br />
<br />
* Modify [[Uniform Look for QT and GTK Applications#Styles for both Qt and GTK+|GTK+ and Qt styles]] separately with the tools listed below for each toolkit and aim for choosing similarly looking themes (style, colours, icons, cursors, fonts).<br />
* Use a special [[Uniform Look for QT and GTK Applications#Theme Engines|theme engine]], which intermediates the modification of the other graphical toolkit to match your main toolkit:<br />
** if you work in KDE 4 desktop environment then there is available a GTK-Qt engine, which updates GTK+ configuration files automatically so that GTK+ appearance is similar to the Qt one;<br />
** if you work in other desktop environments, you can choose QGtkStyle engine (built in Qt), which forces Qt apps to use your GTK+ 2.x theme.<br />
<br />
Should you use also GTK+ 3.x toolkit, follow the [[GTK+#GTK+ 3.x|GTK+ 3.x]] wiki article to find out how to make it look similar to GTK+ 2.x themes.<br />
<br />
== Styles for both Qt and GTK+ ==<br />
<br />
There are widget style sets available for the purpose of integration, where builds are written and provided for both Qt and GTK+, all major versions included. With these, you can have one look for all applications regardless of the toolkit they had been written with.<br />
<br />
=== KDE4 Oxygen ===<br />
<br />
[http://www.oxygen-icons.org/ Oxygen] is the QT4 style that installs with KDE4.<br />
<br />
There's also a GTK+ version called [http://kde-look.org/content/show.php?content=103741 oxygen-molecule] and it's available via [http://aur.archlinux.org/packages.php?ID=26138 AUR]. Its goal is to provide a uniform look for GTK+ applications when used under the KDE desktop environment, by using gtk-engine-pixbuf, a dependency, which is also available via [http://aur.archlinux.org/packages.php?ID=16862 AUR]. While the AUR package provides some quick and enough instructions to finish the installation, download [http://kde-look.org/content/show.php?content=103741 oxygen-molecule] from KDE-look for further documentation and variations.<br />
<br />
==== oxygen-gtk ====<br />
Another GTK+ port is in the {{Pkg|oxygen-gtk}} package. Its primary goal is to ensure visual consistency between GTK2/GTK3 and qt-based applications running under kde. A secondary objective is to also have a stand-alone nice looking gtk theme that would behave well on other Desktop Environments. Unlike other attempts made to port the kde oxygen theme to gtk, this attempt does not depend on Qt (via some Qt to Gtk conversion engine), nor does render the widget appearance via hard coded pixmaps, which otherwise breaks everytime some setting is changed in kde. <br />
<br />
pacman -S oxygen-gtk2 oxygen-gtk3<br />
<br />
=====Automatic procedure=====<br />
To change the GTK theme a few applications are available:<br />
pacman -S gtk-kde4<br />
pacman -S gtk-chtheme<br />
pacman -S gtk-theme-switch2<br />
pacman -S lxappearance<br />
<br />
Then change the theme of your choice in the respective application:<br />
gtk-kde4 ("System Settings > Lost and Found > GTK style")<br />
gtk-chtheme<br />
gtk-theme-switch2<br />
lxappearance<br />
<br />
You can also install {{AUR|chakra-gtk-config}}. After install it can be found in '''System Settings > Application Appearance > GTK Config'''.<br />
<br />
=====Manually procedure=====<br />
To manually change the GTK theme to {{Pkg|oxygen-gtk}} , you need to create the file {{ic|~/.kde4/share/config/gtkrc-2.0}} with the following content:<br />
<br />
include "/usr/share/themes/oxygen-gtk/gtk-2.0/gtkrc"<br />
include "~/.themes/oxygen-gtk/gtk-2.0/gtkrc"<br />
style "user"<br />
{ <br />
fg[NORMAL] = "#1b1918"<br />
bg[NORMAL] = "#d5d1cf"<br />
text[NORMAL] = "#181615"<br />
base[NORMAL] = "#ffffff"<br />
fg[ACTIVE] = "#1b1918"<br />
bg[ACTIVE] = "#d5d1cf"<br />
text[ACTIVE] = "#181615"<br />
base[ACTIVE] = "#ffffff"<br />
fg[PRELIGHT] = "#1b1918"<br />
bg[PRELIGHT] = "#d5d1cf"<br />
text[PRELIGHT] = "#ffffff"<br />
base[PRELIGHT] = "#43ace8"<br />
fg[SELECTED] = "#1b1918"<br />
bg[SELECTED] = "#d5d1cf"<br />
text[SELECTED] = "#ffffff"<br />
base[SELECTED] = "#43ace8"<br />
fg[INSENSITIVE] = "#8d8a88"<br />
bg[INSENSITIVE] = "#ccc7c5"<br />
text[INSENSITIVE] = "#a6a5a5"<br />
base[INSENSITIVE] = "#f4f4f4"<br />
GtkTreeView::odd_row_color="#ffffff"<br />
GtkTreeView::even_row_color="#f8f7f6"<br />
}<br />
widget_class "*" style "user"<br />
style "tooltips"<br />
{ <br />
bg[NORMAL] = "#bedfff"<br />
fg[NORMAL] = "#252321"<br />
}<br />
widget "gtk-tooltips" style "tooltips"<br />
#gtk-theme-name="qt4"<br />
gtk-font-name="Sans Serif 9"<br />
gtk-icon-theme-name="gk4ico"<br />
gtk-icon-sizes = "panel-menu=16,16:panel=16,16:gtk-button=22,22:gtk-large-toolbar=22,22"<br />
<br />
Then you need to create the symbolic link {{ic|~/.kde4/share/config/gtkrc}}:<br />
ln -s ~/.kde4/share/config/gtkrc-2.0 ~/.kde4/share/config/gtkrc<br />
<br />
==== Oxygen Icons ====<br />
If you are using Oxygen icons and want a consistent look in GTK open/save dialogs, you can install an [http://aur.archlinux.org/packages.php?O=0&K=oxygenrefit2-icon-theme&do_Search=Go oxygenrefit2] icon theme from AUR and set it as your GTK icon theme. Add the theme to the {{ic|~/.gtkrc-2.0}} file or you can use lxappearance and set it.<br />
gtk-icon-theme-name="OxygenRefit2"<br />
There are also a couple GTK themes built on the [http://aur.archlinux.org/packages.php?ID=24329 gtk-kde42-oxygen-theme Oxygen style] that can also do this.<br />
<br />
=== QtCurve ===<br />
<br />
Available for ''qt4'' (kde4), ''qt3'' (kde3), and ''gtk2'' (gnome) in the '''[extra]''' repository, this highly-configurable style is the most popular all-rounder. It has many controls for various options, ranging from the appearance of buttons to the shape of sliders. You can install all of them using pacman.<br />
# pacman -S qtcurve-gtk2 qtcurve-kde3 qtcurve-kde4<br />
<br />
To manually change the GTK theme to '''QtCurve''', you need to create the file {{ic|~/.gtkrc-2.0-kde4}} with the following content:<br />
include "/usr/share/themes/QtCurve/gtk-2.0/gtkrc"<br />
include "/etc/gtk-2.0/gtkrc"<br />
<br />
style "user-font"<br />
{<br />
font_name="Sans Serif"<br />
}<br />
widget_class "*" style "user-font" <br />
gtk-theme-name="QtCurve"<br />
Then you need to create the symbolic link {{ic|~/.gtkrc-2.0}}:<br />
ln -s .gtkrc-2.0-kde4 .gtkrc-2.0<br />
If you want also specify a font, you can add (and adapt) the following line to the file:<br />
gtk-font-name="Sans Serif 9"<br />
<br />
=== Others ===<br />
<br />
Similar style sets are those that look like each other - written and provided for both Qt and GTK+ - but are not necessarily from the same developers. You may have to do some minor tweaking to make them look the same. Below is a list:<br />
<br />
*klearlooks (qt3); clearlooks (gtk2)<br />
<br />
== How do I set styles for each toolkit? ==<br />
<br />
You can use the following methods to change the theme used in each environment.<br />
<br />
=== QT3 styles ===<br />
* Using ''KDE3 Control Center'' (kcontrol):<br />
:--> Appearance & Themes --> Style --> Widget Style<br />
* kde-config --style [name of style]<br />
* ''Qt Configuration'' (qt3config | /opt/qt/bin/qtconfig)<br />
:--> Appearance --> Select GUI Style<br />
<br />
=== QT4 styles ===<br />
* Using ''KDE4 System Settings'' (/usr/bin/systemsettings)<br />
:--> Common Appearance and Behavior --> Application Appearance --> Style --> Widget Style''<br />
* ''Qt Configuration'' (/usr/bin/qtconfig)<br />
:--> Appearance --> Select GUI Style<br />
<br />
Note that while Qt Configuration allows you to choose the theme, font, etc. for the Qt apps, you can modify more settings with KDE 4 System Settings - e.g. font antialiasing and hinting.<br />
<br />
=== GTK2 styles ===<br />
* {{Pkg|gtk-kde4}} (allows you to change style and font of GTK applications in KDE4)<br />
* {{Pkg|lxappearance}} (a DE independent configuration tool from the LXDE project, which does not require any other parts of LXDE)<br />
* {{Pkg|gtk-chtheme}} (considered a better alternative to switch2)<br />
* {{Pkg|gtk2_prefs}}<br />
* {{Pkg|gtk-theme-switch2}}<br />
* [[GTK%2B#GTK.2B_2.x|Manual configuration]]<br />
<br />
=== GTK1 styles ===<br />
* [https://aur.archlinux.org/packages.php?K=gtk-theme-switch gtk-theme-switch package (AUR)]<br />
<br />
== Theme Engines ==<br />
<br />
A Theme Engine can be thought of as a thin layer API which translates themes (excluding icons) between one or more toolkits. These engines add some extra code in the process and it is arguable that this kind of a solution is not as elegant and optimal as using native styles.<br />
<br />
=== GTK-QT-Engine ===<br />
<br />
This one is for use by GTK+ applications running in KDE, which basically means this does not work in other desktop environments. It applies all Qt settings (styles, fonts, not icons though) to the GTK+ applications and uses the style plug-ins directly. Please note that there are rendering issues with some Qt styles.<br />
<br />
# pacman -S gtk-qt-engine<br />
<br />
You can access it from:<br />
:''Control Center (kcontrol) --> Appearance & Themes --> GTK Styles and Fonts''<br />
<br />
If you want to remove it entirely and every trace of it, you should delete the following files:<br />
<br />
*~/.gtkrc2.0-kde<br />
*~/.kde4/env/gtk-qt-engine.rc.sh<br />
*~/gtk-qt-engine.rc<br />
<br />
==== Make it work with OpenOffice ====<br />
Set (as root):<br />
export SAL_GTK_USE_PIXMAPPAINT=1<br />
into /etc/profile. In KDE4 systemsettings, make sure "use my KDE style in GTK applications" is selected in Appearance > GTK styles and fonts.<br />
<br />
=== QGtkStyle ===<br />
<br />
This is a Qt style which intends to make applications blend perfectly into the GNOME desktop environment by using GTK to render all components. To use this style you must have at least GTK+ 2.0 and Qt 4.3, although Qt 4.4 or higher is preferred. To enable this style, use Qt Configuration or KDE 4 System Settings (see above) and choose "GTK+" style.<br />
<br />
{{Note|Beginning with version 4.5 this style is included in Qt and does not require a separate package anymore.}}<br />
<br />
====Having trouble making your Qt applications use QGtkStyle?====<br />
<br />
Qt won't apply QGtkStyle correctly if GTK is using the [[Uniform Look for QT and GTK Applications#GTK-QT-Engine|GTK-QT-Engine]]. Qt determines whether the [[Uniform Look for QT and GTK Applications#GTK-QT-Engine|GTK-QT-Engine]] is in use by reading the GTK configuration files listed in the environmental variable '''GTK2_RC_FILES'''. If the environmental variable is not set properly, Qt assumes you are using the [[Uniform Look for QT and GTK Applications#GTK-QT-Engine|GTK-QT-Engine]], sets QGtkStyle to use the style GTK style ''Clearlooks'', and outputs an error message:<br />
<br />
QGtkStyle cannot be used together with the GTK_Qt engine.<br />
<br />
Another error you may get after launching qtconfig from a shell and selecting the Gtk+ style is:<br />
<br />
QGtkStyle was unable to detect the current GTK+ theme.<br />
<br />
Users of [[Openbox]] and other non-GNOME environments may encounter this problem. Here is a solution:<br />
<br />
*Tell Qt where to look for your GTK configuration file by adding the following to your {{ic|.xinitrc}} file:<br />
**Add this line before invoking the window manager.<br />
**To add multiple paths, separate them with colons.<br />
**The $HOME part will expand to be path to your user's home directory. Using the ~ shortcut won't work.<br />
{{hc|.xinitrc|2=...<br />
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"<br />
...}}<br />
<br />
*In {{ic|.gtkrc-2.0}} you must specify a GTK theme. For example:<br />
**This is usually done for you by an [[Uniform Look for QT and GTK Applications#GTK2_styles|application which sets GTK2 Styles]]<br />
**If {{ic|~/.gtkrc-2.0}} doesn't exist, simply create it and insert the following line.<br />
{{hc|.gtkrc-2.0|2=...<br />
gtk-theme-name="Crux"<br />
...}}<br />
However it seems in some cases those tools insert only an include directive like<br />
{{hc|.gtkrc-2.0|...<br />
include "/usr/share/themes/SomeTheme/gtk-2.0/gtkrc"<br />
...}} which apparently is not recognized by all versions of QGtkStyle. You can hotfix this problem by inserting the gtk-theme-name manually in your .gtkrc-2.0 like above, note however that Gtk2-style-change applications might overwrite that change when you use them.<br />
<br />
If these steps do not work, install gconf and run this command:<br />
<br />
gconftool-2 --set --type string /desktop/gnome/interface/gtk_theme '''your-theme-name'''<br />
<br />
To choose your GTK theme for QT apps you must run:<br />
<br />
qtconfig<br />
<br />
== Other Tricks ==<br />
=== KDE file dialogs for GTK2 apps ===<br />
KGtk is a wrapper script that LD_PRELOAD to force KDE file dialogs (open, save, etc) in GTK2 apps. If you use KDE and prefer its file dialogs over GTK's then you can install kgtk from AUR. Once installed you can run GTK2 applications with kgtk-wrapper in 2 ways (using gimp in the examples).<br />
<br />
Calling kgtk-wrapper directly and using the GTK2 binary as an arguement<br />
/usr/bin/kgtk-wrapper gimp<br />
<br />
OR<br />
<br />
Creating a symbolic link to kgtk using the name of the GTK2 binary. Then you can run /usr/bin/gimp when you want to run gimp with KDE dialogs.<br />
ln -s /usr/bin/kgtk-wrapper /usr/local/bin/gimp<br />
/usr/local/bin/gimp<br />
<br />
=== aMSN GTK or KDE dialogs ===<br />
aMSN's TK file dialogs are plain looking but no fear there is a plugin that will allow you to use GTK or KDE file dialogs to match your desktop. You can find the plugin on [http://www.amsn-project.net/plugins.php aMSN's Plugin Page]<br />
<br />
=== Using custom GTK style ===<br />
You can use custom styles for specific GTK2 applications. For this, use GTK2_RC_FILES=/path/to/theme/gtk-2.0/gtkrc appname<br />
<br />
For example:<br />
GTK2_RC_FILES=/usr/share/themes/QtCurve/gtk-2.0/gtkrc firefox<br />
It will launch firefox with QtCurve theme.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Themes not working in GTK apps ===<br />
<br />
If the style or theme engine you setup isn't showing in your GTK apps then it's likely your GTK settings files aren't being loaded for some reason. You can check where your system expects to find these files by doing the following..<br />
$ export | grep gtk<br />
<br />
Usually the expected files should be ~/.gtkrc for GTK1, ~/.gtkrc2.0 or ~/.gtkrc2.0-kde for GTK2<br />
<br />
Newer versions of gtk-qt-engine use ~/.gtkrc2.0-kde and set the export variable in ~/.kde/env/gtk-qt-engine.rc.sh<br />
If you recently removed gtk-qt-engine and are trying to set a GTK theme then you must remove ~/.kde/env/gtk-qt-engine.rc.sh and reboot. Doing this will ensure that GTK looks for it's settings in the standard ~/.gtkrc2.0 instead of ~/.gtkrc2.0-kde</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Desktop_environment&diff=150781Desktop environment2011-08-06T05:00:26Z<p>Nixpunk: Changed Gnome WM from Metacity (Gnome 2) to Mutter (Gnome 3/current)</p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
{{i18n|Desktop Environment}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|In graphical computing, a desktop environment (DE) commonly refers to a style of graphical user interface (GUI) derived from the desktop metaphor that is seen on most modern personal computers. This article provides a general overview of popular desktop environments.}}<br />
{{Article summary heading|Overview}}<br />
{{Article summary text|{{Graphical user interface overview}}}}<br />
{{Article summary heading|Resources}}<br />
{{Article summary wiki|Wikipedia:Desktop environment}}<br />
{{Article summary wiki|Wikipedia:X Window System}}<br />
{{Article summary end}}<br />
<br />
Desktop environments provide a ''complete'' graphical user interface (GUI) for a system by bundling together a variety of X clients written using a common widget toolkit and set of libraries. <br />
<br />
== X Window System == <!-- please keep this section synchronized with [[Window Manager#X Window System]] --><br />
The [[Wikipedia:X Window System|X Window System]] provides the foundation for a graphical user interface. Prior to installing a desktop environment, a functional X server installation is required. See [[Xorg]] for detailed information.<br />
<br />
:''X provides the basic framework, or primitives, for building such GUI environments: drawing and moving windows on the screen and interacting with a mouse and keyboard. X does not mandate the user interface — individual client programs known as window managers handle this. As such, the visual styling of X-based environments varies greatly; different programs may present radically different interfaces. X is built as an additional (application) abstraction layer on top of the operating system kernel.''<br />
<br />
The user is free to configure their GUI environment in any number of ways. Desktop environments simply provide a complete and convenient means of accomplishing this task.<br />
<br />
== Desktop environments ==<br />
A desktop environment bundles together a variety of X clients to provide common graphical user interface elements such as icons, windows, toolbars, wallpapers, and desktop widgets. Additionally, most desktop environments include a set of integrated applications and utilities.<br />
<br />
Note that users are free to mix-and-match applications from multiple desktop environments. For example, a KDE user may install and run GNOME applications such as the Epiphany web browser, should he/she prefer it over KDE's Konqueror web browser. One drawback of this approach is that many applications provided by desktop environment projects rely heavily upon their DE's respective underlying libraries. As a result, installing applications from a range of desktop environments will require installation of a larger number of dependencies. Users seeking to conserve disk space and avoid [[Wikipedia:software bloat|software bloat]] often avoid such mixed environments, or look into lightweight alternatives.<br />
<br />
Furthermore, DE-provided applications tend to integrate better with their native environments. Superficially, mixing environments with different widget toolkits will result in visual discrepancies (that is, interfaces will use different icons and widget styles). In terms of user experience, mixed environments may not behave similarly (e.g. single-clicking versus double-clicking icons; drag-and-drop functionality) potentially causing confusion or unexpected behavior.<br />
<br />
=== List of desktop environments ===<br />
; [[GNOME]]: ''The GNOME project provides two things: The GNOME desktop environment, an intuitive and attractive desktop for users, and the GNOME development platform, an extensive framework for building applications that integrate into the rest of the desktop. GNOME is free, usable, accessible, international, developer-friendly, organized, supported, and a community.''<br />
<br />
; [[KDE]]: ''KDE software consists of a large number of individual applications and a desktop workspace as a shell to run these applications. You can run KDE applications just fine on any desktop environment as they are built to integrate well with your system's components. By also using the KDE workspace, you get even better integration of your applications with the working environment while lowering system resource demands.''<br />
<br />
; [[Xfce]]: ''Xfce embodies the traditional UNIX philosophy of modularity and re-usability. It consists of a number of components that provide the full functionality one can expect of a modern desktop environment, while remaining relatively light. They are packaged separately and you can pick among the available packages to create the optimal personal working environment.''<br />
<br />
; [[E17]]: ''The Enlightenment desktop shell provides an efficient yet breathtaking window manager based on the Enlightenment Foundation Libraries along with other essential desktop components like a file manager, desktop icons and widgets. It boasts a unprecedented level of theme-ability while still being capable of performing on older hardware or embedded devices.''<br />
<br />
; [[LXDE]]: ''The "Lightweight X11 Desktop Environment" is a fast and energy-saving desktop environment. Maintained by an international community of developers, it comes with a beautiful interface, multi-language support, standard keyboard short cuts and additional features like tabbed file browsing. Fundamentally designed to be lightweight, LXDE uses less CPU and RAM than other environments. It is especially beneficial for cloud computers with low hardware specifications, such as netbooks, mobile devices (e.g. MIDs) or older computers.''<br />
<br />
; [[ROX]]: ''ROX is a fast, user friendly desktop which makes extensive use of drag-and-drop. The interface revolves around the file manager, 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 favors using several small programs together instead of creating all-in-one mega-applications.''<br />
<br />
; [[Sugar]]: ''The Sugar Learning Platform is a computer environment composed of Activities designed to help children from 5 to 12 years of age learn together through rich-media expression. Sugar is the core component of a worldwide effort to provide every child with the opportunity for a quality education &mdash; it is currently used by nearly one-million children worldwide speaking 25 languages in over 40 countries. Sugar provides the means to help people lead fulfilling lives through access to a quality education that is currently missed by so many.''<br />
<br />
=== Comparison of desktop environments ===<br />
{{Expansion}}<br />
<br />
''This section attempts to draw a comparison between popular desktop environments. Note that first-hand experience is the only effective way to truly evaluate whether a desktop environment best suits your needs.''<br />
<br />
{{Wikipedia|Comparison of X Window System desktop environments}}<br />
<br />
{| border="1" cellpadding="2"<br />
|+ Overview of desktop environments <!-- PLEASE DO NOT OVER-CLUTTER THIS TABLE! --><br />
! Desktop environment !! Widget toolkit !! Window manager !! Terminal emulator !! File manager !! Text editor !! Web browser<br />
|-<br />
| [[E17]] || [http://trac.enlightenment.org/e/wiki/Elementary Elementary] || [http://trac.enlightenment.org/e/wiki/Enlightenment Enlightenment] || [http://www.eterm.org/ Eterm] || [http://trac.enlightenment.org/e/wiki/EFM EFM] / Entropy / [http://evidence.sourceforge.net/ Evidence] || N/A || [http://trac.enlightenment.org/e/wiki/Eve Eve]<br />
|-<br />
| [[GNOME]] || [[GTK+]] || [[Wikipedia:Mutter_(window_manager)|Mutter]] || [[Wikipedia:GNOME Terminal|GNOME Terminal]] || [http://live.gnome.org/Nautilus Nautilus] || [http://projects.gnome.org/gedit/ gedit] || [[Epiphany]]<br />
|-<br />
| [[KDE]] || [http://qt.nokia.com/ Qt] || [[Wikipedia:KWin|KWin]] || [http://konsole.kde.org/ Konsole] || [http://dolphin.kde.org/ Dolphin] || [http://kate-editor.org/ Kate / KWrite] || [http://www.konqueror.org/ Konqueror]<br />
|-<br />
| [[LXDE]] || [[GTK+]] || [[Openbox]] || [http://wiki.lxde.org/en/LXTerminal LXTerminal] || [[PCManFM]] || [http://tarot.freeshell.org/leafpad/ Leafpad] || N/A<br />
|-<br />
| [[ROX]] || [[GTK+]] || [http://roscidus.com/desktop/OroboROX OroboROX] || [http://roxterm.sourceforge.net/ ROXTerm] || [http://roscidus.com/desktop/ROX-Filer ROX-Filer] || [http://roscidus.com/desktop/Edit Edit] || N/A<br />
|-<br />
| [[Xfce]] || [[GTK+]] || [http://www.xfce.org/projects/xfwm4 Xfwm] || [http://www.xfce.org/projects/terminal Terminal] || [[Thunar]] || N/A || [[Midori]]<br />
|}<br />
<br />
====Resource use====<br />
In terms of system resources, GNOME and KDE are ''expensive'' desktop environments. Not only do complete installations consume more disk space than lightweight alternatives (E17, LXDE, and Xfce) but also more CPU and memory resources while in use. This is because GNOME and KDE are relatively ''full-featured'': they provide the most complete and well-integrated environments.<br />
<br />
E17, LXDE, and Xfce, on the other hand, are ''lightweight'' desktop environments. They are designed to work well on older or lower-power hardware and generally consume fewer system resources while in use. This is achieved by cutting back on ''extra'' features (which some would term ''bloat'').<br />
<br />
====Environment familiarity====<br />
Many users describe KDE as more ''Windows-like'' and GNOME as more ''Mac-like''. This is a very subjective comparison, since either desktop environment can be customized to emulate the Windows or Mac operating systems. See [http://www.psychocats.net/ubuntucat/is-kde-more-windows-like-than-gnome/ Is KDE 'more Windows-like' than Gnome?] and [http://www.jeffwu.net/?p=71 KDE vs Gnome] for more information. ([http://linux.oneandoneis2.org/LNW.htm Linux is Not Windows] is also an excellent resource.)<br />
<br />
== Custom environments ==<br />
Desktop environments represent the simplest means of installing a ''complete'' graphical environment. However, users are free to build and customize their graphical environment in any number of ways should none of the popular desktop environments meet their requirements. Generally, building a custom environment involves selection of a suitable [[Window Manager]] and a number of [[Lightweight Applications]] (a minimalist selection usually includes a terminal emulator, file manager, and text editor).</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Video_encoding&diff=150417Video encoding2011-08-01T13:45:05Z<p>Nixpunk: /* Containers */ Fixed misspelling of container</p>
<hr />
<div>[[Category:Video related articles]]<br />
{{stub}}<br />
{{poor writing}}<br />
<br />
= Video Encoding =<br />
<br />
Videos can be encoded through the command line, as single commands, or using scripts, or using GUI interface to command line options. This article covers some of the possibile methods.<br />
<br />
<br />
== GUI And Scripted Conversions ==<br />
<br />
<br />
== GUI Conversions ==<br />
<br />
Several graphical user interfaces exist to assist with the conversion of video to new formats.<br />
* [https://aur.archlinux.org/packages.php?O=0&K=winff&do_Search=Go winff]<br />
* ogmrip<br />
* dvdrip<br />
* handbrake<br />
* avidemux<br />
<br />
==Scripted Conversions==<br />
'''{{Package AUR|xvidenc}}''' is a script available in the [[AUR]]. It uses [[mencoder]] and might be a good fit, if want to convert some videos but lack most of the knowledge: While there are (probably?) even easier scripts out there, this one still gives you a lot of choices (most of which you can ignore by pressing enter to use a decent default settings).<br />
<br />
'''{{Package AUR|h264enc}}''' is an advanced shell script for encoding DVDs or video files to the H.264 format using the encoding utility MEncoder from MPlayer.<br />
<br />
== Specific Commands ==<br />
=== Encoding AVI Videos in Windows and Mac Readable Formats ===<br />
Use these commands:<br />
opt="vbitrate=2160000:mbd=2:keyint=132:vqblur=1.0:cmp=2:subcmp=2:dia=2:mv0:last_pred=3"<br />
<br />
mencoder -ovc lavc -lavcopts vcodec=msmpeg4v2:vpass=1:$opt -oac mp3lame -o /dev/null input.avi<br />
mencoder -ovc lavc -lavcopts vcodec=msmpeg4v2:vpass=2:$opt -oac mp3lame -o output.avi input.avi<br />
<br />
"input.avi" is the AVI you made using Linux utilities, and "output.avi" is the AVI you want to make which will be readable by Windows and Mac users.<br />
<br />
== Common Misconceptions ==<br />
(Easy one-liners? I'll think I'll do this Section first, as I did & do have a LOT of misconceptions and I'm sure a lot of people who mostly used windows to convert videos in the past have, too;))<br />
=== Codecs v.s. Containers ===<br />
=== encoder v.s. codec ===<br />
== I want to learn some basics ==<br />
look (I'm not sure where: links some starting points to look depending on what one needs?)<br />
=== Containers ===<br />
avi, mkv etc... (max one line description + one link for the most used ones?)<br />
<br />
=== Codecs ===<br />
xvid, stuff (..same...?)<br />
=== Choosing the right stuff ===<br />
no idea</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=SSH_keys&diff=150078SSH keys2011-07-27T19:58:05Z<p>Nixpunk: Changed code in ssh-keygen command from '$(hostname)' to '$(echo $HOSTNAME)' to properly insert hostname</p>
<hr />
<div>[[Category:Networking (English)]]<br />
[[Category:Security (English)]]<br />
{{i18n|Using SSH Keys}}<br />
<br />
==What are SSH Keys?==<br />
By using SSH Keys (a public and private key to be precise), you can easily connect to a server, or multiple servers, without having to enter your password for each system.<br />
<br />
It is possible to setup your keys without a passphrase, however that is unwise as if anyone gets hold of your key they can use it. This guide describes how to setup your system so that passphrases are remembered securely.<br />
<br />
===Generating SSH Keys===<br />
If you don't already have OpenSSH installed, install it now as it is not installed by default on Arch.<br />
<br />
# pacman -S openssh<br />
<br />
The keys can then be generated by running the ssh-keygen command as a user:<br />
<br />
$ ssh-keygen -b 521 -t ecdsa -C"$(id -un)@$(echo $HOSTNAME)-$(date --rfc-3339=date)"<br />
Generating public/private ecdsa key pair.<br />
Enter file in which to save the key (/home/mith/.ssh/id_ecdsa):<br />
Enter passphrase (empty for no passphrase):<br />
Enter same passphrase again:<br />
Your identification has been saved in /home/mith/.ssh/id_ecdsa.<br />
Your public key has been saved in /home/mith/.ssh/id_ecdsa.pub.<br />
The key fingerprint is:<br />
3a:43:37:6d:e2:5b:97:e2:6f:e2:80:f9:23:97:70:0c mith@middleearth<br />
<br />
It will prompt you for a location (which you should leave as the default), however the passphrase is the important bit! You should already be aware of the criteria that make a good passphrase.<br />
<br />
So what did we just do? We generated a 521 bit long ({{Codeline|-b 521}}) public/private ECDSA ({{Codeline|-t ecdsa}}) key pair with an extended comment including the data ({{Codeline|-C"$(id -un)"@$(echo $HOSTNAME)-$(date --rfc-3339&#61;date)}}) via the {{Codeline|ssh-keygen}} command.<br />
<br />
Note: These keys are used only to authenticate you, choosing stronger keys here will not reduce system performance when transfering data via ssh. <br />
<br />
Elliptic curve cryptography provides smaller key sizes and faster operations for equivalent estimated security. It was introduced as the preferred method for authentication in OpenSSH 5.7, see [http://openssh.org/txt/release-5.7 OpenSSH 5.7 Release Notes]. ECDSA keys might not be compatible with systems that ship old versions of OpenSSH.<br />
<br />
If you want to create a RSA (2048-4096 bit) or DSA (1024 bit) key pair instead of ECDSA just use {{Codeline|-t rsa}} or {{Codeline|-t dsa}} and don't forget to increase the key size, running {{Codeline|ssh-keygen}} without ({{Codeline|-b}}) will provide reasonable defaults.<br />
<br />
===Copying the keys to the remote server===<br />
Now you have generated the keys you need to copy them to the remote server.<br />
====Simple method====<br />
$ ssh-copy-id your-server.org<br />
or if you need to use different user name<br />
$ ssh-copy-id your-login@your-server.org<br />
If you get an error saying "/usr/bin/ssh-copy-id: ERROR: No identities found" you must provide the location of the identity:<br />
$ ssh-copy-id -i ~/.ssh/id_ecdsa.pub your-login@your-server.org<br />
<br />
====Traditional method====<br />
By default, for OpenSSH, the public key needs to be concatenated into {{Filename|~/.ssh/authorized_keys}}.<br />
<br />
$ scp ~/.ssh/id_ecdsa.pub mith@metawire.org:<br />
<br />
This copies the public key ({{Filename|id_dsa.pub}}) to your remote server via {{Codeline|scp}} (note the {{Codeline|:}} at the end of the server address). The file ends up in the home directory, but you can specify another path if you like.<br />
<br />
Next up, on the remote server, you need to create the {{Filename|~/.ssh}} directory if it doesn't exist and concatenate the key {{Filename|authorized_keys}} file:<br />
<br />
$ ssh mith@metawire.org<br />
mith@metawire.org's password:<br />
$ mkdir ~/.ssh<br />
$ cat ~/id_ecdsa.pub >> ~/.ssh/authorized_keys<br />
$ rm ~/id_ecdsa.pub<br />
$ chmod 600 ~/.ssh/authorized_keys<br />
<br />
The last two commands remove the public key from the server (which isn't needed now), and sets the correct permissions on the authorized_keys file.<br />
<br />
If you now disconnect from the server, and attempt to reconnect, you should be asked for the passphrase of the key:<br />
<br />
$ ssh mith@metawire.org<br />
Enter passphrase for key '/home/mith/.ssh/id_ecdsa':<br />
<br />
If you are unable to login with the key, double check the permissions on the {{Filename|authorized_keys}} file.<br />
<br />
Also check the permissions on the {{Filename|~/.ssh}} directory, which should have write permissions off for 'group' and 'other'. Run the following command to disable 'group' and 'other' write permissions for the {{Filename|~/.ssh}} directory:<br />
$ chmod go-w ~/.ssh<br />
<br />
==Remember key passphrases==<br />
Now you can login to your servers by using a key instead of a password, but how is this any easier, as you still need to enter the key passphrase? The answer is to use a SSH agent, a program which remembers the passphrases of your keys! There a number of different tools available, so have a read through and choose the one which seems best for you.<br />
<br />
===ssh-agent===<br />
ssh-agent is the default agent included with OpenSSH.<br />
<br />
$ ssh-agent<br />
SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147; export SSH_AUTH_SOCK;<br />
SSH_AGENT_PID=2148; export SSH_AGENT_PID;<br />
echo Agent pid 2148;<br />
<br />
When you run {{Codeline|ssh-agent}}, it will print out what environment variables it would use. To make use of these variables, run the command through the {{Codeline|eval}} command.<br />
<br />
$ eval `ssh-agent`<br />
Agent pid 2157<br />
<br />
You can add this to {{Filename|/etc/profile}} so that it will be run whenever you open a session:<br />
<br />
# echo 'eval `ssh-agent`' >> /etc/profile<br />
<br />
Note the correct quotes, the outer ones are single quotes, where as the inner ones are backticks!<br />
<br />
Now that the {{Codeline|ssh-agent}} is running, we need to tell it that we have a private key and where that is.<br />
<br />
$ ssh-add ~/.ssh/id_ecdsa<br />
Enter passphrase for /home/user/.ssh/id_ecdsa:<br />
Identity added: /home/user/.ssh/id_ecdsa (/home/user/.ssh/id_ecdsa)<br />
<br />
We were asked for our passphrase, entered it, that's all. Now you can login to your remote server without having to enter your password while your private key is password-protected. Sweet isn't it?<br />
<br />
The only downside is that a new instance of {{Codeline|ssh-agent}} needs to be created for every new console (shell) you open, that means you have to run {{Codeline|ssh-add}} every time again on each console. There is a workaround to that with a program or rather a script called [http://www.gentoo.org/proj/en/keychain/index.xml keychain] which is covered in the next section.<br />
<br />
====Using GnuPG Agent====<br />
<br />
The [[GnuPG]] agent, distributed with the {{Package Official|gnupg2}} package, has OpenSSH agent emulation. If you use GPG you might consider using its agent to take care of all of your keys. Otherwise you might like the PIN entry dialog it provides and its passphrase management, which is different from keychain.<br />
<br />
To start using GPG agent for your SSH keys you should first start the gpg-agent with the {{Codeline|--enable-ssh-support}} option. Example (don't forget to make the file executable):<br />
{{File|name=/etc/profile.d/gpg-agent.sh|content=<nowiki><br />
#!/bin/sh<br />
<br />
# Start the GnuPG agent and enable OpenSSH agent emulation<br />
gnupginf="${HOME}/.gnupg/gpg-agent.info"<br />
<br />
if pgrep -u "${USER}" gpg-agent >/dev/null 2>&1; then<br />
eval `cat $gnupginf`<br />
eval `cut -d= -f1 $gnupginf | xargs echo export`<br />
else<br />
eval `gpg-agent --enable-ssh-support --daemon`<br />
fi<br />
</nowiki>}}<br />
<br />
Once gpg-agent is running you can use ssh-add to approve keys, just like you did with plain ssh-agent. The list of approved keys is stored in the {{Filename|~/.gnupg/sshcontrol}} file. Once your key is approved you will get a PIN entry dialog every time your passphrase is needed. You can control passphrase caching in the {{Filename|~/.gnupg/gpg-agent.conf}} file. The following example would have gpg-agent cache your keys for 3 hours: <br />
<br />
# Cache settings<br />
default-cache-ttl 10800<br />
default-cache-ttl-ssh 10800<br />
<br />
Other useful settings for this file include the PIN entry program (GTK, QT or ncurses version), keyboard grabbing and so on...:<br />
<br />
# Environment file<br />
write-env-file /home/username/.gnupg/gpg-agent.info<br />
<br />
# Keyboard control<br />
#no-grab<br />
<br />
# PIN entry program<br />
#pinentry-program /usr/bin/pinentry-curses<br />
#pinentry-program /usr/bin/pinentry-qt4<br />
pinentry-program /usr/bin/pinentry-gtk-2<br />
<br />
====Using keychain====<br />
<br />
[http://www.funtoo.org/en/security/keychain/intro/ Keychain] manages one or more specified private keys. When initialized it will ask for the passphrase for the private key(s) and store it. That way your private key is password protected but you won't have to enter your password over and over again.<br />
<br />
Install keychain from the extra repo:<br />
<br />
# pacman -S keychain<br />
<br />
Create the following file and make it executable:<br />
{{File|name=/etc/profile.d/keychain.sh|content=<nowiki><br />
eval `keychain --eval --nogui -Q -q id_ecdsa`<br />
</nowiki>}}<br />
<br />
Or<br />
<br />
{{File|name=/etc/profile.d/keychain.sh|content=<nowiki><br />
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_dsa<br />
[[ -f $HOME/.keychain/$HOSTNAME-sh ]] && source $HOME/.keychain/$HOSTNAME-sh<br />
</nowiki>}}<br />
<br />
Or<br />
<br />
Append <br />
eval `keychain --eval --agents ssh id_dsa`<br />
to your {{Filename|.bashrc}} or {{Filename|.bash_profile}}.<br />
<br />
{{Tip| If you want greater security replace -Q with --clear but will be less convenient.}}<br />
<br />
If necessary, replace {{Filename|~/.ssh/id_dsa}} with the path to your private key. For those using a non-Bash compatible shell, see {{Codeline|keychain --help}} or {{Codeline|man keychain}} for details on other shells.<br />
<br />
Close your shell and open it again. Keychain should come up and if it's your first run it will ask your for the passphrase of the specified private key.<br />
<br />
See also the next section to learn how to go about Xsessions and keychain. Of course, you do still not need to use ssh-agent manually. Just install on of the x11-ask-keypass variants and you are good to go.<br />
<br />
====Using ssh-agent and x11-ssh-askpass====<br />
<br />
You need to start the ssh-agent everytime you start a new Xsession. The ssh-agent will be closed when the X session ends.<br />
<br />
Install a variant of x11-ssh-askpass which will ask your passphrase everytime you open a new Xsession. Either use the original x11-ssh-askpass from [[AUR]] or go with either ksshaskpass (uses kdelibs):<br />
# pacman -S ksshaskpass<br />
or openssh-askpass (uses qt):<br />
# pacman -S openssh-askpass<br />
<br />
After installing these, closing your Xsession and relogging you will henceforth be asked your passphrase on Xsession init without any further work.<br />
<br />
===GNOME Keyring===<br />
If you use the [[GNOME]] desktop, the [[GNOME Keyring]] tool can be used as an SSH agent. Visit the [[GNOME Keyring]] article.<br />
<br />
==Troubleshooting==<br />
If it appears that the SSH server is ignoring your keys, ensure that you have the proper permissions set on all relevant files.<br />
<br />
For the local machine:<br />
<br />
$ chmod 700 ~/<br />
$ chmod 700 ~/.ssh<br />
$ chmod 600 ~/.ssh/id_ecdsa<br />
<br />
For the remote machine:<br />
<br />
$ chmod 700 ~/<br />
$ chmod 700 ~/.ssh<br />
$ chmod 600 ~/.ssh/authorized_keys<br />
<br />
Failing this, run the sshd in debug mode and monitor the output while connecting:<br />
<br />
# /usr/sbin/sshd -d<br />
<br />
==Useful Links / Information==<br />
* [http://www-106.ibm.com/developerworks/linux/library/l-keyc.html OpenSSH key management, Part 1]<br />
* [http://www-106.ibm.com/developerworks/linux/library/l-keyc2/ OpenSSH key management, Part 2]<br />
* [http://www-106.ibm.com/developerworks/library/l-keyc3/ OpenSSH key management, Part 3]<br />
* [http://kimmo.suominen.com/docs/ssh/ Getting started with SSH]<br />
* [http://openssh.org/txt/release-5.7 OpenSSH 5.7 Release Notes]</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Improving_performance&diff=147905Improving performance2011-07-01T19:05:44Z<p>Nixpunk: added parenthetical note in "know your system," "hdparm" section, which points out that hdparm output rate estimate is based on testing an idle drive.</p>
<hr />
<div>[[Category: Other desktop user's resources (English)]]<br />
{{i18n|Maximizing Performance}}<br />
This article is a retrospective analysis and basic rundown about gaining performance in Arch Linux.<br />
<br />
==The basics==<br />
<br />
===Know your system===<br />
The best way to tune a system is to target the bottlenecks, that is the subsystems that limit the overall speed. They usually can be identified by knowing the specifications of the system, but there are some basic indications:<br />
* If the computer becomes slow when big applications, like openoffice and firefox, are running at the same time, then there is a good chance the amount of RAM is insufficient. To verify available RAM, use this command, and check for the line beginning with -/+buffers:<br />
$ free -m<br />
* If boot time is really slow, and if applications take a lot of time to load the first time they are launched, but run fine afterwards, then the hard drive is probably too slow. The speed of a hard drive can be measured using the hdparm command:<br />
$ hdparm -t /dev/harddrive<br />
This is only the pure read speed of the hard drive, and is not a valid benchmark, but a value superior to 40MB/s (assuming drive tested while idle) can be considered decent on an average system.<br />
* If the CPU load is consistently high even when RAM is available, then lowering CPU usage should be a priority. CPU load can be monitored in many ways, like using the top command:<br />
$ top<br />
* If the only applications lagging are the ones using direct rendering, meaning they use the graphic card, like video players and games, then improving the graphic performance should help. First step would be to verify if direct rendering simply isn't enabled. This is indicated by the glxinfo command:<br />
$ glxinfo | grep direct<br />
<br />
===The first thing to do===<br />
The simplest and most efficient way of improving overall performance is to run lightweight environments and applications.<br />
* Use a [[Window Manager|window manager]] instead of a [[Desktop Environment]]. Choices include [[dwm]], [[Openbox]] and [[JWM]].<br />
* Choose a minimal Desktop Environment over [[GNOME]] and [[KDE]]. Choices include [[LXDE]] and [[Xfce]].<br />
* Using lightweight applications. See [[Lightweight Software]] and the Light and Fast Applications Awards threads in the forum: [http://bbs.archlinux.org/viewtopic.php?id=41168 2007], [http://bbs.archlinux.org/viewtopic.php?id=67951 2008], [http://bbs.archlinux.org/viewtopic.php?id=78490 2009],[http://bbs.archlinux.org/viewtopic.php?id=88515 2010], and [http://bbs.archlinux.org/viewtopic.php?id=111878 2011].<br />
* Remove unnecessary daemons and background what daemons you can in {{Filename|/etc/rc.conf}}.<br />
<br />
===Compromise===<br />
Almost all tuning brings drawbacks. Lighter applications usually come with less features and some tweaks may make a system unstable, or simply require time to implement and maintain. This page tries to highlight those drawbacks, but the final judgment rests on the user.<br />
<br />
===Benchmarking===<br />
The effects of optimization are often difficult to judge. They can however be measured by [[benchmarking]] tools<br />
<br />
==Storage devices==<br />
===Choosing and tuning your filesystem===<br />
Choosing the best filesystem for a specific system is very important because each has its own strengths. The [[Beginner's Guide#Filesystem Types|beginner's guide]] provides a short summary of the most popular ones. You can also find relevant articles [[:Category:File systems (English)|here]].<br />
<br />
====Summary====<br />
*XFS: Excellent performance with large files. Low speed with small files. A good choice for /home.<br />
*Reiserfs: Excellent performance with small files. A good choice for /var.<br />
*Ext3: Average performance, reliable.<br />
*Ext4: Great overall performance, reliable, has performance issues with sqlite and some other databases.<br />
*JFS: Good overall performance, very low CPU usage, extremely fast resume after power failure.<br />
*Btrfs: Great overall performance (better than ext4), reliable (once it becomes stable). Lots of features. Still in heavy development and considered as unstable. Do not use this filesystem yet unless you know what you are doing and are prepared for potential data loss.<br />
<br />
====Mount options====<br />
Mount options offer an easy way to improve speed without reformatting. They can be set using the mount command:<br />
$ mount -o option1,option2 /dev/partition /mnt/partition<br />
To set them permanently, you can modify /etc/fstab to make the relevant line look like this:<br />
/dev/partition /mnt/partition partitiontype option1,option2 0 0<br />
A couple of mount options improving performance on almost all file-systems is {{Codeline|noatime,nodiratime}}. The former is a superset of the latter (which applies to directories only -- {{Codeline|noatime}} applies to both files and directories). In rare cases, for example if you use mutt, it can cause minor problems. You can instead use the {{Codeline|relatime}} option (NB relatime is the default in >2.6.30)<br />
<br />
====Ext3====<br />
See [[Ext3 Filesystem Tips]].<br />
<br />
====Ext4====<br />
See the [[Ext4#Improving performance | Ext4 wiki page]].<br />
<br />
====JFS====<br />
See [[JFS Filesystem#Optimizations| JFS Filesystem]].<br />
<br />
====XFS====<br />
For optimal speed, create an XFS file-system with:<br />
$ mkfs.xfs -l internal,lazy-count=1,size=128m -d agcount=2 /dev/thetargetpartition<br />
An XFS specific mount option that may increase performance is {{Codeline|<nowiki>logbufs=8</nowiki>}}. <br />
<br />
#/etc/fstab<br />
LABEL=XFSHOME /home xfs noatime,logbufs=8 0 1<br />
<br />
==== Reiserfs ====<br />
<br />
The {{Codeline|<nowiki>data=writeback</nowiki>}} mount option improves speed, but may corrupt data during power loss. The {{Codeline|notail}} mount option increases the space used by the filesystem by about 5%, but also improves overall speed. You can also reduce disk load by putting the journal and data on separate drives. This is be done when creating the filesystem: <br />
<br />
$ mkreiserfs –j /dev/hda1 /dev/hdb1<br />
<br />
Replace /dev/hda1 with the partition reserved for the journal, and /dev/hdb1 with the partition for data. You can learn more about reiserfs with this [http://www.funtoo.org/en/articles/linux/ffg/2/ article].<br />
<br />
====BTRFS====<br />
Btrfs is a new filesystem offering online defragmentation, optimized mode for SSDs, writable snapshots, changing size of partition without data loss and many other features. Btrfs is still in active development, and is available in the kernel (marked experimental). See more info on the [http://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs homepage].<br />
<br />
===== mkinitcpio.conf for btrfs =====<br />
<br />
For non-root btrfs filesystems the btrfs module and dependencies are loaded when required. For a root btrfs filesystem you should ensure the initial ramdisk has the correct modules. There is a dependency of the btrfs module on the libcrc32c module. You can add crc32c to the modules line of /etc/mkinitcpio.conf like so:<br />
<br />
MODULES="crc32c libcrc32c zlib_deflate btrfs"<br />
<br />
This avoids pitfalls like "unknown symbol" errors when loading the btrfs modules.<br />
See also [http://aur.archlinux.org/packages.php?ID=33376 mkinitcpio-btrfs].<br />
<br />
===Compressing /usr===<br />
A way to speed up reading from the hard drive is to compress the data, because there is less data to be read. It must however be decompressed, which means a greater CPU load. Some filesystems support transparent compression, most notably btrfs and reiserfs4, but their compression ratio is limited by the 4k block size. A good alternative is to compress /usr in a squashfs file, with a 64k(128k) block size, as instructed in this [http://forums.gentoo.org/viewtopic-t-646289.html Gentoo forums thread]. What this tutorial does is basically to compress the /usr folder into a compressed squashfs file-system, then mounts it with aufs. A lot of space is saved, usually two thirds of the original size of /usr, and applications load faster. However, each time an application is installed or reinstalled, it is written uncompressed, so /usr must be re-compressed periodically. Squashfs is already in the kernel, and aufs2 is in the extra repository, so no kernel compilation is needed if using the stock kernel.<br />
Since the linked guide is for Gentoo the next commands outline the steps especially for Arch. Basically we have got install two packages to get it working:<br />
# pacman -S aufs2 squashfs-tools<br />
This command installs the aufs-modules and some userspace-tools for the squash-filesystem.<br />
Now we need some extra directories where we can store the archive of /usr as read-only and another folder where we can store the data changed after the last compression as writeable:<br />
# mkdir -p /squashed/usr/{ro,rw}<br />
Now that we got a rough setup you should perform a complete system-upgrade since every change of content in /usr after the compression will be excluded from this speedup. If you use prelink you should also perform a complete prelink before creating the archive. Now it is time to invoke the command to compress /usr:<br />
# mksquashfs /usr /squashed/usr/usr.sfs -b 65536<br />
These parameters/options are the ones suggested by the Gentoo link but there might be some room for improvement using some of the options described [http://www.tldp.org/HOWTO/SquashFS-HOWTO/mksqoverview.html#mksqusing here].<br />
Now to get the archive mounted together with the writeable folder it is necessary to edit fstab:<br />
# nano /etc/fstab<br />
Add the following lines:<br />
/squashed/usr/usr.sfs /squashed/usr/ro squashfs loop,ro 0 0 <br />
usr /usr aufs udba=reval,br:/squashed/usr/rw:/squashed/usr/ro 0 0<br />
Now you should be done and able to reboot. The original Author suggests to delete all the old content of /usr, but this might cause some problems if anything goes wrong during some later re-compression. It is more safe to leave the old files in place just to be on the safe side.<br />
<br />
A [http://bbs.archlinux.org/viewtopic.php?pid=714052 bash script] has been created that will automate the process of re-compressing (read updating) the archive since the tutorial is meant for Gentoo and some options don't correlate to what they should be in Arch.<br />
<br />
===Tuning for an SSD===<br />
[[SSD#Tips_for_Maximizing_SSD_Performance]]<br />
<br />
==CPU==<br />
The only way to directly improve CPU speed is overclocking. As it is a complicated and risky task, it is not recommended for anyone except experts. The best way to overclock is through the BIOS. When purchasing your system, keep in mind that most Intel motherboards are notorious for disabling the capacity to overclock.<br />
<br />
A way to modify performance ([http://lkml.org/lkml/2009/9/6/136 ref]) is to use Con Kolivas' desktop-centric kernel patchset, which, among other things, replaces the Completely Fair Scheduler (CFS) with the Brain Fuck Scheduler (BFS).<br />
<br />
Kernel PKGBUILDs that include the BFS patch can be installed from the [[AUR]] or [[Unofficial_User_Repositories]]. See the respective pages for [http://aur.archlinux.org/packages.php?ID=32877 kernel26-ck], [http://aur.archlinux.org/packages.php?ID=36384 kernel26-bfs] or [http://aur.archlinux.org/packages.php?ID=40191 kernel26-pf] for more information on their additional patches.<br />
<br />
{{Note|BFS/CK are designed for desktop/laptop use and not servers. They provide low latency and work well for 16 CPUs or less. Also, Con Kolivas suggests setting HZ to 1000. For more information, see the [http://ck.kolivas.org/patches/bfs/bfs-faq.txt BFS FAQ] and [http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/2.6.37/2.6.37-ck1/patches/ ck patches].}}<br />
===[[Verynice]]===<br />
[http://thermal.cnde.iastate.edu/~sdh4/verynice/ Verynice] is a daemon, available on [http://aur.archlinux.org/packages.php?ID=6403 AUR], for dynamically adjusting the nice levels of executables. The nice level represent the priority of the executable when allocating CPU resources. Simply define executables for which responsiveness is important, like X or multimedia applications, as ''goodexe'' in {{filename|/etc/verynice.conf}}. Similarly, CPU-hungry executables running in the background, like make, can be defined as ''badexe''. This prioritisation greatly improves system responsiveness under heavy load.<br />
<br />
===[[Ulatencyd]]===<br />
Ulatency is a daemon that controls how the Linux kernel will spend it's resources on the running processes. It uses dynamic cgroups to give the kernel hints and limitations on processes.<br />
<br />
==Network==<br />
See relevant section in [[General Recommendations#Networking|General Recomendations]].<br />
<br />
==Graphics==<br />
<br />
===Xorg.conf configuration===<br />
Graphic performance heavily depends on the settings in {{Filename|/etc/X11/xorg.conf}}. There are tutorials for [[Nvidia]], [[ATI]] and [[Intel]] cards. Improper settings may stop Xorg from working, so caution is advised.<br />
<br />
===Driconf===<br />
Driconf is a small utility that allows you to change the direct rendering settings for open source drivers. Enabling HyperZ can drastically improve performance.<br />
<br />
===GPU Overclocking===<br />
Overclocking a graphics card is typically more expedient than with a CPU, since there are readily accessible software packages which allow for on-the-fly GPU clock adjustments. For ATI users, get [http://aur.archlinux.org/packages.php?ID=2128 rovclock], and Nvidia users should get nvclock in the extra repository. Intel chipsets users can install [http://www.gmabooster.com/ GMABooster] from [http://aur.archlinux.org/packages.php?ID=28197 AUR]<br />
<br />
The changes can be made permanent by running the appropriate command after X boots, for example by adding it to {{Filename|~/.xinitrc}}. A safer approach would be to only apply the overclocked settings when needed.<br />
<br />
==RAM and swap==<br />
<br />
=== Swappiness ===<br />
<br />
The swappiness represent how much the kernel prefers swap to RAM. Setting it to a very low value, meaning the kernel will almost always use RAM, is known to improve responsiveness on many systems. To do that, simply add those line to {{Filename|/etc/sysctl.conf}}:<br />
<br />
vm.swappiness=20<br />
vm.vfs_cache_pressure=50<br />
<br />
To test and more on why this may work, take a look at this [http://rudd-o.com/en/linux-and-free-software/tales-from-responsivenessland-why-linux-feels-slow-and-how-to-fix-that article].<br />
<br />
===Compcache===<br />
[http://code.google.com/p/compcache/ Compcache], also known as the ramzswap kernel module, creates a swap device in RAM and compresses it. That means that part of the RAM can hold much more information, but uses more CPU. Still, is it much quicker than a hard drive swap. If a system often falls back to swap, this could improve responsiveness. Compcache is available in the [http://aur.archlinux.org/packages.php?ID=40063 AUR].<br />
<br />
It is also possible (and recommended) to tell compcache to fall back on the hard drive swap when full. To do this, define a backing swap device in the configuration file. This swap device must not be in use when compcache is started, so remove it from your /etc/fstab!<br />
<br />
This is also a good way to reduce disk read/write cycles due to swap on SSDs.<br />
<br />
===Mounting /tmp to RAM===<br />
This will make your system a tiny bit faster, but will take up some of your RAM. It also reduces disk read/write cycles, and is therefore a good choice if using an SSD or if you have RAM to spare. Simply add this line to {{Filename|/etc/fstab}} and reboot:<br />
tmpfs /tmp tmpfs defaults,noatime,nodev,nosuid,mode=1777 0 0<br />
<br />
===Using the graphic card's RAM===<br />
In the unlikely case that you have very little RAM and a surplus of video RAM, you can use the latter as swap. See [[Swap on video ram]].<br />
<br />
=== Preloading ===<br />
Preloading is the action of putting and keeping target files into the RAM. The practical use is that preloaded applications always start very quickly, because reading from the RAM is always quicker than from the hard drive. However, part of your RAM will be dedicated to this task, but no more than if you kept the application open. Therefore, preloading is best used with heavy, often-used applications, like firefox and openoffice.<br />
==== Go-preload ====<br />
[http://aur.archlinux.org/packages.php?ID=34207 Go-preload] is a small daemon created in the [http://forums.gentoo.org/viewtopic-t-789818-view-next.html?sid=5457cff93039fc7d4a3e445ef90f9821 gentoo forum]. To use it, first run this command in a terminal for each program you want to preload at boot:<br />
# gopreload-prepare program<br />
Then, as instructed, press enter when the program is fully loaded. This will add a list of files needed by the program in {{Filename|/usr/share/gopreload/enabled}}. To load all lists at boot, simply add gopreload to your DAEMONS array in {{Filename|/etc/rc.conf}}. To disable the loading of a program, remove the appropriate list in {{Filename|/usr/share/gopreload/enabled}}, or move it to {{Filename|/usr/share/gopreload/disabled}}.<br />
====Preload====<br />
A more automated, albeit less KISS, approach is used by [[Preload]]. All you have to do is add it to your DAEMONS array in {{Filename|/etc/rc.conf}}. It will monitor the most used files on your system, and with time build its own list of files to preload at boot.<br />
====Readahead====<br />
[[Readahead]] is a tool that can cache files before needed and help you accelerating program loading.<br />
<br />
==Boot time==<br />
You can find tutorials with good tips in the article [[Improve Boot Performance]].<br />
<br />
===Suspend to ram===<br />
The best way to reduce boot time is not booting at all. Consider [[Suspend to RAM|suspending your system to ram]] instead.<br />
<br />
===Kernel boot options===<br />
Some boot options can decrease kernel boot time. The {{Codeline|fastboot}} option usually can take off one second or so. Also, if you see a message saying "Waiting 8s for device XXX" at boot, adding {{Codeline|<nowiki>rootdelay=1</nowiki>}} can reduce the waiting time, but be careful, as it may break the booting process. Those options are set in {{Filename|/boot/grub/menu.lst}} or {{Filename|/etc/lilo.conf}}, depending on which bootloader you use.<br />
<br />
===Custom kernel===<br />
Compiling a custom kernel will reduce boot time and memory usage, but can be long, complicated and even painful. It usually is not worth the effort, but can be very interesting and a great learning experience. If you really know what you are doing, start [[Kernel Compilation|here]].<br />
<br />
==Application-specific tips==<br />
===Firefox===<br />
The [[Firefox]] article offers good tips; most notably [[Firefox Tips and Tweaks#Improve rendering by disabling pango |disabling pango]], [[Firefox Tips and Tweaks#Defragment the profile's SQLite databases|cleaning the sqlite database]], and using [[Firefox#Firefox customized for speed|firefox-pgo]]. See also: [[Speed-up Firefox using tmpfs]], and [[Firefox Tips and Tweaks#Turning off anti-phishing|Turning off anti-phishing]].<br />
<br />
===Gcc/Makepkg===<br />
See [[Ccache]].<br />
<br />
===Mkinitcpio===<br />
User josh_ from the forum has made impressive changes to the mkinitcpio script, making it two or three times faster. While waiting for these changes to be implemented, you can get them [http://bbs.archlinux.org/viewtopic.php?id=79898 here].<br />
<br />
===LibreOffice===<br />
See [[LibreOffice#Speed up LibreOffice|Speed up LibreOffice]].<br />
<br />
===Pacman===<br />
See [[Improve Pacman Performance]].<br />
<br />
===SSH===<br />
See [[SSH#Speed up SSH|Speed up SSH]].</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Improving_performance&diff=120679Improving performance2010-11-05T19:41:20Z<p>Nixpunk: change mb to MB</p>
<hr />
<div>[[Category: Other desktop user's resources (English)]]<br />
[[Category: HOWTOs (English)]]<br />
{{i18n|Maximizing Performance}}<br />
This article is a retrospective analysis and basic rundown about gaining performance in Arch Linux.<br />
<br />
==The basics==<br />
<br />
===Know your system===<br />
The best way to tune a system is to target the bottlenecks, that is the subsystems that limit the overall speed. They usually can be identified by knowing the specifications of the system, but there are some basic indications:<br />
* If the computer becomes slow when big applications, like openoffice and firefox, are running at the same time, then there is a good chance the amount of RAM is insufficient. To verify available RAM, use this command, and check for the line beginning with -/+buffers:<br />
$ free -m<br />
* If boot time is really slow, and if applications take a lot of time to load the first time they are launched, but run fine afterwards, then the hard drive is probably too slow. The speed of a hard drive can be measured using the hdparm command:<br />
$ hdparm -t /dev/harddrive<br />
This is only the pure read speed of the hard drive, and is not a valid benchmark, but a value superior to 40MB/s can be considered decent on an average system.<br />
* If the CPU load is consistently high even when RAM is available, then lowering CPU usage should be a priority. CPU load can be monitored in many ways, like using the top command:<br />
$ top<br />
* If the only applications lagging are the ones using direct rendering, meaning they use the graphic card, like video players and games, then improving the graphic performance should help. First step would be to verify if direct rendering simply isn't enabled. This is indicated by the glxinfo command:<br />
$ glxinfo | grep direct<br />
<br />
===The first thing to do===<br />
The simplest and most efficient way of improving overall performance is to run lightweight environments and applications.<br />
* Use a [[Window Manager|window manager]] instead of a [[Desktop Environment]]. Choices include [[dwm]], [[Openbox]] and [[JWM]].<br />
* Choose a minimal Desktop Environment over [[GNOME]] and [[KDE]]. Choices include [[LXDE]] and [[Xfce]].<br />
* Using lightweight applications. See [[Lightweight Software]] and the Light and Fast Applications Awards threads in the forum: [http://bbs.archlinux.org/viewtopic.php?id=41168 2007], [http://bbs.archlinux.org/viewtopic.php?id=67951 2008], [http://bbs.archlinux.org/viewtopic.php?id=78490 2009], and [http://bbs.archlinux.org/viewtopic.php?id=88515 2010].<br />
* Remove unnecessary daemons and background what daemons you can in {{Filename|/etc/rc.conf}}.<br />
<br />
===Compromise===<br />
Almost all tuning brings drawbacks. Lighter applications usually come with less features and some tweaks may make a system unstable, or simply require time to implement and maintain. This page tries to highlight those drawbacks, but the final judgment rests on the user.<br />
<br />
===Benchmarking===<br />
The effects of optimization are often difficult to judge. They can however be measured by [[benchmarking]] tools<br />
<br />
==Storage devices==<br />
===Choosing and tuning your filesystem===<br />
Choosing the best filesystem for a specific system is very important because each has its own strengths. The [[Beginner's Guide#Filesystem Types|beginner's guide]] provides a short summary of the most popular ones. You can also find relevant articles [http://wiki.archlinux.org/index.php/Category:File_systems_%28English%29 here].<br />
<br />
====Summary====<br />
*XFS: Excellent performance with large files. Low speed with small files. A good choice for /home.<br />
*Reiserfs: Excellent performance with small files. A good choice for /var.<br />
*Ext3: Average performance, reliable.<br />
*Ext4: Great overall performance, reliable, has performance issues with sqlite and some other databases.<br />
*JFS: Good overall performance, very low CPU usage.<br />
*Btrfs: Great overall performance (better than ext4), reliable (once it becomes stable). Lots of features. Still in heavy development and considered as unstable. Do not use this filesystem yet unless you know what you are doing and are prepared for potential data loss.<br />
<br />
====Mount options====<br />
Mount options offer an easy way to improve speed without reformatting. They can be set using the mount command:<br />
$ mount -o option1,option2 /dev/partition /mnt/partition<br />
To set them permanently, you can modify /etc/fstab to make the relevant line look like this:<br />
/dev/partition /mnt/partition partitiontype option1,option2 0 0<br />
A couple of mount options improving performance on almost all file-systems is {{Codeline|noatime,nodiratime}}. The former is a superset of the latter (which applies to directories only -- {{Codeline|noatime}} applies to both files and directories). In rare cases, for example if you use mutt, it can cause minor problems. You can instead use the {{Codeline|relatime}} option.<br />
<br />
====Ext3====<br />
See [[Ext3 Filesystem Tips]].<br />
<br />
====JFS====<br />
See [[JFS Filesystem#Optimizations| JFS Filesystem]].<br />
<br />
====XFS====<br />
For optimal speed, create an XFS file-system with:<br />
$ mkfs.xfs -l internal,lazy-count=1 size=128m -d agcount=2 /dev/thetargetpartition<br />
An XFS specific mount option that may increase performance is {{Codeline|<nowiki>logbufs=8</nowiki>}}. <br />
<br />
#/etc/fstab<br />
LABEL=XFSHOME /home xfs noatime,logbufs=8 0 1<br />
<br />
As its speed when dealing with small files is poor, users of XFS should consider using [[Improve_Pacman_Performance#pacman-cage|pacman-cage]]. For defragmentation, see [[Defragmentation XFS]].<br />
<br />
==== Reiserfs ====<br />
<br />
The {{Codeline|<nowiki>data=writeback</nowiki>}} mount option improves speed, but may corrupt data during power loss. The {{Codeline|notail}} mount option increases the space used by the filesystem by about 5%, but also improves overall speed. You can also reduce disk load by putting the journal and data on separate drives. This is be done when creating the filesystem: <br />
<br />
$ mkreiserfs –j /dev/hda1 /dev/hdb1<br />
<br />
Replace /dev/hda1 with the partition reserved for the journal, and /dev/hdb1 with the partition for data. You can learn more about reiserfs with this [http://www.funtoo.org/en/articles/linux/ffg/2/ article].<br />
<br />
====BTRFS====<br />
Btrfs is a new filesystem offering online defragmentation, optimized mode for SSDs, writable snapshots, changing size of partition without data loss and many other features. Btrfs is still in active development, and is available in the kernel (marked experimental). See more info on the [http://btrfs.wiki.kernel.org/index.php/Main_Page Btrfs homepage].<br />
<br />
===== mkinitcpio.conf for btrfs =====<br />
<br />
For non-root btrfs filesystems the btrfs module and dependencies are loaded when required. For a root btrfs filesystem you should ensure the initial ramdisk has the correct modules. There is a dependency of the btrfs module on the libcrc32c module. You can add crc32c to the modules line of /etc/mkinitcpio.conf like so:<br />
<br />
MODULES="crc32c libcrc32c zlib_deflate btrfs"<br />
<br />
This avoids pitfalls like "unknown symbol" errors when loading the btrfs modules.<br />
See also [http://aur.archlinux.org/packages.php?ID=33376 mkinitcpio-btrfs].<br />
<br />
===Compressing /usr===<br />
A way to speed up reading from the hard drive is to compress the data, because there is less data to be read. It must however be decompressed, which means a greater CPU load. Some filesystems support transparent compression, most notably btrfs and reiserfs4, but their compression ratio is limited by the 4k block size. A good alternative is to compress /usr in a squashfs file, with a 64k(128k) block size, as instructed in this [http://forums.gentoo.org/viewtopic-t-646289.html Gentoo forums thread]. What this tutorial does is basically to compress the /usr folder into a compressed squashfs file-system, then mounts it with aufs. A lot of space is saved, usually two thirds of the original size of /usr, and applications load faster. However, each time an application is installed or reinstalled, it is written uncompressed, so /usr must be re-compressed periodically.Squashfs is already in the kernel, and aufs2 is in the extra repository, so no kernel compilation is needed if using the stock kernel.<br />
Since the linked guide is for Gentoo the next commands outline the steps especially for Arch. Basically we have got install two packages to get it working:<br />
$ pacman -S aufs2 squashfs-tools<br />
This command installs the aufs-modules and some userspace-tools for the squash-filesystem.<br />
Now we need some extra directories where we can store the archive of /usr as read-only and another folder where we can store the data changed after the last compression as writeable:<br />
$ mkdir -p /squashed/usr/{ro,rw}<br />
Now that we got a rough setup you should perform a complete system-upgrade since every change of content in /usr after the compression will be excluded from this speedup. If you use prelink you should also perform a complete prelink before creating the archive. Now it is time to invoke the command to compress /usr:<br />
$ mksquashfs /usr /squashed/usr/usr.sfs -b 65536<br />
These parameters/options are the ones suggested by the Gentoo link but there might be some room for improvement using some of the options described [http://www.tldp.org/HOWTO/SquashFS-HOWTO/mksqoverview.html#mksqusing here].<br />
Now to get the archive mounted together with the writeable folder it is necessary to edit fstab:<br />
$ nano /etc/fstab<br />
Add the following lines:<br />
/squashed/usr/usr.sfs /squashed/usr/ro squashfs loop,ro 0 0 <br />
usr /usr aufs udba=reval,br:/squashed/usr/rw:/squashed/usr/ro 0 0<br />
Now you should be done and able to reboot. The original Author suggests to delete all the old content of /usr, but this might cause some problems if anything goes wrong during some later re-compression. It is more safe to leave the old files in place just to be on the safe side.<br />
<br />
A [http://bbs.archlinux.org/viewtopic.php?pid=714052 bash script] has been created that will automate the process of re-compressing (read updating) the archive since the tutorial is meant for Gentoo and some options don't correlate to what they should be in Arch.<br />
<br />
===Tuning for an SSD===<br />
[[SSD#Tips_for_Maximizing_SSD_Performance]]<br />
<br />
==CPU==<br />
The only way to directly improve CPU speed is overclocking. As it is a complicated and risky task, it is not recommended for anyone except experts. The best way to overclock is through the BIOS. When purchasing your system, keep in mind that most Intel motherboards are notorious for disabling the capacity to overclock.<br />
<br />
A way to modify performance ([http://lkml.org/lkml/2009/9/6/136 ref]) is to use Con Kolivas' desktop-centric kernel patchset, which, among other things, replaces the Completely Fair Scheduler (CFS) with the Brain Fuck Scheduler (BFS).<br />
<br />
You can install [http://aur.archlinux.org/packages.php?ID=32877 kernel26-ck] from the [[AUR]].<br />
<br />
Or, install [http://aur.archlinux.org/packages.php?ID=36384 kernel26-bfs], which just contains the BFS patch.<br />
<br />
Some other kernels in the AUR have the BFS patch included or available as an option.<br />
<br />
{{Note|BFS/CK are designed for desktop/laptop use and not servers. They provide low latency and work well for 16 CPUs or less. Also, Con Kolivas suggests setting HZ to 1000. For more information, see the [http://ck.kolivas.org/patches/bfs/bfs-faq.txt BFS FAQ] and [http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/2.6.32/2.6.32-ck1/patches/ ck patches].}}<br />
<br />
===Verynice===<br />
[http://thermal.cnde.iastate.edu/~sdh4/verynice/ Verynice] is a daemon, available on [http://aur.archlinux.org/packages.php?ID=6403 AUR], for dynamically adjusting the nice levels of executables. The nice level represent the priority of the executable when allocating CPU resources. Simply define executables for which responsiveness is important, like X or multimedia applications, as ''goodexe'' in {{filename|/etc/verynice.conf}}. Similarly, CPU-hungry executables running in the background, like make, can be defined as ''badexe''. This prioritisation greatly improves system responsiveness under heavy load.<br />
<br />
==Network==<br />
See relevant section in [[General Recommendations#Networking|General Recomendations]].<br />
<br />
==Graphics==<br />
<br />
===Xorg.conf configuration===<br />
Graphic performance heavily depends on the settings in {{Filename|/etc/X11/xorg.conf}}. There are tutorials for [[Nvidia]], [[ATI]] and [[Intel]] cards. Improper settings may stop Xorg from working, so caution is advised.<br />
<br />
===Driconf===<br />
Driconf is a small utility that allows you to change the direct rendering settings for open source drivers. Enabling HyperZ can drastically improve performance.<br />
<br />
===GPU Overclocking===<br />
Overclocking a graphics card is typically more expedient than with a CPU, since there are readily accessible software packages which allow for on-the-fly GPU clock adjustments. For ATI users, get [http://aur.archlinux.org/packages.php?ID=2128 rovclock], and Nvidia users should get nvclock in the extra repository. Intel chipsets users can install [http://www.gmabooster.com/ GMABooster] from [http://aur.archlinux.org/packages.php?ID=28197 AUR]<br />
<br />
The changes can be made permanent by running the appropriate command after X boots, for example by adding it to {{Filename|~/.xinitrc}}. A safer approach would be to only apply the overclocked settings when needed.<br />
<br />
==RAM and swap==<br />
<br />
=== Swappiness ===<br />
<br />
The swappiness represent how much the kernel prefers swap to RAM. Setting it to a very low value, meaning the kernel will almost always use RAM, is known to improve responsiveness on many systems. To do that, simply add those line to {{Filename|/etc/sysctl.conf}}:<br />
<br />
vm.swappiness=20<br />
vm.vfs_cache_pressure=50<br />
<br />
To test and more on why this may work, take a look at this [http://rudd-o.com/en/linux-and-free-software/tales-from-responsivenessland-why-linux-feels-slow-and-how-to-fix-that article].<br />
<br />
===Compcache===<br />
[http://code.google.com/p/compcache/ Compcache], also known as the ramzswap kernel module, creates a swap device in RAM and compresses it. That means that part of the RAM can hold much more information, but uses more CPU. Still, is it much quicker than a hard drive swap. If a system often falls back to swap, this could improve responsiveness. Compcache is available in [community].<br />
<br />
It is also possible (and recommended) to tell compcache to fall back on the hard drive swap when full. To do this, define a backing swap device in the configuration file. This swap device must not be in use when compcache is started, so remove it from your /etc/fstab!<br />
<br />
This is also a good way to reduce disk read/write cycles due to swap on SSDs.<br />
<br />
===Mounting /tmp to RAM===<br />
This will make your system a tiny bit faster, but will take up some of your RAM. It also reduces disk read/write cycles, and is therefore a good choice if using an SSD or if you have RAM to spare. Simply add this line to {{Filename|/etc/fstab}} and reboot:<br />
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0<br />
<br />
===Using the graphic card's RAM===<br />
In the unlikely case that you have very little RAM and a surplus of video RAM, you can use the latter as swap. See [[Swap on video ram]].<br />
<br />
=== Preloading ===<br />
Preloading is the action of of putting and keeping target files into the RAM. The practical use is that preloaded applications always start very quickly, because reading from the RAM is always quicker than from the hard drive. However, part of your RAM will be dedicated to this task, but no more than if you kept the application open. Therefore, preloading is best used with heavy, often-used applications, like firefox and openoffice.<br />
==== Go-preload ====<br />
[http://aur.archlinux.org/packages.php?ID=34207 Go-preload] is a small daemon created in the [http://forums.gentoo.org/viewtopic-t-789818-view-next.html?sid=5457cff93039fc7d4a3e445ef90f9821 gentoo forum]. To use it, first run this command in a terminal for each program you want to preload at boot:<br />
# gopreload-prepare program<br />
Then, as instructed, press enter when the program is fully loaded. This will add a list of files needed by the program in {{Filename|/usr/share/gopreload/enabled}}. To load all lists at boot, simply add gopreload to your DAEMONS array in {{Filename|/etc/rc.conf}}. To disable the loading of a program, remove the appropriate list in {{Filename|/usr/share/gopreload/enabled}}, or move it to {{Filename|/usr/share/gopreload/disabled}}.<br />
====Preload====<br />
A more automated, albeit less KISS, approach is used by [[Preload]]. All you have to do is add it to your DAEMONS array in {{Filename|/etc/rc.conf}}. It will monitor the most used files on your system, and with time build its own list of files to preload at boot.<br />
<br />
==Boot time==<br />
You can find tutorials with good tips [[Tweaking for a faster boot time|here]] and [[Speedup boot|here]].<br />
<br />
===Suspend to ram===<br />
The best way to reduce boot time is not booting at all. Consider [[Suspend to RAM|suspending your system to ram]] instead.<br />
<br />
===Kernel boot options===<br />
Some boot options can decrease kernel boot time. The {{Codeline|fastboot}} option usually can take off one second or so. Also, if you see a message saying "Waiting 8s for device XXX" at boot, adding {{Codeline|<nowiki>rootdelay=1</nowiki>}} can reduce the waiting time, but be careful, as it may break the booting process. Those options are set in {{Filename|/boot/grub/menu.lst}} or {{Filename|/etc/lilo.conf}}, depending on which bootloader you use.<br />
<br />
===Custom kernel===<br />
Compiling a custom kernel will reduce boot time and memory usage, but can be long, complicated and even painful. It usually is not worth the effort, but can be very interesting and a great learning experience. If you really know what you are doing, start [[Kernel Compilation|here]].<br />
<br />
===Speed Up udev===<br />
<br />
Performance gains can be realized by bypassing the blacklisting logic present in the {{Filename|/lib/udev/load-modules.sh}} script. See [[Speed_Up_udev]] for additional details.<br />
<br />
==Application-specific tips==<br />
===Firefox===<br />
The [[Firefox]] article offers good tips; most notably [[Firefox#Speed up rendering by disabling pango |disabling pango]], [[Firefox#Speed-Up Firefox by Defragmenting the Profile's SQLite Databases|cleaning the sqlite database]], and using [[Firefox#Firefox customized for Speed|firefox-pgo]]. See also: [[Speed-up Firefox using tmpfs]], and [[Firefox Tips and Tweaks#Turning off anti-phishing to speedup Firefox|Turning off anti-phishing]].<br />
<br />
===Gcc/Makepkg===<br />
See [[Ccache]].<br />
<br />
===Mkinitcpio===<br />
User josh_ from the forum has made impressive changes to the mkinitcpio script, making it two or three times faster. While waiting for these changes to be implemented, you can get them [http://bbs.archlinux.org/viewtopic.php?id=79898 here].<br />
<br />
===OpenOffice===<br />
See [[OpenOffice#Speed up OpenOffice|Speed up OpenOffice]].<br />
<br />
===Pacman===<br />
See [[Improve Pacman Performance]].<br />
<br />
===SSH===<br />
See [[SSH#Speed up SSH|Speed up SSH]].</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Dzen&diff=113347Dzen2010-08-05T16:55:29Z<p>Nixpunk: spelling/grammar edit</p>
<hr />
<div>[[Category:Utilities (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[Category:Eye candy (English)]]<br />
{{Stub}}<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Dzen}}<br />
{{i18n_links_end}}<br />
<br />
=Introduction=<br />
From the [http://gotmor.googlepages.com/dzen dzen] website:<br />
<br />
''"Dzen is a general purpose messaging, notification and menuing program for X11. It was designed to be scriptable in any language and integrate well with window managers like dwm, wmii and xmonad though it will work with any window manager."''<br />
<br />
=Installation=<br />
dzen is available from the community repository:<br />
# pacman -S dzen2<br />
<br />
And also in the [[AUR|AUR]], you can find [http://aur.archlinux.org/packages.php?ID=31899 dzen2-xft-xpm-xinerama-svn 267-2]. <br><br />
This version has all the bells & whistles enabled in the PKGBUILD. <br />
With Xft and XPM support you can use nice fonts and xpm images in your bar.<br />
<br />
=Tips & Tricks=<br />
<br />
== Using custom fonts with Dzen ==<br />
<br />
If you wish to use custom fonts with dzen2 (like the popular Terminus font), you need to add the path to your local fonts folder in xorg.conf.<br />
<br />
Section "Files"<br />
...<br />
FontPath "/usr/share/fonts/local"<br />
...<br />
EndSection<br />
<br />
If you do not have permission or do not want to change xorg.conf, you may add this to ~/.xinitrc:<br />
<br />
xset +fp /usr/share/fonts/local<br />
xset fp rehash<br />
<br />
== Dzen & Conky ==<br />
Conky can be used to pipe information directly to dzen for output in a statusbar. <br />
This can be done with Conky in the Extra repository and also with [http://aur.archlinux.org/packages.php?do_Details=1&ID=11884&O=0&L=0&C=0&K=conky-cli&SB=n&SO=a&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd conky-cli], a stripped-down version of the Conky status utility from [[AUR | AUR]] . <br><br />
The following example displays the the loadavg values in red and the current time in the default dzen foreground colour:<br />
<br />
'''~/.conkyrc:'''<br />
background no<br />
out_to_console yes<br />
update_interval 1.0<br />
total_run_times 0<br />
use_spacer none<br />
<br />
TEXT<br />
^fg(#ff0000)${loadavg 1 2 3} ^fg()${time %a %b %d %I:%M%P}<br />
<br />
<br />
'''~/bin/dzconky:'''<br />
<br />
#!/bin/sh<br />
<br />
FG='#aaaaaa'<br />
BG='#1a1a1a'<br />
FONT='-*-terminus-*-r-normal-*-*-120-*-*-*-*-iso8859-*'<br />
conky | dzen2 -e - -h '16' -w '600' -ta r -fg $FG -bg $BG -fn $FONT<br />
<br />
Simply execute ''dzconky'' in your startup scripts.<br />
<br />
== Enabling Xft support for dzen ==<br />
<br />
{{Note|You need to install '''libxft''' package.}}<br />
As of revision 241 (development), dzen2 has optional support for Xft. To enable Xft, you should build dzen2 with these options: ('''edit''' {{filename|config.mk}})<br />
<br />
## Option: With Xinerama and XPM and XFT<br />
LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lXinerama -lXpm `pkg-config --libs xft`<br />
CFLAGS = -Wall -Os ${INCS} -DVERSION=\"${VERSION}\" -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT `pkg-config --cflags xft`<br />
<br />
To check libxft support, you can use this command:<br />
<br />
echo "ehlo world" | dzen2 -fn 'Times New Roman' -p</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=OpenSSH&diff=109602OpenSSH2010-06-25T23:00:04Z<p>Nixpunk: spelling edit</p>
<hr />
<div>[[Category:Daemons and system services (English)]]<br />
{{i18n|SSH}}<br />
<br />
Secure Shell or SSH is a network protocol that allows data to be exchanged over a secure channel between two computers. Encryption provides confidentiality and integrity of data. SSH uses public-key cryptography to authenticate the remote computer and allow the remote computer to authenticate the user, if necessary.<br />
<br />
SSH is typically used to log into a remote machine and execute commands, but it also supports tunneling, forwarding arbitrary TCP ports and X11 connections; file transfer can be accomplished using the associated SFTP or SCP protocols.<br />
<br />
An SSH server, by default, listens on the standard TCP port 22. An SSH client program is typically used for establishing connections to an ''sshd'' daemon accepting remote connections. Both are commonly present on most modern operating systems, including Mac OS X, GNU/Linux, Solaris and OpenVMS. Proprietary, freeware and open source versions of various levels of complexity and completeness exist.<br />
<br />
(Source: [[Wikipedia:Secure Shell]])<br />
<br />
= OpenSSH =<br />
<br />
OpenSSH (OpenBSD Secure Shell) is a set of computer programs providing encrypted communication sessions over a computer network using the ssh protocol. It was created as an open source alternative to the proprietary Secure Shell software suite offered by SSH Communications Security. OpenSSH is developed as part of the OpenBSD project, which is led by Theo de Raadt.<br />
<br />
OpenSSH is occasionally confused with the similarly-named OpenSSL; however, the projects have different purposes and are developed by different teams, the similar name is drawn only from similar goals.<br />
<br />
== Installing OpenSSH ==<br />
# pacman -S openssh<br />
<br />
== Configuring SSH ==<br />
===Client===<br />
The SSH client configuration file can be found and edited in {{Filename|/etc/ssh/ssh_config}}.<br />
<br />
An example configuration: <br />
<br />
{{File|name=/etc/ssh/ssh_config|content=<br />
<br />
# $OpenBSD: ssh_config,v 1.25 2009/02/17 01:28:32 djm Exp $<br />
<br />
# This is the ssh client system-wide configuration file. See<br />
# ssh_config(5) for more information. This file provides defaults for<br />
# users, and the values can be changed in per-user configuration files<br />
# or on the command line.<br />
<br />
# Configuration data is parsed as follows:<br />
# 1. command line options<br />
# 2. user-specific file<br />
# 3. system-wide file<br />
# Any configuration value is only changed the first time it is set.<br />
# Thus, host-specific definitions should be at the beginning of the<br />
# configuration file, and defaults at the end.<br />
<br />
# Site-wide defaults for some commonly used options. For a comprehensive<br />
# list of available options, their meanings and defaults, please see the<br />
# ssh_config(5) man page.<br />
<br />
Host *<br />
# ForwardAgent no<br />
# ForwardX11 no<br />
# RhostsRSAAuthentication no<br />
# RSAAuthentication yes<br />
# PasswordAuthentication yes<br />
# HostbasedAuthentication no<br />
# GSSAPIAuthentication no<br />
# GSSAPIDelegateCredentials no<br />
# BatchMode no<br />
# CheckHostIP yes<br />
# AddressFamily any<br />
# ConnectTimeout 0<br />
# StrictHostKeyChecking ask<br />
# IdentityFile ~/.ssh/identity<br />
# IdentityFile ~/.ssh/id_rsa<br />
# IdentityFile ~/.ssh/id_dsa<br />
# Port 22<br />
# Protocol 2,1<br />
# Cipher 3des<br />
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc<br />
# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160<br />
# EscapeChar ~<br />
# Tunnel no<br />
# TunnelDevice any:any<br />
# PermitLocalCommand no<br />
# VisualHostKey no<br />
HashKnownHosts yes<br />
StrictHostKeyChecking ask}}<br />
<br />
It is recommended to change the Protocol line into this:<br />
Protocol 2<br />
<br />
That means that only Protocol 2 will be used, since Protocol 1 is considered somewhat insecure.<br />
<br />
===Daemon===<br />
The SSH daemon configuration file can be found and edited in {{Filename|/etc/ssh/ssh'''d'''_config}}.<br />
<br />
An example configuration: <br />
<br />
{{File|name=/etc/ssh/sshd_config|content=<br />
<br />
# $OpenBSD: sshd_config,v 1.75 2007/03/19 01:01:29 djm Exp $<br />
<br />
# This is the sshd server system-wide configuration file. See<br />
# sshd_config(5) for more information.<br />
<br />
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin<br />
<br />
# The strategy used for options in the default sshd_config shipped with<br />
# OpenSSH is to specify options with their default value where<br />
# possible, but leave them commented. Uncommented options change a<br />
# default value.<br />
<br />
#Port 22<br />
#Protocol 2,1<br />
ListenAddress 0.0.0.0<br />
#ListenAddress ::<br />
<br />
# HostKey for protocol version 1<br />
#HostKey /etc/ssh/ssh''host''key<br />
# HostKeys for protocol version 2<br />
#HostKey /etc/ssh/ssh''host''rsa_key<br />
#HostKey /etc/ssh/ssh''host''dsa_key<br />
<br />
# Lifetime and size of ephemeral version 1 server key<br />
#KeyRegenerationInterval 1h<br />
#ServerKeyBits 768<br />
<br />
# Logging<br />
#obsoletes ~QuietMode and ~FascistLogging<br />
#SyslogFacility AUTH<br />
#LogLevel INFO<br />
<br />
# Authentication:<br />
<br />
#LoginGraceTime 2m<br />
#PermitRootLogin yes<br />
#StrictModes yes<br />
#MaxAuthTries 6<br />
<br />
#RSAAuthentication yes<br />
#PubkeyAuthentication yes<br />
#AuthorizedKeysFile .ssh/authorized_keys<br />
<br />
# For this to work you will also need host keys in /etc/ssh/ssh''known''hosts<br />
#RhostsRSAAuthentication no<br />
# similar for protocol version 2<br />
#HostbasedAuthentication no<br />
# Change to yes if you don't trust ~/.ssh/known_hosts for<br />
# RhostsRSAAuthentication and HostbasedAuthentication<br />
#IgnoreUserKnownHosts no<br />
# Don't read the user's ~/.rhosts and ~/.shosts files<br />
#IgnoreRhosts yes<br />
<br />
# To disable tunneled clear text passwords, change to no here!<br />
#PasswordAuthentication yes<br />
#PermitEmptyPasswords no<br />
<br />
# Change to no to disable s/key passwords<br />
#ChallengeResponseAuthentication yes<br />
<br />
# Kerberos options<br />
#KerberosAuthentication no<br />
#KerberosOrLocalPasswd yes<br />
#KerberosTicketCleanup yes<br />
#KerberosGetAFSToken no<br />
<br />
# GSSAPI options<br />
#GSSAPIAuthentication no<br />
#GSSAPICleanupCredentials yes<br />
<br />
# Set this to 'yes' to enable PAM authentication, account processing,<br />
# and session processing. If this is enabled, PAM authentication will<br />
# be allowed through the ~ChallengeResponseAuthentication mechanism.<br />
# Depending on your PAM configuration, this may bypass the setting of<br />
# PasswordAuthentication, ~PermitEmptyPasswords, and<br />
# "PermitRootLogin without-password". If you just want the PAM account and<br />
# session checks to run without PAM authentication, then enable this but set<br />
# ChallengeResponseAuthentication=no<br />
#UsePAM no<br />
<br />
#AllowTcpForwarding yes<br />
#GatewayPorts no<br />
#X11Forwarding no<br />
#X11DisplayOffset 10<br />
#X11UseLocalhost yes<br />
#PrintMotd yes<br />
#PrintLastLog yes<br />
#TCPKeepAlive yes<br />
#UseLogin no<br />
#UsePrivilegeSeparation yes<br />
#PermitUserEnvironment no<br />
#Compression yes<br />
#ClientAliveInterval 0<br />
#ClientAliveCountMax 3<br />
#UseDNS yes<br />
#PidFile /var/run/sshd.pid<br />
#MaxStartups 10<br />
<br />
# no default banner path<br />
#Banner /some/path<br />
<br />
# override default of no subsystems<br />
Subsystem sftp /usr/lib/ssh/sftp-server}}<br />
<br />
<br />
To allow access only for some users add this line:<br />
AllowUsers user1 user2<br />
<br />
You might want to change some lines so that they look as following:<br />
<pre><br />
Protocol 2<br />
.<br />
.<br />
.<br />
LoginGraceTime 120<br />
.<br />
.<br />
.<br />
PermitRootLogin no # (put yes here if you want root login)<br />
</pre><br />
<br />
You could also uncomment the BANNER option and edit {{Filename|/etc/issue}} for a nice welcome message.<br />
<br />
{{Tip| You may want to change the default port from 22 to any higher port (see [http://en.wikipedia.org/wiki/Security_through_obscurity security through obscurity]).}} <br />
<br />
Even though the port ssh is running on could be detected by using a port-scanner like nmap, changing it will reduce the number of log entries caused by automated authentication attempts.<br />
===Allowing others in===<br />
{{Box Note | You have to adjust this file to remotely connect to your machine since the file is empty by default}}<br />
<br />
To let other people ssh to your machine you need to adjust {{Filename|/etc/hosts.allow}}, add the following:<br />
<br />
<pre><br />
# let everyone connect to you<br />
sshd: ALL<br />
<br />
# OR you can restrict it to a certain ip<br />
sshd: 192.168.0.1<br />
<br />
# OR restrict for an IP range<br />
sshd: 10.0.0.0/255.255.255.0<br />
<br />
# OR restrict for an IP match<br />
sshd: 192.168.1.<br />
</pre><br />
<br />
Now you should check your {{Filename|/etc/hosts.deny}} for the following line and make sure it looks like this:<br />
ALL: ALL: DENY<br />
<br />
That's it. You can SSH out and others should be able to SSH in :).<br />
<br />
To start using the new configuration, restart the daemon (as root):<br />
# /etc/rc.d/sshd restart<br />
<br />
== Managing SSHD Daemon ==<br />
Just add sshd to the "DAEMONS" section of your {{Filename|/etc/[[rc.conf]]}}:<br />
DAEMONS=(... ... '''sshd''' ... ...)<br />
<br />
To start/restart/stop the daemon, use the following:<br />
# /etc/rc.d/sshd {start|stop|restart}<br />
<br />
==Connecting to the server==<br />
To connect to a server, run:<br />
$ ssh -p port user@server-address<br />
<br />
= Tips and Tricks =<br />
<br />
== Encrypted Socks Tunnel ==<br />
This is highly useful for laptop users connected to various unsafe wireless connections. The only thing you need is an SSH server running at a somewhat secure location, like your home or at work. It might be useful to use a dynamic DNS service like [http://www.dyndns.org/ DynDNS] so you don't have to remember your IP-address.<br />
<br />
=== Step 1: Start the Connection ===<br />
You only have to execute this single command in your favorite terminal to start the connection:<br />
$ ssh -ND 4711 user@host<br />
where {{Codeline|"user"}} is your username at the SSH server running at the {{Codeline|"host"}}. It will ask for your password, and then you're connected! The {{Codeline|"N"}} flag disables the interactive prompt, and the {{Codeline|"D"}} flag specifies the local port on which to listen on (you can choose any port number if you want).<br />
<br />
One way to make this easier is to put an alias line in your {{Filename|~/.bashrc}} file as following:<br />
alias sshtunnel="ssh -ND 4711 -v user@host"<br />
It's nice to add the verbose {{Codeline|"-v"}} flag, because then you can verify that it's actually connected from that output. Now you just have to execute the {{Codeline|"sshtunnel"}} command :)<br />
<br />
=== Step 2: Configure your Browser (or other programs) ===<br />
<br />
The above step is completely useless if you don't configure your web browser (or other programs) to use this newly created socks tunnel. <br />
<br />
* For Firefox: ''Edit &rarr; Preferences &rarr; Advanced &rarr; Network &rarr; Connection &rarr; Setting'':<br />
: Check the ''"Manual proxy configuration"'' radio button, and enter "localhost" in the ''"SOCKS host"'' text field, and then enter your port number in the next text field (I used 4711 above).<br />
<br />
: Make sure you select SOCKS4 as the protocol to use. This procedure will not work for SOCKS5.<br />
<br />
Enjoy your secure tunnel!<br />
<br />
== X11 Forwarding ==<br />
<br />
To run graphical programs through a SSH connection you can enable X11 forwarding. An option needs to be set in the configuration files on the server and client (here "client" means your (desktop) machine your X11 Server runs on, and you will run X applications on the "server").<br />
<br />
Install xorg-xauth on the server:<br />
# pacman -S xorg-xauth<br />
<br />
* Enable the '''AllowTcpForwarding''' option in {{Filename|sshd_config}} on the '''server'''.<br />
* Enable the '''X11Forwarding''' option in {{Filename|sshd_config}} on the '''server'''.<br />
* Set the '''X11DisplayOffset''' option in {{Filename|sshd_config}} on the '''server''' to 10.<br />
* Enable the '''X11UseLocalhost''' option in {{Filename|sshd_config}} on the '''server'''.<br />
<br />
<br />
* Enable the '''ForwardX11''' option in {{Filename|ssh_config}} on the '''client'''.<br />
<br />
To use the forwarding, log on to your server through ssh:<br />
# ssh -X -p port user@server-address<br />
If you receive errors trying to run graphical applications try trusted forwarding instead:<br />
# ssh -Y -p port user@server-address<br />
You can now start any X program on the remote server, the output will be forwarded to your local session:<br />
# xclock<br />
<br />
== Speed up SSH ==<br />
Changing the ciphers used by SSH to less cpu-demanding ones can improve speed. In this aspect, the best choices are arcfour and blowfish-cbc. To use them, run SSH with the {{Codeline|"c"}} flag, like this:<br />
# ssh -c arcfour,blowfish-cbc user@server-address<br />
To use them permanently, add this line under the proper host in {{Filename|/etc/ssh/ssh_config}}:<br />
Ciphers arcfour,blowfish-cbc<br />
Another option to improve speed is to enable compression with the {{Codeline|"C"}} flag. A permanent solution is to add this line under the proper host in {{Filename|/etc/ssh/ssh_config}}:<br />
Compression yes<br />
Login time can be shorten by using the {{Codeline|"4"}} flag, which bypasses IPv6 lookup. This can be made permanent by adding this line under the proper host in {{Filename|/etc/ssh/ssh_config}}:<br />
AddressFamily inet<br />
Another way of making these changes permanent is to create an alias in {{Filename|~/.bashrc}}:<br />
alias ssh='ssh -C4c arcfour,blowfish-cbc'<br />
Finally, you can make all sessions to the same host use a single connection, which will greatly speed up subsequent logins, by adding those line under the proper host in {{Filename|/etc/ssh/ssh_config}}:<br />
ControlMaster auto<br />
ControlPath ~/.ssh/socket-%r@%h:%p<br />
<br />
=== Trouble Shooting ===<br />
<br />
make sure your DISPLAY string is resolveable on the remote end:<br />
<br />
ssh -X user@server-address<br />
server$ echo $DISPLAY<br />
localhost:10.0<br />
server$ telnet localhost 6010<br />
localhost/6010: lookup failure: Temporary failure in name resolution <br />
<br />
can be fixed by adding localhost to {{Filename|/etc/hosts}}.<br />
<br />
== Mounting a Remote Filesystem with SSHFS ==<br />
<br />
Install sshfs<br />
# pacman -S sshfs<br />
<br />
Load the Fuse module<br />
# modprobe fuse<br />
Add fuse to the ''modules'' array in {{Filename|/etc/rc.conf}} to load it on each system boot.<br />
<br />
Mount the remote folder using sshfs<br />
# mkdir ~/remote_folder<br />
# sshfs USER@remote_server:/tmp ~/remote_folder<br />
<br />
The command above will cause the folder /tmp on the remote server to be mounted as ~/remote_folder on the local machine. Copying any file to this folder will result in transparent copying over the network using SFTP. Same concerns direct file editing, creating or removing.<br />
<br />
When we’re done working with the remote filesystem, we can unmount the remote folder by issuing:<br />
# fusermount -u ~/remote_folder<br />
<br />
If we work on this folder on a daily basis, it is wise to add it to the {{Filename|/etc/fstab}} table. This way is can be automatically mounted upon system boot or mounted manually (if {{Codeline|noauto}} option is chosen) without the need to specify the remote location each time. Here is a sample entry in the table:<br />
sshfs#USER@remote_server:/tmp /full/path/to/directory fuse defaults,auto,allow_other 0 0<br />
<br />
=== Keep Alive ===<br />
<br />
Your ssh session will automatically log out if it is idle. To keep the connection active (alive) add this to {{Filename|~/.ssh/config}} or to {{Filename|/etc/ssh/ssh_config}} on the client.<br />
<br />
ServerAliveInterval 5<br />
<br />
This will send a "keep alive" signal to the server every 5 seconds. You can usually increase this interval, and I use 120.<br />
<br />
= See Also =<br />
*[[Using SSH Keys]]<br />
<br />
= Links & References =<br />
*[http://www.soloport.com/iptables.html A Cure for the Common SSH Login Attack]<br />
*[http://www.la-samhna.de/library/brutessh.html Defending against brute force ssh attacks]</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Lenovo_ThinkPad_T400&diff=109318Lenovo ThinkPad T4002010-06-22T13:18:22Z<p>Nixpunk: Fixed typo</p>
<hr />
<div>[[Category:Lenovo (English)]]<br />
=System Specification=<br />
*CPU : Intel® Core™2 Duo Processor T9400 (6M Cache, 2.53 GHz, 1066 MHz FSB)<br />
*Memory : 3GB PC3-8500 DDR3<br />
*WiFi : Intel WiFi Link 5300<br />
*Hard-Drive : 160GB, 7200rpm<br />
*Optical Drive : DVD Recordable<br />
*Integrated Graphics : Intel 4500MHD<br />
*Discrete Graphics : AMD M82XT Hybrid 256 MB (ATI Mobility Radeon HD 3470)<br />
*Screen : 14.1" WXGA+ TFT with LED Backlight<br />
*Gigabit Ethernet, Modem<br />
*Express Card & PC Card Slots<br />
*Integrated Bluetooth PAN<br />
*No camera<br />
*No fingerprint reader<br />
*No Intel Turbo Memory<br />
<br />
=Network=<br />
==Ethernet Card==<br />
The kernel module to get the network card to work is '''e1000e'''. I had no problem getting it to work.<br />
<br />
==Wireless==<br />
Lenovo offers different options in paragraph wireless hardware:<br />
<br />
===Intel chipset===<br />
*Wifi link 5100 and 5300<br />
<br />
The drivers are included in the 2.6.27 kernel. However, it's important to make sure that you have the correct firmware. I installed the iwlwifi-5000-ucode. See [[Wireless#iwl3945.2C_iwl4965_and_iwl5000-series|this section]] for more details.<br />
<br />
===Realtek chipset===<br />
<br />
*Rtl8192SE<br />
11b/g/n Wireless Lan Mini-PCI Express Adapter II<br />
03:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device 8172 (rev 10)<br />
<br />
See http://www.thinkwiki.org/wiki/ThinkPad_11b/g/n_Wireless_LAN_Mini-PCI_Express_Adapter_II for more details.<br />
<br />
'''Realtek r8192se_pci Driver'''<br />
<br />
Finally came the expected driver (alpha? beta?), I think it's premature but it works perfectly.<br />
<br />
Here the driver (r8192se_pci):<br />
32 bits: http://launchpadlibrarian.net/33927923/rtl8192se_linux_2.6.0010.1012.2009.tar.gz<br />
64 bits: http://launchpadlibrarian.net/34090326/rtl8192se_linux_2.6.0010.1012.2009_64bit.tar.gz<br />
<br />
untar; make; make install; reboot and enjoy it<br />
<br />
I test it with:<br />
*netcfg<br />
*standar commands:<br />
ifconfig wlan0 up<br />
iwlist wlan0 scan<br />
iwconfig wlan0 essid MySsid<br />
wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf<br />
dhcpcd wlan0<br />
<br />
There is also a package available in the AUR: http://aur.archlinux.org/packages.php?ID=34281<br />
<br />
'''Ndiswrapper option:'''<br />
If you have a 32-bit version of arch, it should be possible to get it working with ndiswrapper: <br />
<br />
*Download this .exe file: http://www.station-drivers.com/telechargement/realtek/wifi/rtl-8191se_1080.7.0520%28www.station-drivers.com%29.exe<br />
*Install the '''extra/p7zip''' package and use the included utility '''7z''' to extract the contents of the .exe:<br />
<br />
7z x rtl-8191se_1080.7.0520(www.station-drivers.com).exe<br />
<br />
*Copy the files '''net8192se.inf''' and '''rtl8192se.sys''' from the '''91_92_SE_Driver/Win2K''' directory to a location of your choosing.<br />
*Proceed with the [[Wireless_Setup#ndiswrapper|normal ndiswrapper installation procedure]].<br />
<br />
Unfortunately, if you are running a 64-bit version of arch then it seems you are '''out of luck''' currently; the WinX64 drivers included in the above package do not work.<br />
<br />
For more information, see http://ubuntuforums.org/showthread.php?t=1182457 and http://forums.lenovo.com/lnv/board/message?board.id=Special_Interest_Linux&message.id=1196 .<br />
<br />
==Modem==<br />
There is a module "hsfmodem" provided by http://www.linuxant.com/.<br />
<br />
=Graphics/Xorg Configuration=<br />
Note that it's possible to switch the graphics adapter by only restarting X, but It's quite useless since you can't power up/down a graphic-card without rebooting. So it's either both graphic-card on at all times, or do the switching in the BIOS.<br />
<br />
So please press the ThinkVantag-button» during boot up and enable either the Integrated or the Discrete graphics cards in your BIOS's "Config->Display" menu.<br />
<br />
Note that I enabled the '''testing''' repository, which gave me access to :<br />
*xorg-server version 1.5.3<br />
*xf86-video-intel version 2.4.3<br />
*xf86-video-ati version 6.10.0<br />
*xf86-video-radeonhd 1.2.4<br />
*catalyst version 8.12<br />
<br />
==Integrated Graphics==<br />
After installing [[Xorg#Installing_Xorg|xorg]], I installed the [[Intel|xf86-video-intel drivers]]. As root, I then ran '''X -configure'''. The generated xorg.conf worked fine. I did apply the [[Intel#2D|2D]] and [[Intel#3D|3D]] optimization, and performances in compositing window managers (like compiz or kwin) seem to have increased. I have not made any scientific measurements though.<br />
<br />
'''Note : '''Some people have encountered problems with 3D on 2.6.28 kernels and xf86-video-intel version 2.4.3. <br />
<br />
The following xorg.conf file was tested on a T400 with an integrated card with the 1280x800 resolution provided by the default Intel Integrated Intel GMA 4500MHD (I included the Input devices for reference)<br />
<br />
Section "InputDevice"<br />
Identifier "Generic Keyboard"<br />
Driver "kbd"<br />
Option "XkbRules" "xorg"<br />
Option "XkbModel" "pc104"<br />
Option "XkbLayout" "us"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Configured Mouse"<br />
Driver "mouse"<br />
Option "SendCoreEvents"<br />
Option "Device" "/dev/input/mice"<br />
Option "Emulate3Buttons" "true"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Synaptics Touchpad"<br />
Driver "synaptics"<br />
Option "CorePointer"<br />
Option "Device" "/dev/psaux"<br />
Option "Protocol" "auto-dev"<br />
Option "Emulate3Buttons" "true"<br />
Option "HorizScrollDelta" "0"<br />
Option "Emulate3Buttons" "true"<br />
Option "LeftEdge" "1700"<br />
Option "RightEdge" "5300"<br />
Option "TopEdge" "1700"<br />
Option "BottomEdge" "4200"<br />
Option "FingerLow" "25"<br />
Option "FingerHigh" "30"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "220"<br />
Option "VertScrollDelta" "100"<br />
Option "MinSpeed" "0.06"<br />
Option "MaxSpeed" "0.10"<br />
Option "AccelFactor" "0.0010"<br />
#Option "SHMConfig" "1"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "0"<br />
Option "LockedDrags" "0"<br />
Option "TouchpadOff" "0"<br />
#Option "Repeater" "/dev/ps2mouse"<br />
EndSection<br />
<br />
Section "Monitor"<br />
Identifier "Configured Monitor"<br />
EndSection<br />
<br />
Section "Monitor"<br />
Identifier "HDMI-1"<br />
Option "Ignore" "True"<br />
EndSection<br />
<br />
Section "Monitor"<br />
Identifier "HDMI-2"<br />
Option "Ignore" "True"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Configured Video Device"<br />
Driver "intel"<br />
Option "monitor-HDMI-1" "HDMI-1"<br />
Option "monitor-HDMI-2" "HDMI-2"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "Default Screen"<br />
Monitor "Configured Monitor"<br />
Device "Configured Video Device"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Modes "1280x800"<br />
EndSubSection<br />
EndSection<br />
<br />
Section "ServerLayout"<br />
Identifier "Default Layout"<br />
Screen "Default Screen"<br />
InputDevice "Synaptics Touchpad"<br />
InputDevice "Configured Mouse"<br />
EndSection<br />
<br />
'''NB''' Installing extra/libdrm and forcing discrete graphics in the bios fixed hanging problems when X quit.<br />
<br />
Here is a minimal xorg.conf in which the Virtual screen size is specified, so that one enables support for dual monitor.<br />
<br />
Section "Monitor"<br />
Identifier "Configured Monitor"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "Default Screen"<br />
Monitor "Configured Monitor"<br />
Device "Configured Video Device"<br />
SubSection "Display"<br />
Virtual 2464 1500<br />
EndSubSection<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Configured Video Device"<br />
EndSection<br />
<br />
==Discrete Graphics==<br />
All 3 ATI drivers worked. That is both [[ATI#Open-Source_ATI_Drivers|open-source drivers]] (<code>xf86-video-ati</code> and <code>xf86-video-radeonhd</code>) and [[ATI#ATI_Catalyst_proprietary_driver|fglrx]] (the <code>catalyst</code> proprietary drivers).<br />
<br />
I could not get the <code>xf86-video-radeonhd</code> drivers to detect my external monitor, but <code>xf86-video-ati</code> worked fine. Remember to remove <code>catalyst</code> and <code>catalyst-utils</code> and reboot before using an [[ATI#Open-Source_ATI_Drivers|open source ATI drivers]]. ATI uses its own OpenGL library in its proprietary drivers, which is included in <code>catalyst-utils</code> and conflicts with libgl. As it did with the integrated graphics, running '''X -configure''' generated a working xorg.conf.<br />
<br />
To get the [[ATI#ATI_Catalyst_proprietary_driver|catalyst drivers]] working, you do have to [[ATI#Configuration|configure]] your xorg.conf properly. I used '''aticonfig --initial''' to generate a working xorg.conf. I did encounter a problem that I have not been able to solve yet : resizing a window in a compositing window manager takes 1-2 seconds. This makes the drivers pretty much unusable.<br />
<br />
==Switchable Graphics==<br />
Is currently not supported by the kernel. You can enable switchable-graphics in the BIOS and make Xorg do the switching, but then both cards will always use power and generate lots of heat. See the [http://en.gentoo-wiki.com/wiki/Lenovo_ThinkPad_T400#Getting_both_to_work| gentoo-wiki] to keep up too date on the issue.<br />
<br />
You can also try David Arlile's patch to power off the unused card. See http://airlied.livejournal.com/71434.html and http://linux-hybrid-graphics.blogspot.com/.<br />
<br />
==Hotplugging==<br />
If you want to enable [[Xorg_input_hotplugging|hotplugging]] you probably don't need a xorg.conf. But if you are using xf86-video-ati you might temporarely need to disable [[KMS]], by adding "nomodeset" to your kernel-line in "/boot/grub/menu.lst". If you don't want to disable KMS you can probably install some radeon firmware, see the [[Ati#Kernel_mode-setting_.28KMS.29|Ati-wiki]].<br />
<br />
Since all the mouse/keyboard configuration is taken care of by [[HAL]] you will need some config files in "/etc/hal/fdi/policy/"<br />
For instant "mouse-wheel.fdi" to enable TrackPoint-scrolling:<br />
<br />
<match key="info.product" string="TPPS/2 IBM TrackPoint"><br />
<merge key="input.x11_options.EmulateWheel" type="string">true</merge><br />
<merge key="input.x11_options.EmulateWheelButton" type="string">2</merge><br />
<merge key="input.x11_options.YAxisMapping" type="string">4 5</merge><br />
<merge key="input.x11_options.XAxisMapping" type="string">6 7</merge><br />
<merge key="input.x11_options.Emulate3Buttons" type="string">true</merge><br />
<merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge><br />
</match><br />
<br />
More information in the TrackPoint can be found here: http://www.thinkwiki.org/wiki/How_to_configure_the_TrackPoint.<br />
The Keyboard layout is controlled by "/etc/hal/fdi/policy/10-keymap.fdi" Modify it like [[Xorg_input_hotplugging#Modifying_hal_configuration|this]] to<br />
change your layout. If you have any more questions on hotplugging (like how to enable [[Touchpad_Synaptics#Configuration_via_HAL_policies_.28hotplugging_enabled.29|tapping]]), take a look at it's [[Xorg_input_hotplugging|wiki page]].<br />
<br />
== Synaptic, UltraNav ==<br />
If you want to be able to use horizontal and vertical scroll with your touchpad add this lines to your xorg.conf<br />
<br />
Section "Module"<br />
......<br />
Load "synaptics"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "AlwaysCore"<br />
Option "Device" "/dev/input/mouse1"<br />
Option "Protocol" "auto-dev"<br />
Option "SendCoreEvents" "true"<br />
Option "LeftEdge" "1632"<br />
Option "RightEdge" "5312"<br />
Option "TopEdge" "1575"<br />
Option "BottomEdge" "4281"<br />
Option "FingerLow" "25"<br />
Option "FingerHigh" "30"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "220"<br />
Option "VertScrollDelta" "100"<br />
Option "MinSpeed" "0.06"<br />
Option "MaxSpeed" "0.12"<br />
Option "AccelFactor" "0.0010"<br />
Option "VertEdgeScroll" "on"<br />
Option "HorizEdgeScroll" "on"<br />
# Option HorizScrollDelta""0" <br />
Option "SHMConfig" "on"<br />
EndSection <br />
<br />
for trakpoint with third button paste & scroll add this few lines to xorg.conf too<br />
<br />
Section "InputDevice"<br />
Identifier "Trackpoint"<br />
Driver "mouse"<br />
Option "CorePointer"<br />
Option "Device" "/dev/input/mice"<br />
Option "Protocol" "Auto"<br />
Option "Emulate3Buttons"<br />
Option "Emulate3Timeout" "50"<br />
Option "EmulateWheel" "on"<br />
Option "EmulateWheelTimeout" "200" # adjust third button paste timeout. <br />
Option "EmulateWheelButton" "2"<br />
Option "YAxisMapping" "4 5"<br />
Option "XAxisMapping" "6 7"<br />
Option "YAxisMapping" "4 5"<br />
EndSection<br />
<br />
finally update your layout<br />
<br />
Section "ServerLayout"<br />
InputDevice "Trackpoint" "CorePointer"<br />
InputDevice "Touchpad"<br />
InputDevice "Keyboard0" "CoreKeyboard"<br />
EndSection<br />
<br />
<br />
<br />
<br />
=Audio=<br />
Once you have [[ALSA]] installed, fire up alsamixer and make sure that sound is not muted. You might also want to press the Volume Up or Volume Down button. It seems than the Mute button mutes everything, even system beeps. Pressing the Volume Up or Volume Down button can unmute, but not pressing the Mute button again.<br />
<br />
Here's the modules I have loaded that are relevant to sound :<br />
$ lsmod | grep snd<br />
snd_seq_oss 35584 0<br />
snd_seq_midi_event 9344 1 snd_seq_oss<br />
snd_seq 58336 4 snd_seq_oss,snd_seq_midi_event<br />
snd_seq_device 9364 2 snd_seq_oss,snd_seq<br />
snd_hda_intel 474672 2<br />
snd_hwdep 10632 1 snd_hda_intel<br />
snd_pcm_oss 45568 0<br />
snd_pcm 82440 2 snd_hda_intel,snd_pcm_oss<br />
snd_timer 24720 2 snd_seq,snd_pcm<br />
snd_page_alloc 10640 2 snd_hda_intel,snd_pcm<br />
snd_mixer_oss 18944 1 snd_pcm_oss<br />
snd 64840 16 snd_seq_oss,snd_seq,snd_seq_device,snd_hda_intel,snd_hwdep,snd_pcm_oss,snd_pcm,snd_timer,snd_mixer_oss<br />
soundcore 9632 1 snd<br />
<br />
Additionally, there is a patch for the audio driver for conexant's chipsets provided by http://www.linuxant.com which can be downloaded at http://www.linuxant.com/alsa-driver/.<br />
<br />
<br />
=Multimedia Keys=<br />
The screen brightness controls and the flashlight work without any tweaking. The other keys can be mapped using [[Extra_Keyboard_Keys#Using_xev|xev]] and xbindkeys. By following [http://wiki.linuxquestions.org/wiki/Configuring_keyboards#Enabling_Keyboard_Multimedia_Keys this guide] you should be able to get everything working, but here's summary :<br />
<br />
*First, open a terminal and type <code>xev</code>. This starts the "Event tester".<br />
*Place your cursor on the "Event tester" window.<br />
*When you press a key on your keyboard or move your mouse, it should get displayed in a terminal. For instance, this is what shows up if you press Fn+F2 <br />
KeyRelease event, serial 33, synthetic NO, window 0x3000001,<br />
root 0x86, subw 0x0, time 5537544, (76,110), root:(81,938),<br />
state 0x0, '''keycode 146''' (keysym 0x0, '''NoSymbol'''), same_screen YES,<br />
XLookupString gives 0 bytes:<br />
XFilterEvent returns: False<br />
It basically says that '''keycode 146''' is not bound ('''NoSymbol''').<br />
Here are all the keycodes of all multimedia buttons:<br />
<br />
Volume Down : keycode 174<br />
Volume Up : keycode 176<br />
Fn+F2 : keycode 146<br />
Fn+F3 : keycode 241<br />
Fn+F4 : keycode 223<br />
Fn+F5 : Not responding to events ??<br />
Fn+F7 : keycode 214<br />
Fn+F8 : keycode 249<br />
Fn+F9 : keycode 207<br />
Fn+F12 : keycode 165<br />
Fn+Up : keycode 164<br />
Fn+Down : keycode 162<br />
Fn+Left : keycode 144<br />
Fn+Right : keycode 153<br />
Fn+Home : keycode 212<br />
Fn+End : keycode 101<br />
*Type <code>xmodmap -pke > ~/.Xmodmap</code> in a terminal. This creates a file, <code>.Xmodmap</code>, containing your current keyboard mapping.<br />
*Now open the file with a text editor and find the keycodes you're interested in. You can map any keycode with a symbol from [http://wiki.linuxquestions.org/wiki/XF86_keyboard_symbols this list].<br />
*To get your new <code>.Xmodmap</code> loaded when you start X, just add <code>xmodmap ~/.Xmodmap</code> to your .xinitrc.<br />
*To get your new <code>.Xmodmap</code> loaded immediately, type <code>xmodmap ~/.Xmodmap</code> in a terminal.<br />
<br />
You can now assign functions to your newly bound keys by using [[Extra_Keyboard_Keys_in_Xorg#Using_your_Desktop_Environment_tools|facilities provided by your window desktop environment]] or by using <code>xbindkeys</code>.<br />
<br />
To use <code>xbindkeys</code>,<br />
*Start by installing it<br />
pacman -S xbindkeys<br />
*Then add <code>xbindkeys &</code> to your .xinitrc.<br />
*And finally, in your home directory, create a file called <code>.xbindkeysrc.scm</code> with content that would look something like <br />
(xbindkey '("XF86Standby") "sudo killall dhcpcd && sudo pm-suspend")<br />
(xbindkey '("XF86AudioRaiseVolume") "amixer set Master 2dB+ unmute")<br />
(xbindkey '("XF86AudioLowerVolume") "amixer set Master 2dB- unmute")<br />
<br />
==Mute==<br />
<br />
To get the mute button to work, it is necessary to pass the string <code>acpi_osi="Linux"</code> to the kernel as a boot parameter. In GRUB2, add it to the "linux" line. See [http://www.thinkwiki.org/wiki/Mute_button here] for more details.<br />
<br />
With the 3.1 bios, it seems that the mute button works normally (set it up the same as the volume buttons with, for instance, "amixer set Master toggle").<br />
<br />
=ACPI=<br />
To enable the fan speed control, it's necessary to load the thinkpad_acpi with option fan_control=1. After the thinkpad_acpi module is loaded with this option, you can monitor and adjust the fan speed via /proc/acpi/ibm/fan.<br />
<br />
=SUSPEND-RESUME=<br />
People have been having issues with suspend resume with the current intel xf86-video-intel 2.4.3.1 drivers in combination with the 4500mhd chipset. This is apparently an issue with concurrency as adding the following script (with mod 755) in /etc/pm/sleep.d fixes things. to some extent...<br />
<br />
#!/bin/sh<br />
# Workaround for concurrency bug in xserver-xorg-video-intel 2:2.4.1-1ubuntu10.<br />
# Save this as /etc/pm/sleep.d/00CPU <br />
<br />
. "/usr/lib/pm-utils/functions"<br />
<br />
case "$1" in<br />
hibernate|suspend)<br />
for i in /sys/devices/system/cpu/cpu*/online ; do<br />
echo 0 >$i<br />
done<br />
;;<br />
thaw|resume) <br />
sleep 10 # run with one core for 10 secs<br />
for i in /sys/devices/system/cpu/cpu*/online ; do<br />
echo 1 >$i<br />
done<br />
;;<br />
*)<br />
;;<br />
esac<br />
<br />
<br />
From http://ubuntu-virginia.ubuntuforums.org/showpost.php?p=6105510&postcount=12 petri4 on the ubuntu forums.<br />
<br />
=7-1 Media Card Reader=<br />
Tested for SD cards only. Works after loading modules sdhci and ricoh_mmc in /etc/rc.conf. Sometimes there are problems initializing the SD card (check dmesg) after inserting it. In such cases, try re-inserting it again. <br />
<br />
TODO<br />
<br />
=Bluetooth=<br />
The procedure described in the [[Bluetooth]] section of the Arch Wiki worked perfectly for me.</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Xfce&diff=108693Xfce2010-06-13T17:38:08Z<p>Nixpunk: spelling/grammar edit</p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{i18n|Xfce}}<br />
<br />
== What is Xfce? ==<br />
Xfce is a Desktop Environment, like GNOME or KDE. It contains a suite of apps like a root window app, window manager, file manager, panel, etc. Xfce is written using the GTK2 toolkit, and contains its own development environment (libraries, daemons, etc), similar to other big DEs. Unlike GNOME or KDE, Xfce is lightweight and designed more around [http://www.opengroup.org/cde/ CDE] than Windows or Mac. It has a much slower development cycle, but is very stable and extremely fast. Xfce is great for older hardware.<br />
<br />
== Why use Xfce? ==<br />
Here is a (subjective) list of reasons to use Xfce:<br />
* It's fast; faster than the other major DEs.<br />
* It's stable. In the long time Xfce-4 has been out, only a relatively small handful of bugs has been discovered, despite it having a rather large following.<br />
* It's pretty. It uses GTK2 and is themable. You can make Xfce look very nice. The fonts are completely AA as well.<br />
* It works great with multiple monitors. Xfce's [[Wikipedia:Xinerama|Xinerama]] support is arguably the best out of any WM/DE.<br />
* It doesn't get in your way. You'll find Xfce helps your work flow, rather than always making itself "present."<br />
* It comes with a built-in compositor which allows for true transparency, among other cool things.<br />
<br />
== Why not use Xfce? ==<br />
Here is a (subjective) list of reasons not to use Xfce:<br />
* Doesn't contain all the features and integration of the major DEs.<br />
* Slower development cycle.<br />
* Because it's based on the CDE design, the layout may not be as familiar.<br />
<br />
== How to Install Xfce ==<br />
Xfce is somewhat modular. That means there is no need for you to run every part, you can pick and choose some of them. Because of this, Xfce has some separate Arch packages.<br />
<br />
=====Installing Xfce=====<br />
To install the base Xfce system, run:<br />
<br />
# pacman -S xfce4<br />
<br />
If you want extras, like panel plugins, run this:<br />
<br />
# pacman -S xfce4-goodies<br />
<br />
When asked by pacman if you wish to install the whole group, you can select 'no' to install only the packages you wish.<br />
{{Note |'''xfce4-xfapplet-plugin''' (a plugin that allows the use of GNOME applets in the Xfce4 panel) is part of the '''xfce4-goodies''' group and depends on '''gnome-panel''', which in turn depends on '''gnome-desktop'''. You may wish to take this into consideration before installing, since it represents a significant number of extra dependencies.}}<br />
<br />
<br />
In order to get the xfce4-mixer to work with alsa, you need to install gstreamer0.10-base-plugins. (See below for help with OSS.)<br />
<br />
# pacman -S gstreamer0.10-base-plugins<br />
<br />
Since the 4.6.0 release Xfce doesn't come with its own icon theme anymore. It now depends on tango-icon-theme. As an alternative you may want to install the gnome-icon-theme package.<br />
<br />
=====Installing and configuring the Daemons=====<br />
If you have '''xorg 1.7''' with input hotplugging you must get hal working before you start Xfce or end up with no input devices.<br />
'''Xorg 1.8''' doesn't use hal anymore but other programs still do, so use hal with xorg 1.8 aswell unless stated otherwise... "better safe then sorry" as they say.<br />
<br />
# /etc/rc.d/hal start<br />
<br />
Add '''hal''' to the '''DAEMONS''' array in rc.conf so you don't have to start is manually every time. Do not background it if you boot straight to X.<br />
'''hal''' relies upon, and will automatically start, '''dbus'''. If you are experiencing issues you may add dbus to the DAEMONS line in rc.conf as well. When adding dbus, ensure it directly precedes hal. Example:<br />
<br />
DAEMONS=(syslog-ng '''dbus''' '''hal''' @network @netfs @crond @cpufreq @alsa)<br />
<br />
Install gamin (the successor of fam). It is configured to automatically run in the background by default, do not add it to rc.conf.<br />
<br />
# pacman -S gamin<br />
<br />
== Running Xfce ==<br />
<br />
=====Automatically at boot time=====<br />
See [[Display Manager]] to install and configure a Display Manager.<br />
<br />
=====Manually=====<br />
If you have not created a ~/.xinitrc yet, do so with:<br />
<br />
$ cp /etc/skel/.xinitrc ~/.xinitrc<br />
<br />
and add the following line:<br />
<br />
exec ck-launch-session startxfce4<br />
<br />
Example:<br />
#!/bin/sh<br />
#<br />
# ~/.xinitrc<br />
#<br />
# Executed by startx (run your window manager from here)<br />
<br />
# exec gnome-session<br />
# exec startkde<br />
# exec startxfce4<br />
# ...or the Window Manager of your choice<br />
exec ck-launch-session startxfce4<br />
<br />
{{{Note |<code>ck-launch-session</code> starts a clean consolekit session needed by Xfce for power management, automounting, shutting down/rebooting etc. Consolekit/policykit capable display managers such as gdm do this for you automatically.}}}<br />
<br />
=====Shutting down and rebooting from withing Xfce=====<br />
* Make sure that '''dbus''' and '''hal''' are enabled in the DAEMONS array in /etc/rc.conf.<br />
* Make sure that you are using <code>exec ck-launch-session startxfce4</code> in ~/.xinitrc or a consolekit/policykit capable display manager (e.g. gdm)<br />
<br />
Then add your normal user to the ''shutdown'' group:<br />
<br />
# gpasswd -a USER power<br />
<br />
{{{Note |This group is only used by HAL, so you still need root privileges for shutting down the system via command line (halt/poweroff/shutdown).}}}<br />
<br />
see http://bbs.archlinux.org/viewtopic.php?id=59954 for more details.<br />
<br />
== Tips ==<br />
=== Commands for the settings manager ===<br />
<br />
There is no official documentation for the commands executed. One must look at .desktop files ''/usr/share/applications/'' folder. For the people who like to know exactly what is happening, here is a handy list to save the effort:<br />
<br />
xfce-setting-show backdrop<br />
xfce-setting-show display<br />
xfce-setting-show keyboard<br />
xfce4-menueditor<br />
xfce-setting-show sound<br />
xfce-setting-show mouse<br />
xfce-setting-show session<br />
xfce-setting-show<br />
xfce-setting-show splash<br />
xfce-setting-show ui<br />
xfce-setting-show xfwm4<br />
xfce-setting-show wmtweaks<br />
xfce-setting-show workspaces<br />
xfce-setting-show printing_system<br />
xfce4-appfinder<br />
xfce4-autostart-editor<br />
xfce4-panel -c<br />
<br />
To review all the available setting manager commands run the following in a terminal:<br />
<br />
$ grep xfce-setting-show /usr/share/applications/xfce*settings*<br />
<br />
=== A drop down console like in quake ===<br />
<br />
# pacman -S tilda<br />
<br />
will install tilda, a drop down console, similar to yakuake. A more lightweight alternative would be '''stjerm''' which can be found in the AUR.<br />
<br />
To configure tilda, type<br />
<br />
# tilda -C<br />
<br />
which opens a configuration window in X.<br />
<br />
====Guake====<br />
Another functional alternative is guake, which is available in the community repo:<br />
<br />
# pacman -S guake<br />
<br />
=== How to enable the compositor in Xfce 4.6 ===<br />
Xfce 4.6 comes with a builtin compositor adding the option for fancy window effects, shadows and transparency and so on. It can be enabled in the advanced desktop settings menu and works on the fly. No additional settings are needed in your /etc/xorg.conf.<br />
<br />
=== Why doesn't my desktop refresh? ===<br />
Xfce 4.6 uses [[FAM]] (File Alteration Monitor) or [[gamin]] (FAM's successor) to get notification when a file or directory changes.<br />
If you decide to use FAM, don't forget to add 'fam' to the list of DAEMONS in /etc/rc.conf.<br />
This step is not necessary for gamin.<br />
<br />
NOTE: After recent updates, FAM has caused issues opening some mounts, such as sshfs, that gamin does not have an issue with.<br />
<br />
=== Use a transparent background for desktop icon titles ===<br />
To change the default white background of desktop icon titles to something more suitable, edit the .gtkrc-2.0 file in your home directory (or create the file if needed) and add the following:<br />
style "xfdesktop-icon-view" {<br />
XfdesktopIconView::label-alpha = 10<br />
base[NORMAL] = "#000000"<br />
base[SELECTED] = "#71B9FF"<br />
base[ACTIVE] = "#71FFAD"<br />
fg[NORMAL] = "#ffffff"<br />
fg[SELECTED] = "#71B9FF"<br />
fg[ACTIVE] = "#71FFAD" }<br />
widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"<br />
<br />
=== How to customize xfce panel background ===<br />
The same, edit ~/.gtkrc-2.0. ( foo.bar is path to your image )<br />
Note that you must place the image in the same directory as the configuration, which is ~/. You can not specify the path to the image, or it won't work.<br />
style "panel-background" {<br />
bg_pixmap[NORMAL] = "foo.bar"<br />
bg_pixmap[PRELIGHT] = "foo.bar"<br />
bg_pixmap[ACTIVE] = "foo.bar"<br />
bg_pixmap[SELECTED] = "foo.bar"<br />
bg_pixmap[INSENSITIVE] = "foo.bar"<br />
}<br />
widget_class "*Panel*" style "panel-background"<br />
<br />
=== How to customize starting xfce ===<br />
<br />
This includes getting necessary environment variables into the GUI runtime.<br />
<br />
* Copy the file /etc/xdg/xfce4/xinitrc to ~/.config/xfce4/<br />
* Edit this file. For example, you can add something like this somehwere in the middle:<br />
* source $HOME/.bashrc<br />
* # start rxvt-unicode server<br />
* urxvtd -q -o -f<br />
<br />
=== How to add themes to XFCE === <br />
<br />
1. Go to [http://xfce-look.org xfce-look.org] and click "Themes" in the left navbar. Look around for a theme you want and click "Download".<br />
<br />
2. Go to the directory where you downloaded the tarball/file and extract it using Squeeze/Xarchiver/CLI.<br />
<br />
3. Move the extracted folder to /usr/share/themes (for all users) or ~/.themes (for just you). Inside /usr/share/themes/abc, there is a folder that you create called xfwm4 that will contain whatever files that is included with that theme.<br />
<br />
4. GTK theme is available here:<br />
Menu --> Settings --> Appearance<br />
You select your xfwm theme in:<br />
Menu --> Settings --> Window Manager<br />
<br />
=== Fonts ===<br />
<br />
If you find the standard fonts rather thick and or slightly out of focus open Settings>Appearence click on the Fonts tab and under Hinting: change to Full<br />
<br />
You could also try using a custom DPI setting<br />
<br />
=== Replacements for the default 'menu' panel applet ===<br />
The "Ubuntu System Panel" (Gnome) panel applet has similar features to those found in its KDE v4.2 equivalent. It can be added to an Xfce panel via the 'XfApplet' panel applet, which allows Gnome applets to be used in Xfce.<br />
<br />
It is available in [http://aur.archlinux.org/packages.php?ID=10259 the AUR]<br />
<br />
=== How to remove menu entries from the System menu === <br />
With the built-in menu editor, you cannot remove menu entries from the System menu. Here’s how to hide them:<br />
# Go to the /usr/share/applications folder. Type in the terminal (Xfce menu > System > Terminal): <pre>$ cd /usr/share/applications</pre><br />
# This folder should be full of .desktop files. To see how many there are, type: <pre>$ ls</pre>Say the one you want to edit is Firefox. Type in the terminal:<pre>$ sudo mousepad firefox.desktop</pre><br />
# In the bottom of the file, paste the following: <pre>NoDisplay=true</pre><br />
# Save and exit. Now Firefox won’t show up in the System menu. You can do this with any program.<br />
<br />
=== But what do you do with menu entries which do not show up in /usr/share/applications (e.g., apps installed via wine)? === <br />
I've found some shortcuts that show in the category “Other” in this directory:<br />
~/.local/share/applications/wine/.<br />
<br />
=== How do I get xfce4-mixer and OSS4 to work together? ===<br />
<br />
Xfce 4.6 uses gstreamer as the backend to control volume, so first you have to make gstreamer cooperate with xfce4-mixer.<br />
<br />
pacman -S xfce4-mixer gstreamer0.10-base-plugins<br />
<br />
(Optional) Second, try to install gstreamer0.10-good-plugins, gstreamer0.10-bad-plugins<br />
<br />
pacman -S gstreamer0.10-good-plugins gstreamer0.10-bad-plugins<br />
<br />
login and logout, or just remove the mixer plugin and add it again. If it doesn't work at all, then you have to compile gstreamer0.10-good-plugins yourself. and can <br />
<br />
Download the PKGBUILD and other files needed from ABS or [http://repos.archlinux.org/viewvc.cgi/gstreamer0.10-good-plugins/repos/extra-i686/ here], edit the PKGBUILD, add --enable-oss. <br />
<br />
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var '''--enable-oss'''\<br />
--disable-static --enable-experimental \<br />
--enable-ladspa \<br />
--with-package-name="GStreamer Good Plugins (Arch Linux)" \<br />
--with-package-origin="http://www.archlinux.org/" || return 1<br />
<br />
and then run makepkg -i. <br />
<br />
makepkg -i<br />
<br />
Still not working? Try tis package in AUR [http://aur.archlinux.org/packages.php?ID=17024 gstreamer0.10-good-plugins-ossv4], modify the pkgver to the newest in the PKGBUILD, and it should work.<br />
<br />
Other LINKS: [http://www.4front-tech.com/forum/ OSS forum]<br />
<br />
=== How to take screenshots (print-screen key) ===<br />
<br />
A simple way is to use a command-line screenshot utility:<br />
<br />
# pacman -S scrot<br />
<br />
Then<br />
<br />
Xfce-menu --> Settings --> Keyboard >>> Application Shortcuts.<br />
<br />
Add the "scrot" command to use the "PrintScreen" key.<br />
<br />
All screenshots will be placed in your home folder with unique names like<br />
<br />
"2009-02-19-063052_1280x1024_scrot.png".<br />
<br />
<br />
====Screenshooter====<br />
<br />
There is also an a screenshot plugin for the Xfce panel that is available in extra:<br />
<br />
# pacman -S xfce4-screenshooter<br />
<br />
=== Change volume with keyboard volume buttons ===<br />
<br />
Go to Settings > Keyboard. Click the "Application Shortcuts" tab and add click the "Add" button. Add the following:<br />
<br />
==== ALSA ====<br />
<br />
amixer set Master 5+<br />
for the volume up button<br />
amixer set Master 5-<br />
for the volume down button<br />
amixer set Master toggle<br />
for the mute/unmute button.<br />
<br />
==== OSS ====<br />
Use one of these scripts:<br />
[http://www.opensound.com/wiki/index.php/Tips_And_Tricks#Using_multimedia_keys_with_OSS<br />
]<br />
<br />
If using ossvol (recommended), add:<br />
ossvol -i 1<br />
for the volume up button<br />
ossvol -d 1<br />
for the volume down button<br />
ossvol -t<br />
for the mute/unmute button<br />
<br />
=== Change mount options ===<br />
<br />
A common problem when automounting usb sticks formatted with fat filesystem is the inability to properly show characters as umlauts, ñ, ß, etc. This may be solved changing the default iocharset to utf8, which is easily done adding a line to '''/etc/xdg/xfce4/mount.rc''':<br />
<br />
[vfat]<br />
uid=<auto><br />
shortname=winnt<br />
'''utf8=true'''<br />
# FreeBSD specific option<br />
longnames=true<br />
<br />
Note that when using utf-8, the system will distinct between upper- and lowercases, potentially corrupting your files. Be careful.<br />
<br />
It is also recommendable to mount vfat devices with the '''flush''' option, so that when copying to usb sticks data flushes more often, thus making thunar's progress bar to stays up until things are on the disk.<br />
<br />
[vfat]<br />
flush=true<br />
<br />
== Troubleshooting ==<br />
=== Keyboard shortcuts aren't working ===<br />
This is usually the case when the settings helper is not working. To start it execute:<br />
xfce4-settings-helper<br />
Now it should be working fine.<br />
<br />
== Related Articles ==<br />
* [[Build order for XFCE]]<br />
* [[Improve GTK Application Looks]]<br />
* [[Startup_files#XFCE|HOWTO: Autostart programs on XFCE]]<br />
<br />
== External Resources ==<br />
* [http://www.us.xfce.org/documentation/ Xfce.org] - The complete documentation.<br />
* [http://www.xfce-look.org/ Xfce-Look] - Themes, wallpapers, and more.<br />
* [http://xfce.wikia.com/wiki/Frequently_Asked_Questions Xfce Wikia] - How to edit the auto generated menu with the menu editor<br />
* [http://wiki.xfce.org Xfce Wiki]<br />
* [https://xubuntu.wordpress.com/2006/08/04/howto-remove-menu-entries-from-the-system-menu/ Howto: Remove menu entries from the System menu]<br />
* [http://www.linuxquestions.org/questions/linux-general-1/how-to-use-xfce-themes-658354/ XFCE themes at linuxquestions.org]</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Xfce&diff=108692Xfce2010-06-13T17:36:35Z<p>Nixpunk: /* How to take screenshots (print-screen key) */</p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{i18n|Xfce}}<br />
<br />
== What is Xfce? ==<br />
Xfce is a Desktop Environment, like GNOME or KDE. It contains a suite of apps like a root window app, window manager, file manager, panel, etc. Xfce is written using the GTK2 toolkit, and contains its own development environment (libraries, daemons, etc), similar to other big DEs. Unlike GNOME or KDE, Xfce is lightweight and designed more around [http://www.opengroup.org/cde/ CDE] than Windows or Mac. It has a much slower development cycle, but is very stable and extremely fast. Xfce is great for older hardware.<br />
<br />
== Why use Xfce? ==<br />
Here is a (subjective) list of reasons to use Xfce:<br />
* It's fast; faster than the other major DEs.<br />
* It's stable. In the long time Xfce-4 has been out, only a relatively small handful of bugs has been discovered, despite it having a rather large following.<br />
* It's pretty. It uses GTK2 and is themable. You can make Xfce look very nice. The fonts are completely AA as well.<br />
* It works great with multiple monitors. Xfce's [[Wikipedia:Xinerama|Xinerama]] support is arguably the best out of any WM/DE.<br />
* It doesn't get in your way. You'll find Xfce helps your work flow, rather than always making itself "present."<br />
* It comes with a built-in compositor which allows for true transparency, among other cool things.<br />
<br />
== Why not use Xfce? ==<br />
Here is a (subjective) list of reasons not to use Xfce:<br />
* Doesn't contain all the features and integration of the major DEs.<br />
* Slower development cycle.<br />
* Because it's based on the CDE design, the layout may not be as familiar.<br />
<br />
== How to Install Xfce ==<br />
Xfce is somewhat modular. That means there is no need for you to run every part, you can pick and choose some of them. Because of this, Xfce has some separate Arch packages.<br />
<br />
=====Installing Xfce=====<br />
To install the base Xfce system, run:<br />
<br />
# pacman -S xfce4<br />
<br />
If you want extras, like panel plugins, run this:<br />
<br />
# pacman -S xfce4-goodies<br />
<br />
When asked by pacman if you wish to install the whole group, you can select 'no' to install only the packages you wish.<br />
{{Note |'''xfce4-xfapplet-plugin''' (a plugin that allows the use of GNOME applets in the Xfce4 panel) is part of the '''xfce4-goodies''' group and depends on '''gnome-panel''', which in turn depends on '''gnome-desktop'''. You may wish to take this into consideration before installing, since it represents a significant number of extra dependencies.}}<br />
<br />
<br />
In order to get the xfce4-mixer to work with alsa, you need to install gstreamer0.10-base-plugins. (See below for help with OSS.)<br />
<br />
# pacman -S gstreamer0.10-base-plugins<br />
<br />
Since the 4.6.0 release Xfce doesn't come with its own icon theme anymore. It now depends on tango-icon-theme. As an alternative you may want to install the gnome-icon-theme package.<br />
<br />
=====Installing and configuring the Daemons=====<br />
If you have '''xorg 1.7''' with input hotplugging you must get hal working before you start Xfce or end up with no input devices.<br />
'''Xorg 1.8''' doesn't use hal anymore but other programs still do, so use hal with xorg 1.8 aswell unless stated otherwise... "better safe then sorry" as they say.<br />
<br />
# /etc/rc.d/hal start<br />
<br />
Add '''hal''' to the '''DAEMONS''' array in rc.conf so you don't have to start is manually every time. Do not background it if you boot straight to X.<br />
'''hal''' relies upon, and will automatically start, '''dbus'''. If you are experiencing issues you may add dbus to the DAEMONS line in rc.conf as well. When adding dbus, ensure it directly precedes hal. Example:<br />
<br />
DAEMONS=(syslog-ng '''dbus''' '''hal''' @network @netfs @crond @cpufreq @alsa)<br />
<br />
Install gamin (the successor of fam). It is configured to automatically run in the background by default, do not add it to rc.conf.<br />
<br />
# pacman -S gamin<br />
<br />
== Running Xfce ==<br />
<br />
=====Automatically at boot time=====<br />
See [[Display Manager]] to install and configure a Display Manager.<br />
<br />
=====Manually=====<br />
If you have not created a ~/.xinitrc yet, do so with:<br />
<br />
$ cp /etc/skel/.xinitrc ~/.xinitrc<br />
<br />
and add the following line:<br />
<br />
exec ck-launch-session startxfce4<br />
<br />
Example:<br />
#!/bin/sh<br />
#<br />
# ~/.xinitrc<br />
#<br />
# Executed by startx (run your window manager from here)<br />
<br />
# exec gnome-session<br />
# exec startkde<br />
# exec startxfce4<br />
# ...or the Window Manager of your choice<br />
exec ck-launch-session startxfce4<br />
<br />
{{{Note |<code>ck-launch-session</code> starts a clean consolekit session needed by Xfce for power management, automounting, shutting down/rebooting etc. Consolekit/policykit capable display managers such as gdm do this for you automatically.}}}<br />
<br />
=====Shutting down and rebooting from withing Xfce=====<br />
* Make sure that '''dbus''' and '''hal''' are enabled in the DAEMONS array in /etc/rc.conf.<br />
* Make sure that you are using <code>exec ck-launch-session startxfce4</code> in ~/.xinitrc or a consolekit/policykit capable display manager (e.g. gdm)<br />
<br />
Then add your normal user to the ''shutdown'' group:<br />
<br />
# gpasswd -a USER power<br />
<br />
{{{Note |This group is only used by HAL, so you still need root privileges for shutting down the system via command line (halt/poweroff/shutdown).}}}<br />
<br />
see http://bbs.archlinux.org/viewtopic.php?id=59954 for more details.<br />
<br />
== Tips ==<br />
=== Commands for the settings manager ===<br />
<br />
There is no official documentation for the commands executed. One must look at .desktop files ''/usr/share/applications/'' folder. For the people who like to know exactly what is happening, here is a handy list to save the effort:<br />
<br />
xfce-setting-show backdrop<br />
xfce-setting-show display<br />
xfce-setting-show keyboard<br />
xfce4-menueditor<br />
xfce-setting-show sound<br />
xfce-setting-show mouse<br />
xfce-setting-show session<br />
xfce-setting-show<br />
xfce-setting-show splash<br />
xfce-setting-show ui<br />
xfce-setting-show xfwm4<br />
xfce-setting-show wmtweaks<br />
xfce-setting-show workspaces<br />
xfce-setting-show printing_system<br />
xfce4-appfinder<br />
xfce4-autostart-editor<br />
xfce4-panel -c<br />
<br />
To review all the available setting manager commands run the following in a terminal:<br />
<br />
$ grep xfce-setting-show /usr/share/applications/xfce*settings*<br />
<br />
=== A drop down console like in quake ===<br />
<br />
# pacman -S tilda<br />
<br />
will install tilda, a drop down console, similar to yakuake. A more lightweight alternative would be '''stjerm''' which can be found in the AUR.<br />
<br />
To configure tilda, type<br />
<br />
# tilda -C<br />
<br />
which opens a configuration window in X.<br />
<br />
====Guake====<br />
Another functional alternative is guake, which is available in the community repo:<br />
<br />
# pacman -S guake<br />
<br />
=== How to enable the compositor in Xfce 4.6 ===<br />
Xfce 4.6 comes with a builtin compositor adding the option for fancy window effects, shadows and transparency and so on. It can be enabled in the advanced desktop settings menu and works on the fly. No additional settings are needed in your /etc/xorg.conf.<br />
<br />
=== Why doesn't my desktop refresh? ===<br />
Xfce 4.6 uses [[FAM]] (File Alteration Monitor) or [[gamin]] (FAM's successor) to get notification when a file or directory changes.<br />
If you decide to use FAM, don't forget to add 'fam' to the list of DAEMONS in /etc/rc.conf.<br />
This step is not necessary for gamin.<br />
<br />
NOTE: After recent updates, FAM has caused issues opening some mounts, such as sshfs, that gamin does not have an issue with.<br />
<br />
=== Use a transparent background for desktop icon titles ===<br />
To change the default white background of desktop icon titles to something more suitable, edit the .gtkrc-2.0 file in your home directory (or create the file if needed) and add the following:<br />
style "xfdesktop-icon-view" {<br />
XfdesktopIconView::label-alpha = 10<br />
base[NORMAL] = "#000000"<br />
base[SELECTED] = "#71B9FF"<br />
base[ACTIVE] = "#71FFAD"<br />
fg[NORMAL] = "#ffffff"<br />
fg[SELECTED] = "#71B9FF"<br />
fg[ACTIVE] = "#71FFAD" }<br />
widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"<br />
<br />
=== How to customize xfce panel background ===<br />
The same, edit ~/.gtkrc-2.0. ( foo.bar is path to your image )<br />
Note that you must place the image in the same directory as the configuration, which is ~/. You can not specify the path to the image, or it won't work.<br />
style "panel-background" {<br />
bg_pixmap[NORMAL] = "foo.bar"<br />
bg_pixmap[PRELIGHT] = "foo.bar"<br />
bg_pixmap[ACTIVE] = "foo.bar"<br />
bg_pixmap[SELECTED] = "foo.bar"<br />
bg_pixmap[INSENSITIVE] = "foo.bar"<br />
}<br />
widget_class "*Panel*" style "panel-background"<br />
<br />
=== How to customize starting xfce ===<br />
<br />
This includes getting necessary environment variables into the GUI runtime.<br />
<br />
* Copy the file /etc/xdg/xfce4/xinitrc to ~/.config/xfce4/<br />
* Edit this file. For example, you can add something like this somehwere in the middle:<br />
* source $HOME/.bashrc<br />
* # start rxvt-unicode server<br />
* urxvtd -q -o -f<br />
<br />
=== How to add themes to XFCE === <br />
<br />
1. Go to [http://xfce-look.org xfce-look.org] and click "Themes" in the left navbar. Look around for a theme you want and click "Download".<br />
<br />
2. Go to the directory where you downloaded the tarball/file and extract it using Squeeze/Xarchiver/CLI.<br />
<br />
3. Move the extracted folder to /usr/share/themes (for all users) or ~/.themes (for just you). Inside /usr/share/themes/abc, there is a folder that you create called xfwm4 that will contain whatever files that is included with that theme.<br />
<br />
4. GTK theme is available here:<br />
Menu --> Settings --> Appearance<br />
You select your xfwm theme in:<br />
Menu --> Settings --> Window Manager<br />
<br />
=== Fonts ===<br />
<br />
If you find the standard fonts rather thick and or slightly out of focus open Settings>Appearence click on the Fonts tab and under Hinting: change to Full<br />
<br />
You could also try using a custom DPI setting<br />
<br />
=== Replacements for the default 'menu' panel applet ===<br />
The "Ubuntu System Panel" (Gnome) panel applet has similar features to those found in its KDE v4.2 equivalent. It can be added to an Xfce panel via the 'XfApplet' panel applet, which allows Gnome applets to be used in Xfce.<br />
<br />
It is available in [http://aur.archlinux.org/packages.php?ID=10259 the AUR]<br />
<br />
=== How to remove menu entries from the System menu === <br />
With the built-in menu editor, you cannot remove menu entries from the System menu. Here’s how to hide them:<br />
# Go to the /usr/share/applications folder. Type in the terminal (Xfce menu > System > Terminal): <pre>$ cd /usr/share/applications</pre><br />
# This folder should be full of .desktop files. To see how many there are, type: <pre>$ ls</pre>Say the one you want to edit is Firefox. Type in the terminal:<pre>$ sudo mousepad firefox.desktop</pre><br />
# In the bottom of the file, paste the following: <pre>NoDisplay=true</pre><br />
# Save and exit. Now Firefox won’t show up in the System menu. You can do this with any program.<br />
<br />
=== But what do you do with menu entries which do not show up in /usr/share/applications (e.g., apps installed via wine)? === <br />
I've found some shortcuts that show in the category “Other” in this directory:<br />
~/.local/share/applications/wine/.<br />
<br />
=== How do I get xfce4-mixer and OSS4 to work together? ===<br />
<br />
Xfce 4.6 uses gstreamer as the backend to control volume, so first you have to make gstreamer cooperate with xfce4-mixer.<br />
<br />
pacman -S xfce4-mixer gstreamer0.10-base-plugins<br />
<br />
(Optional) Second, try to install gstreamer0.10-good-plugins, gstreamer0.10-bad-plugins<br />
<br />
pacman -S gstreamer0.10-good-plugins gstreamer0.10-bad-plugins<br />
<br />
login and logout, or just remove the mixer plugin and add it again. If it doesn't work at all, then you have to compile gstreamer0.10-good-plugins yourself. and can <br />
<br />
Download the PKGBUILD and other files needed from ABS or [http://repos.archlinux.org/viewvc.cgi/gstreamer0.10-good-plugins/repos/extra-i686/ here], edit the PKGBUILD, add --enable-oss. <br />
<br />
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var '''--enable-oss'''\<br />
--disable-static --enable-experimental \<br />
--enable-ladspa \<br />
--with-package-name="GStreamer Good Plugins (Arch Linux)" \<br />
--with-package-origin="http://www.archlinux.org/" || return 1<br />
<br />
and then run makepkg -i. <br />
<br />
makepkg -i<br />
<br />
Still not working? Try tis package in AUR [http://aur.archlinux.org/packages.php?ID=17024 gstreamer0.10-good-plugins-ossv4], modify the pkgver to the newest in the PKGBUILD, and it should work.<br />
<br />
Other LINKS: [http://www.4front-tech.com/forum/ OSS forum]<br />
<br />
=== How to take screenshots (print-screen key) ===<br />
<br />
A simple way is to use a command-line screenshot utility:<br />
<br />
# pacman -S scrot<br />
<br />
Then<br />
<br />
Xfce-menu --> Settings --> Keyboard >>> Application Shortcuts.<br />
<br />
Add the "scrot" command to use the "PrintScreen" key.<br />
<br />
All screenshots will be placed in your home folder with unique name like<br />
<br />
this "2009-02-19-063052_1280x1024_scrot.png"!<br />
<br />
<br />
====Screenshooter====<br />
<br />
There is also an a plugin for the panel able to do this with available in extra:<br />
<br />
# pacman -S xfce4-screenshooter<br />
<br />
=== Change volume with keyboard volume buttons ===<br />
<br />
Go to Settings > Keyboard. Click the "Application Shortcuts" tab and add click the "Add" button. Add the following:<br />
<br />
==== ALSA ====<br />
<br />
amixer set Master 5+<br />
for the volume up button<br />
amixer set Master 5-<br />
for the volume down button<br />
amixer set Master toggle<br />
for the mute/unmute button.<br />
<br />
==== OSS ====<br />
Use one of these scripts:<br />
[http://www.opensound.com/wiki/index.php/Tips_And_Tricks#Using_multimedia_keys_with_OSS<br />
]<br />
<br />
If using ossvol (recommended), add:<br />
ossvol -i 1<br />
for the volume up button<br />
ossvol -d 1<br />
for the volume down button<br />
ossvol -t<br />
for the mute/unmute button<br />
<br />
=== Change mount options ===<br />
<br />
A common problem when automounting usb sticks formatted with fat filesystem is the inability to properly show characters as umlauts, ñ, ß, etc. This may be solved changing the default iocharset to utf8, which is easily done adding a line to '''/etc/xdg/xfce4/mount.rc''':<br />
<br />
[vfat]<br />
uid=<auto><br />
shortname=winnt<br />
'''utf8=true'''<br />
# FreeBSD specific option<br />
longnames=true<br />
<br />
Note that when using utf-8, the system will distinct between upper- and lowercases, potentially corrupting your files. Be careful.<br />
<br />
It is also recommendable to mount vfat devices with the '''flush''' option, so that when copying to usb sticks data flushes more often, thus making thunar's progress bar to stays up until things are on the disk.<br />
<br />
[vfat]<br />
flush=true<br />
<br />
== Troubleshooting ==<br />
=== Keyboard shortcuts aren't working ===<br />
This is usually the case when the settings helper is not working. To start it execute:<br />
xfce4-settings-helper<br />
Now it should be working fine.<br />
<br />
== Related Articles ==<br />
* [[Build order for XFCE]]<br />
* [[Improve GTK Application Looks]]<br />
* [[Startup_files#XFCE|HOWTO: Autostart programs on XFCE]]<br />
<br />
== External Resources ==<br />
* [http://www.us.xfce.org/documentation/ Xfce.org] - The complete documentation.<br />
* [http://www.xfce-look.org/ Xfce-Look] - Themes, wallpapers, and more.<br />
* [http://xfce.wikia.com/wiki/Frequently_Asked_Questions Xfce Wikia] - How to edit the auto generated menu with the menu editor<br />
* [http://wiki.xfce.org Xfce Wiki]<br />
* [https://xubuntu.wordpress.com/2006/08/04/howto-remove-menu-entries-from-the-system-menu/ Howto: Remove menu entries from the System menu]<br />
* [http://www.linuxquestions.org/questions/linux-general-1/how-to-use-xfce-themes-658354/ XFCE themes at linuxquestions.org]</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Xfce&diff=108691Xfce2010-06-13T17:36:11Z<p>Nixpunk: spelling/grammar edit</p>
<hr />
<div>[[Category:Desktop environments (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{i18n|Xfce}}<br />
<br />
== What is Xfce? ==<br />
Xfce is a Desktop Environment, like GNOME or KDE. It contains a suite of apps like a root window app, window manager, file manager, panel, etc. Xfce is written using the GTK2 toolkit, and contains its own development environment (libraries, daemons, etc), similar to other big DEs. Unlike GNOME or KDE, Xfce is lightweight and designed more around [http://www.opengroup.org/cde/ CDE] than Windows or Mac. It has a much slower development cycle, but is very stable and extremely fast. Xfce is great for older hardware.<br />
<br />
== Why use Xfce? ==<br />
Here is a (subjective) list of reasons to use Xfce:<br />
* It's fast; faster than the other major DEs.<br />
* It's stable. In the long time Xfce-4 has been out, only a relatively small handful of bugs has been discovered, despite it having a rather large following.<br />
* It's pretty. It uses GTK2 and is themable. You can make Xfce look very nice. The fonts are completely AA as well.<br />
* It works great with multiple monitors. Xfce's [[Wikipedia:Xinerama|Xinerama]] support is arguably the best out of any WM/DE.<br />
* It doesn't get in your way. You'll find Xfce helps your work flow, rather than always making itself "present."<br />
* It comes with a built-in compositor which allows for true transparency, among other cool things.<br />
<br />
== Why not use Xfce? ==<br />
Here is a (subjective) list of reasons not to use Xfce:<br />
* Doesn't contain all the features and integration of the major DEs.<br />
* Slower development cycle.<br />
* Because it's based on the CDE design, the layout may not be as familiar.<br />
<br />
== How to Install Xfce ==<br />
Xfce is somewhat modular. That means there is no need for you to run every part, you can pick and choose some of them. Because of this, Xfce has some separate Arch packages.<br />
<br />
=====Installing Xfce=====<br />
To install the base Xfce system, run:<br />
<br />
# pacman -S xfce4<br />
<br />
If you want extras, like panel plugins, run this:<br />
<br />
# pacman -S xfce4-goodies<br />
<br />
When asked by pacman if you wish to install the whole group, you can select 'no' to install only the packages you wish.<br />
{{Note |'''xfce4-xfapplet-plugin''' (a plugin that allows the use of GNOME applets in the Xfce4 panel) is part of the '''xfce4-goodies''' group and depends on '''gnome-panel''', which in turn depends on '''gnome-desktop'''. You may wish to take this into consideration before installing, since it represents a significant number of extra dependencies.}}<br />
<br />
<br />
In order to get the xfce4-mixer to work with alsa, you need to install gstreamer0.10-base-plugins. (See below for help with OSS.)<br />
<br />
# pacman -S gstreamer0.10-base-plugins<br />
<br />
Since the 4.6.0 release Xfce doesn't come with its own icon theme anymore. It now depends on tango-icon-theme. As an alternative you may want to install the gnome-icon-theme package.<br />
<br />
=====Installing and configuring the Daemons=====<br />
If you have '''xorg 1.7''' with input hotplugging you must get hal working before you start Xfce or end up with no input devices.<br />
'''Xorg 1.8''' doesn't use hal anymore but other programs still do, so use hal with xorg 1.8 aswell unless stated otherwise... "better safe then sorry" as they say.<br />
<br />
# /etc/rc.d/hal start<br />
<br />
Add '''hal''' to the '''DAEMONS''' array in rc.conf so you don't have to start is manually every time. Do not background it if you boot straight to X.<br />
'''hal''' relies upon, and will automatically start, '''dbus'''. If you are experiencing issues you may add dbus to the DAEMONS line in rc.conf as well. When adding dbus, ensure it directly precedes hal. Example:<br />
<br />
DAEMONS=(syslog-ng '''dbus''' '''hal''' @network @netfs @crond @cpufreq @alsa)<br />
<br />
Install gamin (the successor of fam). It is configured to automatically run in the background by default, do not add it to rc.conf.<br />
<br />
# pacman -S gamin<br />
<br />
== Running Xfce ==<br />
<br />
=====Automatically at boot time=====<br />
See [[Display Manager]] to install and configure a Display Manager.<br />
<br />
=====Manually=====<br />
If you have not created a ~/.xinitrc yet, do so with:<br />
<br />
$ cp /etc/skel/.xinitrc ~/.xinitrc<br />
<br />
and add the following line:<br />
<br />
exec ck-launch-session startxfce4<br />
<br />
Example:<br />
#!/bin/sh<br />
#<br />
# ~/.xinitrc<br />
#<br />
# Executed by startx (run your window manager from here)<br />
<br />
# exec gnome-session<br />
# exec startkde<br />
# exec startxfce4<br />
# ...or the Window Manager of your choice<br />
exec ck-launch-session startxfce4<br />
<br />
{{{Note |<code>ck-launch-session</code> starts a clean consolekit session needed by Xfce for power management, automounting, shutting down/rebooting etc. Consolekit/policykit capable display managers such as gdm do this for you automatically.}}}<br />
<br />
=====Shutting down and rebooting from withing Xfce=====<br />
* Make sure that '''dbus''' and '''hal''' are enabled in the DAEMONS array in /etc/rc.conf.<br />
* Make sure that you are using <code>exec ck-launch-session startxfce4</code> in ~/.xinitrc or a consolekit/policykit capable display manager (e.g. gdm)<br />
<br />
Then add your normal user to the ''shutdown'' group:<br />
<br />
# gpasswd -a USER power<br />
<br />
{{{Note |This group is only used by HAL, so you still need root privileges for shutting down the system via command line (halt/poweroff/shutdown).}}}<br />
<br />
see http://bbs.archlinux.org/viewtopic.php?id=59954 for more details.<br />
<br />
== Tips ==<br />
=== Commands for the settings manager ===<br />
<br />
There is no official documentation for the commands executed. One must look at .desktop files ''/usr/share/applications/'' folder. For the people who like to know exactly what is happening, here is a handy list to save the effort:<br />
<br />
xfce-setting-show backdrop<br />
xfce-setting-show display<br />
xfce-setting-show keyboard<br />
xfce4-menueditor<br />
xfce-setting-show sound<br />
xfce-setting-show mouse<br />
xfce-setting-show session<br />
xfce-setting-show<br />
xfce-setting-show splash<br />
xfce-setting-show ui<br />
xfce-setting-show xfwm4<br />
xfce-setting-show wmtweaks<br />
xfce-setting-show workspaces<br />
xfce-setting-show printing_system<br />
xfce4-appfinder<br />
xfce4-autostart-editor<br />
xfce4-panel -c<br />
<br />
To review all the available setting manager commands run the following in a terminal:<br />
<br />
$ grep xfce-setting-show /usr/share/applications/xfce*settings*<br />
<br />
=== A drop down console like in quake ===<br />
<br />
# pacman -S tilda<br />
<br />
will install tilda, a drop down console, similar to yakuake. A more lightweight alternative would be '''stjerm''' which can be found in the AUR.<br />
<br />
To configure tilda, type<br />
<br />
# tilda -C<br />
<br />
which opens a configuration window in X.<br />
<br />
====Guake====<br />
Another functional alternative is guake, which is available in the community repo:<br />
<br />
# pacman -S guake<br />
<br />
=== How to enable the compositor in Xfce 4.6 ===<br />
Xfce 4.6 comes with a builtin compositor adding the option for fancy window effects, shadows and transparency and so on. It can be enabled in the advanced desktop settings menu and works on the fly. No additional settings are needed in your /etc/xorg.conf.<br />
<br />
=== Why doesn't my desktop refresh? ===<br />
Xfce 4.6 uses [[FAM]] (File Alteration Monitor) or [[gamin]] (FAM's successor) to get notification when a file or directory changes.<br />
If you decide to use FAM, don't forget to add 'fam' to the list of DAEMONS in /etc/rc.conf.<br />
This step is not necessary for gamin.<br />
<br />
NOTE: After recent updates, FAM has caused issues opening some mounts, such as sshfs, that gamin does not have an issue with.<br />
<br />
=== Use a transparent background for desktop icon titles ===<br />
To change the default white background of desktop icon titles to something more suitable, edit the .gtkrc-2.0 file in your home directory (or create the file if needed) and add the following:<br />
style "xfdesktop-icon-view" {<br />
XfdesktopIconView::label-alpha = 10<br />
base[NORMAL] = "#000000"<br />
base[SELECTED] = "#71B9FF"<br />
base[ACTIVE] = "#71FFAD"<br />
fg[NORMAL] = "#ffffff"<br />
fg[SELECTED] = "#71B9FF"<br />
fg[ACTIVE] = "#71FFAD" }<br />
widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"<br />
<br />
=== How to customize xfce panel background ===<br />
The same, edit ~/.gtkrc-2.0. ( foo.bar is path to your image )<br />
Note that you must place the image in the same directory as the configuration, which is ~/. You can not specify the path to the image, or it won't work.<br />
style "panel-background" {<br />
bg_pixmap[NORMAL] = "foo.bar"<br />
bg_pixmap[PRELIGHT] = "foo.bar"<br />
bg_pixmap[ACTIVE] = "foo.bar"<br />
bg_pixmap[SELECTED] = "foo.bar"<br />
bg_pixmap[INSENSITIVE] = "foo.bar"<br />
}<br />
widget_class "*Panel*" style "panel-background"<br />
<br />
=== How to customize starting xfce ===<br />
<br />
This includes getting necessary environment variables into the GUI runtime.<br />
<br />
* Copy the file /etc/xdg/xfce4/xinitrc to ~/.config/xfce4/<br />
* Edit this file. For example, you can add something like this somehwere in the middle:<br />
* source $HOME/.bashrc<br />
* # start rxvt-unicode server<br />
* urxvtd -q -o -f<br />
<br />
=== How to add themes to XFCE === <br />
<br />
1. Go to [http://xfce-look.org xfce-look.org] and click "Themes" in the left navbar. Look around for a theme you want and click "Download".<br />
<br />
2. Go to the directory where you downloaded the tarball/file and extract it using Squeeze/Xarchiver/CLI.<br />
<br />
3. Move the extracted folder to /usr/share/themes (for all users) or ~/.themes (for just you). Inside /usr/share/themes/abc, there is a folder that you create called xfwm4 that will contain whatever files that is included with that theme.<br />
<br />
4. GTK theme is available here:<br />
Menu --> Settings --> Appearance<br />
You select your xfwm theme in:<br />
Menu --> Settings --> Window Manager<br />
<br />
=== Fonts ===<br />
<br />
If you find the standard fonts rather thick and or slightly out of focus open Settings>Appearence click on the Fonts tab and under Hinting: change to Full<br />
<br />
You could also try using a custom DPI setting<br />
<br />
=== Replacements for the default 'menu' panel applet ===<br />
The "Ubuntu System Panel" (Gnome) panel applet has similar features to those found in its KDE v4.2 equivalent. It can be added to an Xfce panel via the 'XfApplet' panel applet, which allows Gnome applets to be used in Xfce.<br />
<br />
It is available in [http://aur.archlinux.org/packages.php?ID=10259 the AUR]<br />
<br />
=== How to remove menu entries from the System menu === <br />
With the built-in menu editor, you cannot remove menu entries from the System menu. Here’s how to hide them:<br />
# Go to the /usr/share/applications folder. Type in the terminal (Xfce menu > System > Terminal): <pre>$ cd /usr/share/applications</pre><br />
# This folder should be full of .desktop files. To see how many there are, type: <pre>$ ls</pre>Say the one you want to edit is Firefox. Type in the terminal:<pre>$ sudo mousepad firefox.desktop</pre><br />
# In the bottom of the file, paste the following: <pre>NoDisplay=true</pre><br />
# Save and exit. Now Firefox won’t show up in the System menu. You can do this with any program.<br />
<br />
=== But what do you do with menu entries which do not show up in /usr/share/applications (e.g., apps installed via wine)? === <br />
I've found some shortcuts that show in the category “Other” in this directory:<br />
~/.local/share/applications/wine/.<br />
<br />
=== How do I get xfce4-mixer and OSS4 to work together? ===<br />
<br />
Xfce 4.6 uses gstreamer as the backend to control volume, so first you have to make gstreamer cooperate with xfce4-mixer.<br />
<br />
pacman -S xfce4-mixer gstreamer0.10-base-plugins<br />
<br />
(Optional) Second, try to install gstreamer0.10-good-plugins, gstreamer0.10-bad-plugins<br />
<br />
pacman -S gstreamer0.10-good-plugins gstreamer0.10-bad-plugins<br />
<br />
login and logout, or just remove the mixer plugin and add it again. If it doesn't work at all, then you have to compile gstreamer0.10-good-plugins yourself. and can <br />
<br />
Download the PKGBUILD and other files needed from ABS or [http://repos.archlinux.org/viewvc.cgi/gstreamer0.10-good-plugins/repos/extra-i686/ here], edit the PKGBUILD, add --enable-oss. <br />
<br />
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var '''--enable-oss'''\<br />
--disable-static --enable-experimental \<br />
--enable-ladspa \<br />
--with-package-name="GStreamer Good Plugins (Arch Linux)" \<br />
--with-package-origin="http://www.archlinux.org/" || return 1<br />
<br />
and then run makepkg -i. <br />
<br />
makepkg -i<br />
<br />
Still not working? Try tis package in AUR [http://aur.archlinux.org/packages.php?ID=17024 gstreamer0.10-good-plugins-ossv4], modify the pkgver to the newest in the PKGBUILD, and it should work.<br />
<br />
Other LINKS: [http://www.4front-tech.com/forum/ OSS forum]<br />
<br />
=== How to take screenshots (print-screen key) ===<br />
<br />
A simple way is to use a command-line screenshot utility:<br />
<br />
# pacman -S scrot<br />
<br />
Then<br />
<br />
Xfce-menu --> Settings --> Keyboard >>> Application Shortcuts.<br />
<br />
Add the "scrot" command to use the"PrintScreen" key.<br />
<br />
All screenshots will be placed in your home folder with unique name like<br />
<br />
this "2009-02-19-063052_1280x1024_scrot.png"!<br />
<br />
<br />
====Screenshooter====<br />
<br />
There is also an a plugin for the panel able to do this with available in extra:<br />
<br />
# pacman -S xfce4-screenshooter<br />
<br />
=== Change volume with keyboard volume buttons ===<br />
<br />
Go to Settings > Keyboard. Click the "Application Shortcuts" tab and add click the "Add" button. Add the following:<br />
<br />
==== ALSA ====<br />
<br />
amixer set Master 5+<br />
for the volume up button<br />
amixer set Master 5-<br />
for the volume down button<br />
amixer set Master toggle<br />
for the mute/unmute button.<br />
<br />
==== OSS ====<br />
Use one of these scripts:<br />
[http://www.opensound.com/wiki/index.php/Tips_And_Tricks#Using_multimedia_keys_with_OSS<br />
]<br />
<br />
If using ossvol (recommended), add:<br />
ossvol -i 1<br />
for the volume up button<br />
ossvol -d 1<br />
for the volume down button<br />
ossvol -t<br />
for the mute/unmute button<br />
<br />
=== Change mount options ===<br />
<br />
A common problem when automounting usb sticks formatted with fat filesystem is the inability to properly show characters as umlauts, ñ, ß, etc. This may be solved changing the default iocharset to utf8, which is easily done adding a line to '''/etc/xdg/xfce4/mount.rc''':<br />
<br />
[vfat]<br />
uid=<auto><br />
shortname=winnt<br />
'''utf8=true'''<br />
# FreeBSD specific option<br />
longnames=true<br />
<br />
Note that when using utf-8, the system will distinct between upper- and lowercases, potentially corrupting your files. Be careful.<br />
<br />
It is also recommendable to mount vfat devices with the '''flush''' option, so that when copying to usb sticks data flushes more often, thus making thunar's progress bar to stays up until things are on the disk.<br />
<br />
[vfat]<br />
flush=true<br />
<br />
== Troubleshooting ==<br />
=== Keyboard shortcuts aren't working ===<br />
This is usually the case when the settings helper is not working. To start it execute:<br />
xfce4-settings-helper<br />
Now it should be working fine.<br />
<br />
== Related Articles ==<br />
* [[Build order for XFCE]]<br />
* [[Improve GTK Application Looks]]<br />
* [[Startup_files#XFCE|HOWTO: Autostart programs on XFCE]]<br />
<br />
== External Resources ==<br />
* [http://www.us.xfce.org/documentation/ Xfce.org] - The complete documentation.<br />
* [http://www.xfce-look.org/ Xfce-Look] - Themes, wallpapers, and more.<br />
* [http://xfce.wikia.com/wiki/Frequently_Asked_Questions Xfce Wikia] - How to edit the auto generated menu with the menu editor<br />
* [http://wiki.xfce.org Xfce Wiki]<br />
* [https://xubuntu.wordpress.com/2006/08/04/howto-remove-menu-entries-from-the-system-menu/ Howto: Remove menu entries from the System menu]<br />
* [http://www.linuxquestions.org/questions/linux-general-1/how-to-use-xfce-themes-658354/ XFCE themes at linuxquestions.org]</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Lenovo_ThinkPad_T400s&diff=108008Lenovo ThinkPad T400s2010-06-05T16:48:56Z<p>Nixpunk: fixed typo</p>
<hr />
<div>[[Category:Lenovo (English)]]<br />
Before reading, a good starting point for Arch Linux installation on notebooks is the main [[Laptop|laptop]] article.<br />
<br />
The article describes the installation of Arch Linux on a ThinkPad T400s. Since the machine supports 64bit I've installed the x86_64 version of Arch Linux. The article is still in progress and will be extended over the next few weeks. If you have any comments please feel free to add them on the discussion page of the article. <br />
<br />
==System Specification==<br />
<pre><br />
Model: Lenovo T400s 2815-W3F<br />
Processor: Intel® Core™ 2 Duo SP9400 (2.40 GHz), 1066 MHz Front Side Bus, 6 MB-L2-Cache<br />
Chipset: ?<br />
Memory: PC3-8500 DDR3-SDRAM 1066 MHz, 1x2 GB (8 GB maximum)<br />
Harddrive: 250 GB, 1.8", SATA interface<br />
Screen: 14.1" WSXGA LED backlight, maximum 1440 x 900 bp<br />
Graphic: Intel Graphics Media Accelerator X4500MHD, up to 384 MB<br />
Optical drive: DVD-RAM/RW drive<br />
Bluetooth: ThinkPad Bluetooth with Enhanced Data Rate (BDC-2) v.2.0+EDR<br />
Network: Intel 82567LM Ethernet adapter (10/100/1000 Mbps)<br />
WiFi: Intel Wireless 5300 a/g/n<br />
USB ports: 2 + 1 combined eSATA/USB port<br />
Webcam: Yes<br />
Fingerprintr.: Yes<br />
Battery: Lithium Ion in 6 cell (~3 hours)<br />
Dimensions: 337 (width) x 241 (dept) x 21.1-25.9 (height) mm<br />
Weight: 1.77 kg<br />
</pre><br />
<br />
The output of lspci<br />
<pre><br />
00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)<br />
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)<br />
00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)<br />
00:03.0 Communication controller: Intel Corporation Mobile 4 Series Chipset MEI Controller (rev 07)<br />
00:03.3 Serial controller: Intel Corporation Mobile 4 Series Chipset AMT SOL Redirection (rev 07)<br />
00:19.0 Ethernet controller: Intel Corporation 82567LM Gigabit Network Connection (rev 03)<br />
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)<br />
00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)<br />
00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)<br />
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)<br />
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)<br />
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)<br />
00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)<br />
00:1c.3 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 (rev 03)<br />
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)<br />
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)<br />
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)<br />
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)<br />
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)<br />
00:1f.0 ISA bridge: Intel Corporation ICH9M-E LPC Interface Controller (rev 03)<br />
00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03)<br />
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03)<br />
03:00.0 Network controller: Intel Corporation Wireless WiFi Link 5300<br />
05:00.0 SD Host controller: Ricoh Co Ltd Device e822 (rev 01)<br />
05:00.1 System peripheral: Ricoh Co Ltd Device e230 (rev 01)<br />
</pre><br />
The output of lsusb<br />
<pre><br />
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 004 Device 003: ID 0a5c:2145 Broadcom Corp. <br />
Bus 004 Device 002: ID 147e:2016 Upek Biometric Touchchip/Touchstrip Fingerprint Sensor<br />
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 002 Device 002: ID 0bdb:1900 Ericsson Business Mobile Networks BV <br />
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 001 Device 004: ID 17ef:480d Lenovo <br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
==Graphics==<br />
In order to use the builtin intel graphics adapter you will have to install the corresponding drivers:<br />
# pacman -S xf86-video-intel<br />
<br />
Since the latest Xorg often effectively detects hardware with the help of HAL, the use of an xorg.conf file is optional. The following xorg.conf was created by HAL (it will be replaced by a customized one):<br />
<pre><br />
Section "Device"<br />
Identifier "Builtin Default intel Device 0"<br />
Driver "intel" <br />
EndSection<br />
Section "Screen"<br />
Identifier "Builtin Default intel Screen 0"<br />
Device "Builtin Default intel Device 0"<br />
EndSection<br />
Section "Device"<br />
Identifier "Builtin Default vesa Device 0"<br />
Driver "vesa" <br />
EndSection<br />
Section "Screen"<br />
Identifier "Builtin Default vesa Screen 0"<br />
Device "Builtin Default vesa Device 0"<br />
EndSection<br />
Section "Device"<br />
Identifier "Builtin Default fbdev Device 0"<br />
Driver "fbdev" <br />
EndSection<br />
Section "Screen"<br />
Identifier "Builtin Default fbdev Screen 0"<br />
Device "Builtin Default fbdev Device 0"<br />
EndSection<br />
Section "ServerLayout"<br />
Identifier "Builtin Default Layout"<br />
Screen "Builtin Default intel Screen 0"<br />
Screen "Builtin Default vesa Screen 0"<br />
Screen "Builtin Default fbdev Screen 0"<br />
EndSection<br />
</pre><br />
<br />
==TrackPoint==<br />
To enable the scrolling with the middle button do the following steps:<br />
* Check if TrackPoint is recognized by HAL: <br />
{{Command|name=hal-find-by-property --key 'input.product' --string 'TPPS/2 IBM TrackPoint'|output=/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port_logicaldev_input}}<br />
* If the output is empty, i.e. the TrackPoint device is missing, check [http://wiki.ubuntuusers.de/Trackpoint#Notebooks-mit-ALPS-Trackpoint wiki.ubuntuusers.de] (german), which states that either a [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=d7ed5d883c09c5474f842dcb148515dfaef2a567 kernel patch] or disabling the Touchpad in the BIOS is required in order to get the scrolling work.<br />
* Edit {{Filename|/etc/hal/fdi/policy/mouse-wheel.fdi}} as root and place the following code: <br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" string="TPPS/2 IBM TrackPoint"><br />
<merge key="input.x11_options.EmulateWheel" type="string">true</merge><br />
<merge key="input.x11_options.EmulateWheelButton" type="string">2</merge><br />
<merge key="input.x11_options.YAxisMapping" type="string">4 5</merge><br />
<merge key="input.x11_options.XAxisMapping" type="string">6 7</merge><br />
<merge key="input.x11_options.Emulate3Buttons" type="string">true</merge><br />
<merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
* Restart HAL or reboot.<br />
<br />
==Fingerprint Reader==<br />
The builtin fingerprint reader is a Upek Biometric Touchchip/Touchstrip Fingerprint Sensor.<br />
<br />
==Network==<br />
<br />
===Bluetooth===<br />
The [[Bluetooth | bluetooth]] article gives an excellent introduction into the installation and usage of bluetooth on Arch Linux.<br />
<br />
===Ethernet===<br />
Ethernet works out of the box. The corresponding kernel module is '''e100e'''.<br />
<br />
===UMTS===<br />
The UMTS device is a Ericsson F3507g MiniPCIe WWAN/GPS card. The vendor identifier is 0bdb, while the device identifier is 1900 (both values are hexadecimal values). You can get more information about the card by using lsusb/usbview. In order to use the UTMS modem you will have to activate the device. You can edit and verify the settings of your UMTS modem by using minicom or another terminal emulation program like [http://code.google.com/p/picocom/ picocom] or [http://www.knossos.net.nz/dterm.html dterm]. I've used [http://brokestream.com/tinyserial.html tinycom] which is inspired by the well known FreeBSD program 'tips'. <br />
<br />
====Activate the UMTS device====<br />
Open a connection to the device:<br />
# ./com /dev/ttyACM1 [115200]<br />
Check whenever the SIM is protected by PIN by sending <br />
AT+CPIN?<br />
If the answer is:<br />
+CPIN: SIM PIN<br />
you will have to unlock the device with your PIN:<br />
AT+CPIN="YOUR-PIN-NUMBER"<br />
The device can be activated now by sending:<br />
AT+CFUN=1<br />
The answer of the device should be:<br />
+PACSP0<br />
<br />
====Restrict communication to GSM====<br />
Normally you do not want to restrict your communication to GSM only. If desired, you can send:<br />
AT+CFUN=5<br />
<br />
====Restrict communication to WCDMA====<br />
As before, it is unusual to restrict your communication to WCDMA only. Type:<br />
AT+CFUN=6<br />
<br />
====Deactivate the UMTS card====<br />
You can deactivate the card by typing<br />
AT+CFUN=4<br />
and if you want to remove all power from the card, type:<br />
AT+CFUN=0<br />
<br />
====Setup the UMTS card as modem====<br />
There are two ways to use the UMTS card as modem. The first one just uses the card as GPRS modem, the second one uses the card as CDC ethernet interface. <br />
===== Setup the UMTS card as GPRS modem =====<br />
The GPRS modem settings are configured by [http://alumnit.ca/wiki/index.php?page=WvDial wvdial]. Please note that there are provider specific namings for access point names (APN). You can find an appropriate APN over [http://forums.pinstack.com/f24/tcp_apn_wap_gateway_and_port_carrier_settings-360/ here]. <br />
<br />
===== Setup the UMTS card as CDC ethernet interface =====<br />
<br />
====Setup the UMTS card as GPS receiver====<br />
While the UMTS card is activated, we can use it to get GPS info via NMEA protocol. In order to use the NMEA protocol, a few things have to be configured<br />
<pre><br />
AT*E2GPSCTL=X,Y,Z<br />
</pre><br />
The parameter x activates/deactivates the NMEA stream. Legal values are 0 (off) or 1 (on). The frequency how often the card emits the NMEA sentences is set by the Y parameter. Legal values are in a range between 1 upto 60. The last parameter sets DGPS off or on. The value 0 turns it off, the value 1 turns it on. If you want to activate the NMEA stream and DPGS and to update the position every 42 seconds you would type the following:<br />
<pre><br />
AT*E2GPSCTL=1,42,1<br />
</pre><br />
<br />
''' ... TODO ... '''<br />
<br />
===Wireless LAN===<br />
In order to use the builtin Intel Wireless 5300 adapter you will have to add 'iwlagn' to the modules line in /etc/rc.conf:<br />
MODULES=( '''iwlagn''' )<br />
<br />
Also, you will have to install the wireless firmware for the Intel Wireless 5300 adapter:<br />
# pacman -S iwlwifi-5000-ucode<br />
<br />
The use of wpa_supplicant is straight forward. You will find more information on the corresponding wiki page over [[wpa_supplicant|here]].<br />
<br />
==Webcam==<br />
The webcam works out of the box. The functionality has been tested with the gnome application 'cheese'.<br />
<br />
==Power==<br />
Use the [[Pm-utils|pm-utils]] package for suspend to disk and suspend to ram. Following the instructions in this [[Pm-utils|section]] is enough for this notebook. The [[Cpufrequtils|cpufrequtils]] packages provides support for dynamic CPU frequency scaling. The manual scaling featured has not been tested, yet the ondemand (automatic scaling) governor has been proven to work. <br />
<br />
==Sound==<br />
Sound works out of the box. The corresponding kernel module is '''snd-hda-intel'''.<br />
<br />
==5 in 1 Card Reader==<br />
<br />
==Links==<br />
=== General ===<br />
* Lenovo [http://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/45m2271.pdf Hardware Maintenance Manual] of the ThinkPad T400s<br />
* [http://www.engadget.com/2009/09/24/video-phoenix-instant-boot-bios-starts-loading-windows-in-under/3#comments EFI] on a Lenovo ThinkPad T400s.<br />
<br />
===References===<br />
* [[HDAPS | Hard Drive Active Protection System Installation Guide]]<br />
* General Arch Linux related [[Laptop | installation information on latops]]<br />
* [[Thinkpad_Fan_Control | Thinkpad Fan Control Guide]]<br />
* [[ThinkPad_OSD | Thinkpad OSD Guide]]<br />
* [[ThinkFinger | Thinkpad Fingerprintreader Guide]]<br />
* [[Tp_smapi | Thinkpad Smart API Guide]]<br />
* [[Laptop-init-script | Laptop Init Script]]<br />
<br />
=== Linux on a ThinkPad T400s ===<br />
There are a few installation guides for Linux on a Lenovo ThinkPad T400s. <br />
<br />
* [http://www.thinkwiki.org/wiki/Install_Ubuntu_9.10_%28Karmic_Koala%29_on_a_ThinkPad_T400s Ubuntu 9.10 (Karmic Koala)]<br />
* [http://wiki.debianforum.de/LenovoThinkpadT400s Debian 5.0.2] <br />
* [http://www.2xlc.de/t400s.html ArchLinux]<br />
<br />
=== Reviews ===<br />
* English [http://hothardware.com/Articles/Lenovo-ThinkPad-T400s-Notebook-Review/ review] by [http://hothardware.com/ hothardware.com]<br />
* A german [http://www.notebookcheck.com/Test-Lenovo-ThinkPad-T400s-Notebook.20960.0.html review] by [http://www.notebookcheck.com/ notebookcheck.com]</div>Nixpunkhttps://wiki.archlinux.org/index.php?title=Lenovo_ThinkPad_T400s&diff=108007Lenovo ThinkPad T400s2010-06-05T16:43:46Z<p>Nixpunk: /* System Specification */</p>
<hr />
<div>[[Category:Lenovo (English)]]<br />
Before reading, a good starting point for Arch Linux installation on notebooks is the main [[Laptop|laptop]] article.<br />
<br />
The article describes the installation of Arch Linux on a ThinkPad T400s. Since the machine supports 64bit I've installed the x86_64 version of Arch Linux. The article is still in progress and will be extended over the next few weeks. If you have any comments please feel free to add them on the discussion page of the article. <br />
<br />
==System Specification==<br />
<pre><br />
Model: Lenovo T400s 2815-W3F<br />
Processor: Intel® Core™ 2 Duo SP9400 (2.40 GHz), 1066 MHz Front Side Bus, 6 MB-L2-Cache<br />
Chipset: ?<br />
Memory: PC3-8500 DDR3-SDRAM 1066 MHz, 1x2 GB (8 GB maximum)<br />
Harddrive: 250 GB, 1.8", SATA interface<br />
Screen: 14.1" WSXGA LED backlight, maximum 1440 x 900 bp<br />
Graphic: Intel Graphics Media Accelerator X4500MHD, up to 384 MB<br />
Optical drive: DVD-RAM/RW drive<br />
Bluetooth: ThinkPad Bluetooth with Enhanced Data Rate (BDC-2) v.2.0+EDR<br />
Network: Intel 82567LM Ethernet adapter (10/100/1000 Mbps)<br />
WiFi: Intel Wireless 5300 a/g/n<br />
USB ports: 2 + 1 combined eSATA/USB port<br />
Webcam: Yes<br />
Fingerprintr.: Yes<br />
Battery: Lithium Ion in 6 cell (~3 hours)<br />
Dimensions: 337 (width) x 241 (dept) x 21.1-25.9 (height) mm<br />
Weight: 1.77 kg<br />
</pre><br />
<br />
The output of lspci<br />
<pre><br />
00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)<br />
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)<br />
00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)<br />
00:03.0 Communication controller: Intel Corporation Mobile 4 Series Chipset MEI Controller (rev 07)<br />
00:03.3 Serial controller: Intel Corporation Mobile 4 Series Chipset AMT SOL Redirection (rev 07)<br />
00:19.0 Ethernet controller: Intel Corporation 82567LM Gigabit Network Connection (rev 03)<br />
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)<br />
00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)<br />
00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)<br />
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)<br />
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)<br />
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)<br />
00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)<br />
00:1c.3 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 (rev 03)<br />
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)<br />
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)<br />
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)<br />
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)<br />
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)<br />
00:1f.0 ISA bridge: Intel Corporation ICH9M-E LPC Interface Controller (rev 03)<br />
00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03)<br />
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03)<br />
03:00.0 Network controller: Intel Corporation Wireless WiFi Link 5300<br />
05:00.0 SD Host controller: Ricoh Co Ltd Device e822 (rev 01)<br />
05:00.1 System peripheral: Ricoh Co Ltd Device e230 (rev 01)<br />
</pre><br />
The output of lsusb<br />
<pre><br />
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 004 Device 003: ID 0a5c:2145 Broadcom Corp. <br />
Bus 004 Device 002: ID 147e:2016 Upek Biometric Touchchip/Touchstrip Fingerprint Sensor<br />
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 002 Device 002: ID 0bdb:1900 Ericsson Business Mobile Networks BV <br />
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 001 Device 004: ID 17ef:480d Lenovo <br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
</pre><br />
<br />
==Graphics==<br />
In order to use the builtin intel graphics adapter you will have to install the corresponding drivers:<br />
# pacman -S xf86-video-intel<br />
<br />
Since the latest Xorg often effectively detects hardware with the help of HAL, the use of an xorg.conf file is optional. The following xorg.conf was created by HAL (it will be replaced by a customized one):<br />
<pre><br />
Section "Device"<br />
Identifier "Builtin Default intel Device 0"<br />
Driver "intel" <br />
EndSection<br />
Section "Screen"<br />
Identifier "Builtin Default intel Screen 0"<br />
Device "Builtin Default intel Device 0"<br />
EndSection<br />
Section "Device"<br />
Identifier "Builtin Default vesa Device 0"<br />
Driver "vesa" <br />
EndSection<br />
Section "Screen"<br />
Identifier "Builtin Default vesa Screen 0"<br />
Device "Builtin Default vesa Device 0"<br />
EndSection<br />
Section "Device"<br />
Identifier "Builtin Default fbdev Device 0"<br />
Driver "fbdev" <br />
EndSection<br />
Section "Screen"<br />
Identifier "Builtin Default fbdev Screen 0"<br />
Device "Builtin Default fbdev Device 0"<br />
EndSection<br />
Section "ServerLayout"<br />
Identifier "Builtin Default Layout"<br />
Screen "Builtin Default intel Screen 0"<br />
Screen "Builtin Default vesa Screen 0"<br />
Screen "Builtin Default fbdev Screen 0"<br />
EndSection<br />
</pre><br />
<br />
==TrackPoint==<br />
To enable the scrolling with the middle button do the following steps:<br />
* Check if TrackPoint is recognized by HAL: <br />
{{Command|name=hal-find-by-property --key 'input.product' --string 'TPPS/2 IBM TrackPoint'|output=/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port_logicaldev_input}}<br />
* If the output is empty, i.e. the TrackPoint device is missing, check [http://wiki.ubuntuusers.de/Trackpoint#Notebooks-mit-ALPS-Trackpoint wiki.ubuntuusers.de] (german), which states that either a [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=d7ed5d883c09c5474f842dcb148515dfaef2a567 kernel patch] or disabling the Touchpad in the BIOS is required in order to get the scrolling work.<br />
* Edit {{Filename|/etc/hal/fdi/policy/mouse-wheel.fdi}} as root and place the following code: <br />
<pre><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" string="TPPS/2 IBM TrackPoint"><br />
<merge key="input.x11_options.EmulateWheel" type="string">true</merge><br />
<merge key="input.x11_options.EmulateWheelButton" type="string">2</merge><br />
<merge key="input.x11_options.YAxisMapping" type="string">4 5</merge><br />
<merge key="input.x11_options.XAxisMapping" type="string">6 7</merge><br />
<merge key="input.x11_options.Emulate3Buttons" type="string">true</merge><br />
<merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
</pre><br />
* Restart HAL or reboot.<br />
<br />
==Fingerprint Reader==<br />
The builtin fingerprint reader is a Upek Biometric Touchchip/Touchstrip Fingerprint Sensor.<br />
<br />
==Network==<br />
<br />
===Bluetooth===<br />
The [[Bluetooth | bluetooth]] article gives an excellent introduction into the installation and usage of bluetooth on Arch Linux.<br />
<br />
===Ethernet===<br />
Ethernet works out of the box. The corresponding kernel module is '''e100e'''.<br />
<br />
===UMTS===<br />
The UMTS device is a Ericsson F3507g MiniPCIe WWAN/GPS card. The vendor identifier ist 0bdb, while the device identifier is 1900 (both values are hexadecimal values). You can get more information about the card by using lsusb/usbview. In order to use the UTMS modem you will have to activate the device. You can edit and verify the settings of your UMTS modem by using minicom or another terminal emulation program like [http://code.google.com/p/picocom/ picocom] or [http://www.knossos.net.nz/dterm.html dterm]. I've used [http://brokestream.com/tinyserial.html tinycom] which is inspired by the well known FreeBSD program 'tips'. <br />
<br />
====Activate the UMTS device====<br />
Open a connection to the device:<br />
# ./com /dev/ttyACM1 [115200]<br />
Check whenever the SIM is protected by PIN by sending <br />
AT+CPIN?<br />
If the answer is:<br />
+CPIN: SIM PIN<br />
you will have to unlock the device with your PIN:<br />
AT+CPIN="YOUR-PIN-NUMBER"<br />
The device can be activated now by sending:<br />
AT+CFUN=1<br />
The answer of the device should be:<br />
+PACSP0<br />
<br />
====Restrict communication to GSM====<br />
Normally you do not want to restrict your communication to GSM only. If desired, you can send:<br />
AT+CFUN=5<br />
<br />
====Restrict communication to WCDMA====<br />
As before, it is unusual to restrict your communication to WCDMA only. Type:<br />
AT+CFUN=6<br />
<br />
====Deactivate the UMTS card====<br />
You can deactivate the card by typing<br />
AT+CFUN=4<br />
and if you want to remove all power from the card, type:<br />
AT+CFUN=0<br />
<br />
====Setup the UMTS card as modem====<br />
There are two ways to use the UMTS card as modem. The first one just uses the card as GPRS modem, the second one uses the card as CDC ethernet interface. <br />
===== Setup the UMTS card as GPRS modem =====<br />
The GPRS modem settings are configured by [http://alumnit.ca/wiki/index.php?page=WvDial wvdial]. Please note that there are provider specific namings for access point names (APN). You can find an appropriate APN over [http://forums.pinstack.com/f24/tcp_apn_wap_gateway_and_port_carrier_settings-360/ here]. <br />
<br />
===== Setup the UMTS card as CDC ethernet interface =====<br />
<br />
====Setup the UMTS card as GPS receiver====<br />
While the UMTS card is activated, we can use it to get GPS info via NMEA protocol. In order to use the NMEA protocol, a few things have to be configured<br />
<pre><br />
AT*E2GPSCTL=X,Y,Z<br />
</pre><br />
The parameter x activates/deactivates the NMEA stream. Legal values are 0 (off) or 1 (on). The frequency how often the card emits the NMEA sentences is set by the Y parameter. Legal values are in a range between 1 upto 60. The last parameter sets DGPS off or on. The value 0 turns it off, the value 1 turns it on. If you want to activate the NMEA stream and DPGS and to update the position every 42 seconds you would type the following:<br />
<pre><br />
AT*E2GPSCTL=1,42,1<br />
</pre><br />
<br />
''' ... TODO ... '''<br />
<br />
===Wireless LAN===<br />
In order to use the builtin Intel Wireless 5300 adapter you will have to add 'iwlagn' to the modules line in /etc/rc.conf:<br />
MODULES=( '''iwlagn''' )<br />
<br />
Also, you will have to install the wireless firmware for the Intel Wireless 5300 adapter:<br />
# pacman -S iwlwifi-5000-ucode<br />
<br />
The use of wpa_supplicant is straight forward. You will find more information on the corresponding wiki page over [[wpa_supplicant|here]].<br />
<br />
==Webcam==<br />
The webcam works out of the box. The functionality has been tested with the gnome application 'cheese'.<br />
<br />
==Power==<br />
Use the [[Pm-utils|pm-utils]] package for suspend to disk and suspend to ram. Following the instructions in this [[Pm-utils|section]] is enough for this notebook. The [[Cpufrequtils|cpufrequtils]] packages provides support for dynamic CPU frequency scaling. The manual scaling featured has not been tested, yet the ondemand (automatic scaling) governor has been proven to work. <br />
<br />
==Sound==<br />
Sound works out of the box. The corresponding kernel module is '''snd-hda-intel'''.<br />
<br />
==5 in 1 Card Reader==<br />
<br />
==Links==<br />
=== General ===<br />
* Lenovo [http://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/45m2271.pdf Hardware Maintenance Manual] of the ThinkPad T400s<br />
* [http://www.engadget.com/2009/09/24/video-phoenix-instant-boot-bios-starts-loading-windows-in-under/3#comments EFI] on a Lenovo ThinkPad T400s.<br />
<br />
===References===<br />
* [[HDAPS | Hard Drive Active Protection System Installation Guide]]<br />
* General Arch Linux related [[Laptop | installation information on latops]]<br />
* [[Thinkpad_Fan_Control | Thinkpad Fan Control Guide]]<br />
* [[ThinkPad_OSD | Thinkpad OSD Guide]]<br />
* [[ThinkFinger | Thinkpad Fingerprintreader Guide]]<br />
* [[Tp_smapi | Thinkpad Smart API Guide]]<br />
* [[Laptop-init-script | Laptop Init Script]]<br />
<br />
=== Linux on a ThinkPad T400s ===<br />
There are a few installation guides for Linux on a Lenovo ThinkPad T400s. <br />
<br />
* [http://www.thinkwiki.org/wiki/Install_Ubuntu_9.10_%28Karmic_Koala%29_on_a_ThinkPad_T400s Ubuntu 9.10 (Karmic Koala)]<br />
* [http://wiki.debianforum.de/LenovoThinkpadT400s Debian 5.0.2] <br />
* [http://www.2xlc.de/t400s.html ArchLinux]<br />
<br />
=== Reviews ===<br />
* English [http://hothardware.com/Articles/Lenovo-ThinkPad-T400s-Notebook-Review/ review] by [http://hothardware.com/ hothardware.com]<br />
* A german [http://www.notebookcheck.com/Test-Lenovo-ThinkPad-T400s-Notebook.20960.0.html review] by [http://www.notebookcheck.com/ notebookcheck.com]</div>Nixpunk