#!/bin/bash # .xsession # executed by Xsession as part of standard desktop startup # symlink ".xinitrc" to this file for running startx # I like to include the full paths to applications I start from here; no alarms # and no surprises. Anything that needs to keep running, I tend to start in a # subshell to avoid zombies. # Local environment setup MACHINE=$(uname -n) WM=/usr/bin/evilwm PATH="/usr/local/bin:/usr/bin:/bin:/usr/games" test -d "$HOME/bin" && PATH="$HOME/bin:$PATH" export PATH LANG=en_GB.UTF-8 LC_CTYPE=en_GB.UTF-8 LC_COLLATE=C export LANG LC_CTYPE LC_COLLATE # Tells chromium, et al. to query system proxy settings. XDG_CURRENT_DESKTOP=GNOME export XDG_CURRENT_DESKTOP # Ensure gpg-agent is running and relevant environment variables are present # for all child processes. eval $(/usr/bin/gpg-agent --daemon --sh) # Merge .Xresources test -f $HOME/.Xresources && /usr/bin/xrdb -merge $HOME/.Xresources # Set monitor DPI - see also .Xresources, .xsettingsd /usr/bin/xrandr --dpi 168 # Generated by arandr, configure multi-monitor geometry: #/usr/bin/xrandr --output eDP1 --primary --mode 1920x1080 --pos 0x0 --rotate normal \ # --output DP1 --off --output DP2 --off \ # --output HDMI1 --mode 1920x1080 --pos 1920x0 --rotate normal \ # --output HDMI2 --off --output VIRTUAL1 --off # Load keymap for this machine, if present test -f $HOME/.xkb-$MACHINE && /usr/bin/xkbcomp $HOME/.xkb-$MACHINE :0 >/dev/null 2>&1 # If a monitor calibration file exists for this machine, load it test -f $HOME/.icc-$MACHINE && /usr/bin/xcalib $HOME/.icc-$MACHINE >/dev/null 2>&1 # XSETTINGS handling ( /usr/bin/xsettingsd >/dev/null 2>&1 & ) # Various things seem to need this running now ( /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 >/dev/null 2>&1 & ) # Background power management ( /usr/bin/xfce4-power-manager >/dev/null 2>&1 & ) # NetworkManager applet doesn't seem to appear in xfce4-panel's "Add New # Items", so start it here: ( /usr/bin/nm-applet >/dev/null 2>&1 & ) # xss-lock is not required any more: since 6.something, XScreenSaver comes with # its own daemon to listen for DBus events (xscreensaver-systemd). Just be # sure your ~/.xscreensaver config file has "lock: True". #( /usr/bin/xss-lock -- /usr/bin/xscreensaver-command -lock >/dev/null 2>&1 & ) # Screensaver ( /usr/bin/xscreensaver -no-splash >/dev/null 2>&1 & ) # Touchpad/mouse configuration. This makes my Thinkpad behave: /usr/bin/synclient TapButton1=1 TapButton2=2 PalmDetect=1 # This approach may work better for certain devices: #/usr/bin/xinput set-int-prop "SynPS/2 Synaptics TouchPad" "libinput Tapping Enabled" 8 1 #/usr/bin/xinput set-int-prop "SynPS/2 Synaptics TouchPad" "libinput Horizonal Scroll Enabled" 8 0 #/usr/bin/xinput set-float-prop "SynPS/2 Synaptics TouchPad" "libinput Accel Speed" 0.5 #/usr/bin/xinput set-button-map "SynPS/2 Synaptics TouchPad" 1 3 2 4 5 6 7 # Oh how I dislike the X server beeping at me /usr/bin/xset b off # Fire up window manager and hot key handler ( $WM >/dev/null 2>&1 & ) ( /usr/bin/xbindkeys >/dev/null 2>&1 & ) # Set simple background pattern if present, else a solid colour if test -f "$HOME/.bgbitmap"; then /usr/bin/xsetroot -bitmap "$HOME/.bgbitmap" -fg \#402040 -bg \#381838 -cursor_name left_ptr else /usr/bin/xsetroot -solid \#402040 -cursor_name left_ptr fi # Lots of Xterms spawned in fixed locations by default ( /usr/bin/uxterm -g 80x11+0+0 >/dev/null 2>&1 & ) ( /usr/bin/uxterm -g 80x11+646+0 >/dev/null 2>&1 & ) ( /usr/bin/uxterm -g 64x11+1292+0 >/dev/null 2>&1 & ) ( /usr/bin/uxterm -g 96x24+0+204 >/dev/null 2>&1 & ) ( /usr/bin/uxterm -g 96x24+0-0 >/dev/null 2>&1 & ) ( /usr/bin/uxterm -g 96x24+774+204 >/dev/null 2>&1 & ) ( /usr/bin/uxterm -g 96x24+774-0 >/dev/null 2>&1 & ) # Hand children back to the nanny disown -a # For a laptop, xfce4-panel makes a good magic process, as it gives visibility # to the NetworkManager control applet and provides a "Log Out" menu option. # Be aware that Xfce is a victim of Client-Side Decoration. exec /usr/bin/xfce4-panel