Skip to content

Latest commit

 

History

History
324 lines (270 loc) · 10.2 KB

X.md

File metadata and controls

324 lines (270 loc) · 10.2 KB

X

Set xorg and a desktop environment fast.

  1. NO DE
    1.1. XINITRC CONFIGURATION FILE
    1.2. LAUNCH X
    1.3. LAUNCH X AT LOGIN
  2. RATPOISON
    2.1. BASIC SHORTCUTS
    2.2. RATPOISONRC CONFIGURATION FILE
  3. XBINDKEYS
    3.1. GETTING KEYS INFORMATION
    3.2. XBINDKEYSRC CONFIGURATION FILE
  4. TERMINAL EMULATOR
  5. CLIPBOARD
    5.1. CLIPBOARD BINDINGS
  6. SCREEN TEARING

NO DE

To use a window manager without any desktop environment, or even a login manager, you can just install the applications mentioned here and edit the ".xinitrc" file with the appropriate changes and start "X" from the terminal. The required applications are:

  • Ratpoison (or your preferred window manager in the ".xinitrc" file)
  • Xbindkeys
  • hsetroot or imagemagick (or replace with your preferred wallpaper changer in the ".xinitrc" file)
  • ImageMagick (or replace with your preferred screenshot program in the ".xinitrc" file)
  • FFmpeg or libav-tools (or replace with your preferred screencasting program in the ".xinitrc" file)
  • UXTerm or urxvt (in the case you want to set the terminal emulator theme with the ".Xresources" file)
  • dmenu

XINITRC CONFIGURATION FILE

Next is an example ".xinitrc" file which goes under your home directory:

# load your preferred terminal settings
xrdb -merge -I$HOME ~/.Xresources

# load your preferred keybindings
xbindkeys

# set the wallpaper (requires hsetroot to be installed)
hsetroot -fill ~/.wallpaper.jpg

# alternative way to set the wallpaper using imagemagick (DISABLED)
#display -size 1280x800 -window root ~/.wallpaper.png

# launch the window manager (needs to be done at the end)
exec dbus-launch --sh-syntax --exit-with-session ratpoison

LAUNCH X

After the configuration file is properly set, you login and type on the terminal:
startx
whenever you want to start X.

LAUNCH X AT LOGIN

To launch X at login, place the following at either your ".bash_profile" or ".bashrc" file:

if [ $(tty) = "/dev/tty1" ]
then
    startx > /dev/null 2>&1
fi

This will automatically launch "X" at the first "tty" ("virtual terminal"). If you are confused, to switch between ttys press "Ctrl-Alt-F<X>" (where "<X>" is a number). So to change to the tty with xorg you'll press "Ctrl-Alt-F1".

RATPOISON

Productive, automated, scriptable, and minimal, Ratpoison is a strict tiling window manager using bindings similar to GNU Screen. A few of its benefits are.

  • No mouse used, all done by commands called by typing "control" and "t" at the same time, plus another key.
  • You can set your own bindings in the file ".ratpoisonrc" which is extremely friendly.
  • Extensible by scripts. The "rpws" script for example adds multiple workspaces (comes by default), another script ("expose.pl") gives a mozaic of current windows.
  • Full manual available from the terminal:
    info ratpoison
  • Can temporarily switch to another window manager with the "tmpwm" command for your comfort.

BASIC SHORTCUTS

  • Show the help cheatsheet:
    Ctrl-t + ?

  • Bring an application menu:
    Ctrl-t + .

  • Get time and date:
    Ctrl-t + a

  • Clear screen from help cheatsheet or menu:
    Esc

  • Show open windows:
    Ctrl-t + w

  • Close a window:
    Ctrl-t + k

  • Swith back between windows:
    Ctrl-t + Ctrl-t

  • Go to next window:
    Ctrl-t + n
    Ctrl-t + Space

  • Go to previous window:
    Ctrl-t + p

  • Split screen vertically:
    Ctrl-t + s

  • Split screen horizontally:
    Ctrl-t + S

  • Go to next frame:
    Ctrl-t + Tab

  • Go to previous frame:
    Ctrl-t + Alt-Tab

  • Make a window the only one visible:
    Ctrl-t + Q

RATPOISONRC CONFIGURATION FILE

The next custom ".ratpoisonrc" file goes under your home directory and can be customized to your needs:

# text editor
bind e exec gjots2
bind E exec xterm -e elvis

# web browser
bind y exec icecat
# highlight an url in a window and the url is opened in a new tab
bind Y exec icecat -new-tab `$RATPOISON -c getsel`

# MOC as a music player, alsamixer as volume control
bind o exec xterm -e mocp
bind O exec xterm -e alsamixer

# file manager
bind d exec spacefm
bind D exec xterm -e vifm

# mail
bind g exec xterm -e mutt

# IRC
bind h exec xterm -e irssi

# RSS
bind j exec liferea
bind J exec xterm -e newsbeuter

# password manager
bind z exec xterm -e kpcli

# looks for the JDownloader program under the designated path
bind Z exec ~/jd2/JDownloader2

# expose-like switch window by using "Ctrl-t + ,". Get the script from http://ratpoison.wxcvbn.org/cgi-bin/wiki.pl/expose.pl
bind comma exec ~/bin/expose.pl

# as colon invoke ratpoison commands, semicolon invoke shell commands ("Ctrl-t + ;")
bind semicolon exec

# no startup message announcing what the prefix keys are
startup_message off

# change font, color and position for messages
set font "Fixed-11"
set fgcolor gray
set bgcolor black
set bargravity c

# normal cursor
exec xsetroot -cursor_name left_ptr

# fix java swing, needs wmname from suckless
exec wmname LG3D

# multiple workspaces by using "Alt + FX" (where "FX" is from F1 to F4), needs rpws script
exec rpws init 4 -k

# get rid of the one pixel border around windows
set border 0

XBINDKEYS

Custom keys can be added with the Xbindkeys program.

GETTING KEYS INFORMATION

With the help of the default xev program you can check the keys you want:

  • Start the program and type the key you want to see its information
    xev > keys.txt
  • Look for the line that says
    keycode KEY_NUMBER (keysym INGORE_THIS, KEY_NAME)
  • Now on ".xbindkeysrc" add the information for each bind:
"WHAT_YOU_WANT_HERE_GOES_HERE"
  m:0x0 + c:KEY_NUMBER
  KEY_NAME

XBINDKEYSRC CONFIGURATION FILE

In the example below we'll have the modified keys:

  • The "windows" key switch windows using dmenu pre-installed.
  • The "menu" key brings an application launcher you type names into using dmenu.
  • The "print screen" key takes a screenshot using imagemagick.
  • The "scroll lock" key records the desktop using either libav-tools or ffmpeg.
  • The "mute" button if available will mute/unmute volume.
  • The "lower volume" button if available will lower volume.
  • The "raise volume" button if available will raise volume.

Now the example ".xbindkeysrc" file which goes under your home directory:

# Enable "Scroll_Lock" for the next keybinding
keystate_scrolllock= enable

# Switch windows using the "windows key" (needs dmenu)
"ratpoison -c "select $(ratpoison -c "windows "%t"" | dmenu -nf gray -nb black -sf black -sb gray -b -l 20)""
  Super_L

# Launch application using the "menu key" (needs dmenu)
"dmenu_run -nf gray -nb black -sf black -sb gray -b"
  m:0x0 + c:135
  Menu

# Take screenshot using the "print screen key" (needs imagemagick)
"import -window root png:$HOME/x_$(date "+%Y-%m-%d-%H:%M:%S").png"
  m:0x0 + c:107
  Print

# Record desktop with avconv (libav-tools) or install ffmpeg and replace avconv
"killall -INT avconv 2>/dev/null || avconv -f x11grab -r 10 -s $(xrandr | grep '*' |  tr -s ' ' | cut -d ' ' -f2) -i :0.0 $HOME/x_$(date "+%Y-%m-%d-%H:%M:%S").mp4 &"
  m:0x0 + c:78
  Scroll_Lock

# Mute/unmute volume
"amixer set Master toggle"
  m:0x0 + c:121
  XF86AudioMute

# Lower volume
"amixer set PCM 5%-"
  m:0x0 + c:122
  XF86AudioLowerVolume

# Raise volume
"amixer set PCM 5%+"
  m:0x0 + c:123
  XF86AudioRaiseVolume

TERMINAL EMULATOR

To tweak the theme of your terminal emulator you need to tweak the ".Xresources" file.

Next is an example ".Xresources" file which goes under your home directory:

xterm*maximized:	true
xterm*background:	black
xterm*foreground:	grey
xterm*cursorColor:	green
xterm*cursorBlink:	false
xterm*faceName:	Fixedsys Excelsior 3.01:size=11:antialias=true
xterm*faceNameDoublesize:	WenQuanYi Zen Hei
xterm*termName:	xterm-256color
xterm*locale:	true
xterm*utf8Title:	true
xterm*dynamicColors: true
xterm*borderWidth: 0
xterm*eightBitInput:   false
xterm*metaSendsEscape: true
xterm*decTerminalID:	vt340


urxvt*maximized:	true
urxvt*background:	black
urxvt*foreground:	white
urxvt*cursorColor:	green
urxvt*cursorBlink:	false
urxvt*faceName:	GNU Unifont:size=12:antialias=true
urxvt*faceNameDoublesize:	WenQuanYi Zen Hei
urxvt*termName:	urxvt-256color
urxvt*locale:	true
urxvt*utf8Title:	true
urxvt*font: fixed
urxvt*boldFont: fixed
urxvt*dynamicColors: true
urxvt*borderWidth: 0

To load changes run:
xrdb -merge ~/.Xresources

CLIPBOARD

"Xsel" with the help of "GNU Screen" will be used as intermediary between the terminal and "X". The following commands are examples we will replace by more simple bindings:

  • To paste from "X" clipboard
    xsel -ob
  • To copy to "X" clipboard from inside "GNU Screen"
    cat | xsel -ib
    Then hit "Ctrl-a + ]", then "Enter", then "Ctrl-d".

CLIPBOARD BINDINGS

For ease of use we will use "GNU Screen's" configuration file ".screenrc" to save shortcuts for clipboard exchange instead of the above commands. Save these in your ".screenrc" file:

# Copy from "GNU Screen" to "X" clipboard automatically when using "GNU Screen's" copy selection
bindkey -m ' ' eval 'stuff \040' 'writebuf' 'exec sh -c "xsel -ib < /tmp/screen-exchange"'

# Copy from "X" to "GNU Screen" clipboard by pressing "Ctr-a + b" + "Ctrl-a + ]" on "GNU Screen's" normal mode
bind b eval 'exec sh -c "xsel -ob > /tmp/screen-exchange && screen -X readbuf"'

SCREEN TEARING

To solve screen tearing you can use any of these config files in its appropriate directory.

  • In the case you have Intel add these to "/etc/X11/xorg.conf.d/20-intel.conf":
Section "Device"
   Identifier 	"Intel Graphics"
   Driver 	"intel"
   Option "TearFree" "true"
EndSection
  • In the case you have AMD add these to "/etc/X11/xorg.conf.d/20-amdgpu.conf":
Section "Device"
   Identifier "AMD Graphics"
   Driver "amdgpu"
   Option "TearFree" "true"
EndSection
  • Another way to add changes is in the "/etc/X11/xorg.conf" file:
Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "AccelMethod"  "uxa"
   Option      "TearFree" "true"
EndSection