Installing Xfce on Debian 9

Debian Xfce
Working on the console is great if you have to deal with server or even customizing your system. In the end, for desktop productivity and games, most of us want a nice desktop environment. There is a lot of choice in Linux and that's great. I used to go minimalistic back in the day by using Openbox as the bigger desktop environments such as KDE and Gnome could be quite demanding on older systems. I tried Xfce as it's less demanding yet has more goodies set up by default.

1. Base install

To install xfce:

apt update
apt install xfce4

To get some more customization possibilities. don't worry if you get some errors on package that aren't found as some have been renamed. Mind that this installs a lot of packages so you might just want to stick to the basic xfce4 install.:

apt-get install xfce4 xfce4-goodies xfce4-appfinder xfce4-artwork xfce4-battery-plugin xfce4-clipman-plugin
        xfce4-datetime-plugin xfce4-diskperf-plugin xfce4-icon-theme xfce4-mcs-manager
        xfce4-mcs-plugins xfce4-notes-plugin xfce4-sensors-plugin xfce4-session
        xfce4-terminal xfce4-utils gtk3-engines-xfce xfce4-power-manager xfce4-panel
        thunar-archive-plugin thunar-media-tags-plugin

2. Themes

First we install some standard themes:

apt-get install albatross-gtk-theme blackbird-gtk-theme bluebird-gtk-theme xfwm4-themes gtk2-engines-murrine murrine-themes

To install the greybird theme, we can use a manual (latest) or automatic install.

2.1 Manual

Install the Greybird theme:

mkdir -p ~/.themes
cd $_
wget https://github.com/shimmerproject/Greybird/archive/master.zip
unzip master.zip
rm master.zip

Install the Greybird icons:

mkdir -p ~/.icons
cd $_

wget https://github.com/shimmerproject/elementary-xfce/archive/master.zip
unzip master.zip
mv elementary*/* .
rm master.zip

Update the icon cache as user

gtk-update-icon-cache -f -t ~/.icons/elementary-xfce
gtk-update-icon-cache -f -t ~/.icons/elementary-xfce-dark
gtk-update-icon-cache -f -t ~/.icons/elementary-xfce-darker
gtk-update-icon-cache -f -t ~/.icons/elementary-xfce-darkest
gtk-update-icon-cache -f -t ~/.icons/elementary-xfce-master

For the Greybird theme to work, you need to:

apt-get install gtk2-engines-murrine murrine-themes gtk3-engines-unico (*)

(*) gtk3-engines-unico isn't available on Debian 9

Then apply the themes in:

Settings Manager --> Appearance --> Style tab: choose "Greybird master"
Settings Manager --> Appearance --> Icons tab: choose "elementary xfce dark"
Settings Manager --> Window Manager --> Style tab: choose "Greybird master"

2.2 Automatic

Go to https://pkgs.org/download/greybird-gtk-theme and download the deb package. Install it:

dpkg -i greybird-gtk-theme_3.22.0-1_all.deb

3. Icons

The basic xfce4 icon theme is xfce4-icon-theme. A lot of other icon themes are installed when the themes were installed. A tweak I liked was to make the icon text background transparent. No full background labels. To do so, create a .gtkrc-2.0 file in your home directory:

vi .gtkrc-2.0

style "xfdesktop-icon-view" {
    XfdesktopIconView::label-alpha = 10
    base[NORMAL] = "#000000"
    base[SELECTED] = "#71B9FF"
    base[ACTIVE] = "#71B9FF"
    fg[NORMAL] = "#fcfcfc"
    fg[SELECTED] = "#ffffff"
    fg[ACTIVE] = "#ffffff"
}
widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"

4. Fonts

Install some basic fonts:

apt install ttf-dejavu-* ttf-liberation

See more ttf fonts:

apt search ttf-*

No need for the microsoft fonts since the ttf-liberation package provides similar fonts. If you really must have them:

apt install ttf-mscorefonts-installer

It's also possible to download fonts from the internet, for instance from google. When programming monospace fonts are great. I like Liberation mono, Space Mono Regular, PT Mono, ... To do so, create a .fonts directory and copy the font files in there:

mkdir ~/.fonts/

Download monospace fonts from google, copy and unzip them here. Next, add the fonts to the font cache so your system knows where to find them:

sudo fc-cache -f -v

In xfce, choose the font in Settings > Appearance.

To copy the fonts system wide, copy them to /usr/local/share/fonts. Some interesting commands, well, if your dealing with fonts that is:

fc-list: lists fonts
fc-match -s liberation: shows a list of matching fonts

Just as mentioned above, to rebuild the font cache list:

fc-cache -f -v

In the X system, you can also see what fonts are installed on the X Server side:

xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-m*'
xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-c*'

5. Terminal

It's easy to customize the xfce4-terminal. You can easily set the font and appearance from the menu.

When dealing with xterm, it's not so easy. By default xterm looks rather, eh, ugly. Xterm display & font can be set in a file ~/.Xdefaults This is what the file could look like. Start with this and change to your liking. You might also notice a recurring theme from here on forward. I hate the beeping noise when working from the console or in general fa-smile red. You could blacklist the speaker module as well.

xterm*visualBell: true
xterm*foreground: white
xterm*scrollBar: true
xterm*appcursorDefault: true
XTerm*faceName: Bitstream Vera Serif Mono
xterm*faceSize: 11
xterm*vt100*geometry: 100x30
xterm*saveLines: 16384
xterm*loginShell: true
xterm*charClass: 33:48,35:48,37:48,43:48,45-47:48,64:48,95:48,126:48
xterm*termName: xterm-color
xterm*eightBitInput: false

!BLK Cursor
#define _color0        #000d18
#define _color8        #000d18
!RED Tag
#define _color1        #e89393
#define _color9        #e89393
!GRN SpecialKey
#define _color2        #9ece13
#define _color10       #9ece13
!YEL Keyword
#define _color3        #f0dfaf
#define _color11       #f0dfaf
!BLU Number
#define _color4        #8cd0d3
#define _color12       #8cd0d3
!MAG Precondit
#define _color5        #c0bed1
#define _color13       #c0bed1
!CYN Float
#define _color6        #dfaf8f
#define _color14       #dfaf8f
!WHT Search
#define _color7        #efefef
#define _color15       #efefef
!FMT Include, StatusLine, ErrorMsg
#define _colorBD       #ffcfaf
#define _colorUL       #ccdc90
#define _colorIT       #80d4aa
!TXT Normal, Normal, Cursor
#define _foreground    #dcdccc
#define _background    #1f1f1f
#define _cursorColor   #8faf9f
URxvt*color0         : _color0
URxvt*color1         : _color1
URxvt*color2         : _color2
URxvt*color3         : _color3
URxvt*color4         : _color4
URxvt*color5         : _color5
URxvt*color6         : _color6
URxvt*color7         : _color7
URxvt*color8         : _color8
URxvt*color9         : _color9
URxvt*color10        : _color10
URxvt*color11        : _color11
URxvt*color12        : _color12
URxvt*color13        : _color13
URxvt*color14        : _color14
URxvt*color15        : _color15
URxvt*colorBD        : _colorBD
URxvt*colorIT        : _colorIT
URxvt*colorUL        : _colorUL
URxvt*foreground     : _foreground
URxvt*background     : _background
URxvt*cursorColor    : _cursorColor
XTerm*color0         : _color0
XTerm*color1         : _color1
XTerm*color2         : _color2
XTerm*color3         : _color3
XTerm*color4         : _color4
XTerm*color5         : _color5
XTerm*color6         : _color6
XTerm*color7         : _color7
XTerm*color8         : _color8
XTerm*color9         : _color9
XTerm*color10        : _color10
XTerm*color11        : _color11
XTerm*color12        : _color12
XTerm*color13        : _color13
XTerm*color14        : _color14
XTerm*color15        : _color15
XTerm*colorBD        : _colorBD
XTerm*colorIT        : _colorIT
XTerm*colorUL        : _colorUL
XTerm*foreground     : _foreground
XTerm*background     : _background

To make the change have immediate effect, .Xdefaults:

xrdb ~/.Xdefaults

Next, you can test the changes from the console:

xterm

6. Console

We want to change the appearance of the console (that's not being in a graphical environment). Grub gets involved here too as Grub is used to boot the system. It can set a console font and so does the kernel.

First you can to find the supported modes for Grub. This means the resolution your screen will be in when presenting you with the startup choices and of the console once the system has booted.

Find supported modes for Grub in Grub

Reboot and press and hold the shift key to display your grub. Press C to enter console mode. Then type:

vbeinfo

This didn't work for me. It was another command videoinfo

If you want to do this from a running system, you need to install hwinfo to do so:

apt install hwinfo
hwinfo --framebuffer

However, in my case the info returned was from the internal graphics card and not at all the resolutions my system could handle. Best check from within grub.:

hwinfo --framebuffer

02: None 00.0: 11001 VESA Framebuffer
  [Created at bios.459]
  Unique ID: rdCR.GN_765f17qD
  Hardware Class: framebuffer
  Model: "NVIDIA GK104 Board - 20050000"
  Vendor: "NVIDIA Corporation"
  Device: "GK104 Board - 20050000"
  SubVendor: "NVIDIA"
  SubDevice:
  Revision: "Chip Rev"
  Memory Size: 14 MB
  Memory Range: 0xe9000000-0xe9dfffff (rw)
  Mode 0x0300: 640x400 (+640), 8 bits
  Mode 0x0301: 640x480 (+640), 8 bits
  Mode 0x0303: 800x600 (+800), 8 bits
  Mode 0x030e: 320x200 (+640), 16 bits
  Mode 0x030f: 320x200 (+1280), 24 bits
  Mode 0x0311: 640x480 (+1280), 16 bits
  Mode 0x0312: 640x480 (+2560), 24 bits
  Mode 0x0314: 800x600 (+1600), 16 bits
  Mode 0x0315: 800x600 (+3200), 24 bits
  Mode 0x0330: 320x200 (+320), 8 bits
  Mode 0x0331: 320x400 (+320), 8 bits
  Mode 0x0332: 320x400 (+640), 16 bits
  Mode 0x0333: 320x400 (+1280), 24 bits
  Mode 0x0334: 320x240 (+320), 8 bits
  Mode 0x0335: 320x240 (+640), 16 bits
  Mode 0x0336: 320x240 (+1280), 24 bits
  Mode 0x033d: 640x400 (+1280), 16 bits
  Mode 0x033e: 640x400 (+2560), 24 bits
  Config Status: cfg=new, avail=yes, need=no, active=unknown

Judging from the info, it takes the onboard device, not the external graphics card.

Note

The console resolution you choose is not only used for the startup choices, but also for the tty's once your system is booted. Choosing a very high resolution will make for tiny letter on the screen.

Now, edit /etc/default/grub:

GRUB_GFXMODE=1280x800x32
GRUB_GFXPAYLOAD_LINUX=keep

The firstline sets the resolution and color depth. I didn't use 1920x1080 since that produces small letters. The 2nd line tells the kernel to not override the console settings.

Som have reported they needed to set nomodeset to make the settings stick.:

GRUB_CMDLINE_LINUX="nomodeset"

Run update-grub after changing this file:

update-grub

Console fonts

Next is the font used in the console. This is done with the package console-setup. Edit /etc/default/console-setup:

CHARMAP="UTF-8"
CODESET="Lat7"
FONTFACE="Terminus"
FONTSIZE="8x16"

Another way is to use setfont from the kbd package:

setfont /usr/share/consolefonts/Lat7-Terminus28x14.psf

This works for my Debian; it may be different for you. In Debian, you can also run dpkg-reconfigure -plow console-setup

Console prompt

I like to use a different prompt for root and the user. Also, an indication for when I'm working in screen. And while we are at it, an easy way to set the title on an xterm. Thank you.

First, we set the colors in the systemwide bashrc file:

vi /etc/bash.bashrc

# Add this at the end of the file
# Reset
Color_Off="\[\033[0m\]"       # Text Reset

# Regular Colors
Black="\[\033[0;30m\]"        # Black
Red="\[\033[0;31m\]"          # Red
Green="\[\033[0;32m\]"        # Green
Yellow="\[\033[0;33m\]"       # Yellow
Blue="\[\033[0;34m\]"         # Blue
Purple="\[\033[0;35m\]"       # Purple
Cyan="\[\033[0;36m\]"         # Cyan
White="\[\033[0;37m\]"        # White

# Bold
BBlack="\[\033[1;30m\]"       # Black
BRed="\[\033[1;31m\]"         # Red
BGreen="\[\033[1;32m\]"       # Green
BYellow="\[\033[1;33m\]"      # Yellow
BBlue="\[\033[1;34m\]"        # Blue
BPurple="\[\033[1;35m\]"      # Purple
BCyan="\[\033[1;36m\]"        # Cyan
BWhite="\[\033[1;37m\]"       # White

# Underline
UBlack="\[\033[4;30m\]"       # Black
URed="\[\033[4;31m\]"         # Red
UGreen="\[\033[4;32m\]"       # Green
UYellow="\[\033[4;33m\]"      # Yellow
UBlue="\[\033[4;34m\]"        # Blue
UPurple="\[\033[4;35m\]"      # Purple
UCyan="\[\033[4;36m\]"        # Cyan
UWhite="\[\033[4;37m\]"       # White

# Background
On_Black="\[\033[40m\]"       # Black
On_Red="\[\033[41m\]"         # Red
On_Green="\[\033[42m\]"       # Green
On_Yellow="\[\033[43m\]"      # Yellow
On_Blue="\[\033[44m\]"        # Blue
On_Purple="\[\033[45m\]"      # Purple
On_Cyan="\[\033[46m\]"        # Cyan
On_White="\[\033[47m\]"       # White

# High Intensity
IBlack="\[\033[0;90m\]"       # Black
IRed="\[\033[0;91m\]"         # Red
IGreen="\[\033[0;92m\]"       # Green
IYellow="\[\033[0;93m\]"      # Yellow
IBlue="\[\033[0;94m\]"        # Blue
IPurple="\[\033[0;95m\]"      # Purple
ICyan="\[\033[0;96m\]"        # Cyan
IWhite="\[\033[0;97m\]"       # White

# Bold High Intensity
BIBlack="\[\033[1;90m\]"      # Black
BIRed="\[\033[1;91m\]"        # Red
BIGreen="\[\033[1;92m\]"      # Green
BIYellow="\[\033[1;93m\]"     # Yellow
BIBlue="\[\033[1;94m\]"       # Blue
BIPurple="\[\033[1;95m\]"     # Purple
BICyan="\[\033[1;96m\]"       # Cyan
BIWhite="\[\033[1;97m\]"      # White

# High Intensity backgrounds
On_IBlack="\[\033[0;100m\]"   # Black
On_IRed="\[\033[0;101m\]"     # Red
On_IGreen="\[\033[0;102m\]"   # Green
On_IYellow="\[\033[0;103m\]"  # Yellow
On_IBlue="\[\033[0;104m\]"    # Blue
On_IPurple="\[\033[0;105m\]"  # Purple
On_ICyan="\[\033[0;106m\]"    # Cyan
On_IWhite="\[\033[0;107m\]"   # White

Next, we edit the .bashrc of root.:

vi /root/.bashrc

...
# The root console
export PS1='\h:\w\$ '
PS1="${BBlue}\$PWD${Color_Off} \d \t\n${debian_chroot:+($debian_chroot)}[${BRed}\u@\h${Color_Off}]\$ "
umask 022

# XTERM TITLE
export XTERM_TITLE=$USER@$HOSTNAME
PROMPT_COMMAND='echo -ne "\033]0;${XTERM_TITLE}\007"'
function xtitle ()
{
    export XTERM_TITLE="$@"
}

# Prompt for when working with screen
if [ ! -z $STY ]
then
    PS1="${BBlue}\$PWD${Color_Off} \d \t\n${BBlack}(SCREEN)${Color_Off}${debian_chroot:+($debian_chroot)}[${Red}\u@\h${Color_Off}]\$ "
fi

Do the same for the user. Change the colors as you see fit. I used red for root, green for the user.:

vi /home/user/.bashrc

...
export PS1='\h:\w\$ '
PS1="${BBlue}\$PWD${Color_Off} \d \t\n${debian_chroot:+($debian_chroot)}[${BGreen}\u@\h${Color_Off}]\$ "
umask 022

# XTERM TITLE
export XTERM_TITLE=$USER@$HOSTNAME
PROMPT_COMMAND='echo -ne "\033]0;${XTERM_TITLE}\007"'
function xtitle ()
{
    export XTERM_TITLE="$@"
}

# Prompt for when working with screen
if [ ! -z $STY ]
then
    PS1="${BBlue}\$PWD${Color_Off} \d \t\n${BBlack}(SCREEN)${Color_Off}${debian_chroot:+($debian_chroot)}[${Green}\u@\h${Color_Off}]\$ "
fi

You will need to login/start a console again to see the changes or source the changes and start an xterm:

source ~/.bashrc
xterm

No BEEP!

To tell the internal speaker to STFU

Die interal speak - Die!
vi /etc/inputrc
set bell-style visible

This change is system-wide. Nobody on my system needs the darn thing. This works for the tty consoles and the standard xterm terminal. Apparently the xfce4-terminal needs some more tweaking.

Add this to your .bashrc to finally also shut up the beep in your xfce4-terminal:

xset b off

You can also remove the module responsible for the beep. To test removing the pc speaker module:

rmmod pcspkr

This only removes it for the current session. To reload the module:

modprobe pcspkr

To permanently prevent the pcspkr module from loading, create a file pcspkr and blacklist the internal speaker module:

vi /etc/modprobe.d/pcspkr
blacklist pcspkr

7. Background

To set a background, I used ristretto that comes with Xfce. It's possible to set a different background for the different screens you might have.

8. Keyboard

I'm oldskool, used to use the keypad for navigating in dos games. If you don't know what dos is, good, keep it that way. Some things are better left covered. Usually, the keypad isn't used to do that (I also hate the numlock key, probably one of the only people on the planet but hey, to each his own).

In /etc/inputrc there is some info on how the different keys are used. In your home directory, you'll find a xkbmap file used to map keys. It's a whole topic of its own to fully adjust the keyboard to do as you command. I won't go there. Just show you how to use the keypad to navigate. Edit /etc/default/keyboard. Notice the XKBOPTIONS part. That's where the change is made. Do not blindly copy the info there as you'll end up with a Belgian keyboard.:

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="be"
XKBVARIANT=""
XKBOPTIONS="numpad:microsoft"

BACKSPACE="guess"

When using screen, and vi. Using the keypad may result in ^M characters when hitting the enter key. To resolve this, you need to tell, nay, convince screen it's an xterm or behave as an xterm. Create a .screenrc file and put this in there:

term xterm-color
termcapinfo xterm* ti@:te@

or

term xterm256-color
termcapinfo xterm* ti@:te@

The default XFCE keyboard shortcuts can be found via the xfconf-query tool:

xfconf-query -c xfce4-keyboard-shortcuts -l -v | cut -d'/' -f4 | awk '{printf "%30s", $2; print "\t" $1}' | sort | uniq

                     above_key  F12
             add_workspace_key  Insert
                                F2
                                F3
                    cancel_key  Escape
              close_window_key  F4
     cycle_reverse_windows_key  Tab
             cycle_windows_key  Tab
             del_workspace_key  Delete
                      down_key  Down
            down_workspace_key  Down
                      exo-open  colon
                      exo-open  XF86Mail
                      exo-open  XF86WWW
                fullscreen_key  F11
               hide_window_key  F9
                      left_key  Left
            left_workspace_key  Left
              lower_window_key  Page_Down
           maximize_window_key  F10
               move_window_key  F7
          move_window_left_key  Left
move_window_next_workspace_key  End
move_window_prev_workspace_key  Home
         move_window_right_key  Right
            move_window_up_key  Up
   move_window_workspace_1_key  KP_1
   move_window_workspace_2_key  KP_2
   move_window_workspace_3_key  KP_3
   move_window_workspace_4_key  KP_4
   move_window_workspace_5_key  KP_5
   move_window_workspace_6_key  KP_6
   move_window_workspace_7_key  KP_7
   move_window_workspace_8_key  KP_8
   move_window_workspace_9_key  KP_9
                popup_menu_key  space
              raise_window_key  Page_Up
             resize_window_key  F8
                     right_key  Right
           right_workspace_key  Right
              show_desktop_key  d
              stick_window_key  F6
             switch_window_key  Tab
                     systemctl  Pause
                          true  override
                        up_key  Up
              up_workspace_key  Up
              workspace_10_key  F10
              workspace_11_key  F11
              workspace_12_key  F12
               workspace_1_key  F1
               workspace_2_key  F2
               workspace_3_key  F3
               workspace_4_key  F4
               workspace_5_key  F5
               workspace_6_key  F6
               workspace_7_key  F7
               workspace_8_key  F8
               workspace_9_key  F9
               xfce4-appfinder  F2
               xfce4-appfinder  F3
        xfce4-display-settings  p
        xfce4-display-settings  XF86Display
  xfce4-popup-applicationsmenu  F1
           xfce4-screenshooter  s
                     xfdesktop  Escape
                       xflock4  Delete
                       xflock4  l

If you want to change some of the keys, typically for instance the multimedia keys, you can create your own .Xmodmap and load that from your .xsessionrc file. To print the current keyboard mapping:

xmodmap -pke

The Xfce FAQ has some interesting info on how to easily detect the keys:

xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

Pressing the audio related multimedia keys on my end produces this output:

173 XF86AudioPrev
172 XF86AudioPlay
174 XF86AudioStop
171 XF86AudioNext
121 XF86AudioMute
122 XF86AudioLowerVolume
123 XF86AudioRaiseVolume

Put these in a .Xmodmap file:

keycode 172 = XF86AudioPlay
keycode 174 = XF86AudioStop
keycode 121 = XF86AudioMute
keycode 173 = XF86AudioPrev
keycode 171 = XF86AudioNext
keycode 123 = XF86AudioRaiseVolume
keycode 122 = XF86AudioLowerVolume

To load the .Xmodmap, edit or create your .xsessionrc file:

vi ~/.xsessionrc

When creating documents, screenshots are handy. In the keyboard settings of Xfce, you can set keyboard shortcuts. Add a shortcut. The program is called xfce4-screenshooter. Set a key combination to call the screenshooter. I use Ctrl+Alt+S

9. Mouse

A lot of decent info on the site of Xah Lee

Buttons

By default the mouse and keyboard work. Until you have a more sophisticated device. Enter the "Evoluent VerticalMouse 4". You can customize it's buttons or functions. To see what buttons are what, use xev. Start it and click on each button and see what the info says.:

xev
... mouse movement, click

ButtonRelease event, serial 37, synthetic NO, window 0x3400001,
    root 0x2a7, subw 0x3400002, time 26415005, (54,35), root:(2845,497),
    state 0x200, button 2, same_screen YES

You see the button I clicked (the middle one) was identified as button 2. Ha, now we are getting somewhere. But wait. How does the numbering work? Each mouse button is assigned a number.:

1 = left button
2 = middle button
3 = right button
4 = use scroll wheel up
5 = use scroll wheel down
6 = push scroll wheel left
7 = push scroll wheel right
8 = 4th button / browser backward button
9 = 5th button / browser forward button

Those are the default buttons in X. You can change the behaviour. For instance, on the Evoluent mouse, the bottom thumb key, is identified as button 10. I would like button 10 to behave as the default button 9 so I need to remap that. When I click with the scroll wheel, that is identified as button 9.

We will also need to identify the device and the id it gets from the system. Use lsusb to do this. On my system:

lsusb
...
Bus 003 Device 005: ID 1a7c:0191 Evoluent VerticalMouse 4

You can use xinput to test remap the buttons. But first let's see if xinput also sees the device as "Evoluent VerticalMouse 4".:

xinput --list
⎡ Virtual core pointer                              id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                    id=4    [slave  pointer  (2)]
⎜   ↳ Kingsis Peripherals Evoluent VerticalMouse 4  id=8    [slave  pointer  (2)]

Nope, it's a "Kingsis Peripherals Evoluent VerticalMouse 4" as far as xinput is concerned.:

xinput set-button-map "Kingsis Peripherals Evoluent VerticalMouse 4" 1 2 3 4 5 6 7 8 2 9 11 12 13 14

This makes clicking button 10 go forward when navigating. Clicking the scroll wheel is button 9 in our case, we have set it to be the same as clicking button 2. If you want to disable a button, just put 0 there. Instead of using xinput all the time, put the config here:

vi /usr/share/X11/xorg.conf.d/90-evoluent.conf

Section "InputClass"
    Identifier "Evoluent"
    MatchUSBID "1a7c:0191"
    Option "ButtonMapping" "1 2 3 4 5 6 7 8 2 9 11 12 13 14"
EndSection

Movement speed

Another thing one may want to customize, is the scrolling speed. Before you can set it, you need to know the capabilities of the device.:

xinput list-props "Kingsis Peripherals Evoluent VerticalMouse 4"

Device 'Kingsis Peripherals Evoluent VerticalMouse 4':
    Device Enabled (152):   1
    Coordinate Transformation Matrix (154): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Accel Speed (290): 0.000000
    libinput Accel Speed Default (291): 0.000000
    libinput Accel Profiles Available (292):    1, 1
    libinput Accel Profile Enabled (293):   1, 0
    libinput Accel Profile Enabled Default (294):   1, 0
    libinput Natural Scrolling Enabled (295):   0
    libinput Natural Scrolling Enabled Default (296):   0
    libinput Send Events Modes Available (275): 1, 0
    libinput Send Events Mode Enabled (276):    0, 0
    libinput Send Events Mode Enabled Default (277):    0, 0
    libinput Left Handed Enabled (297): 0
    libinput Left Handed Enabled Default (298): 0
    libinput Scroll Methods Available (299):    0, 0, 1
    libinput Scroll Method Enabled (300):   0, 0, 0
    libinput Scroll Method Enabled Default (301):   0, 0, 0
    libinput Button Scrolling Button (302): 2
    libinput Button Scrolling Button Default (303): 2
    libinput Middle Emulation Enabled (304):    0
    libinput Middle Emulation Enabled Default (305):    0
    Device Node (278):  "/dev/input/event0"
    Device Product ID (279):    6780, 401
    libinput Drag Lock Buttons (306):   <no items>
    libinput Horizontal Scroll Enabled (307):   1

No let's try to set the acceleration:

xinput --set-prop "Kingsis Peripherals Evoluent VerticalMouse 4" "libinput Accel Speed" 1

If you try a value the device can't handle, xinput will tell you:

xinput --set-prop "Kingsis Peripherals Evoluent VerticalMouse 4" "libinput Accel Speed" 2

X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  131 (XInputExtension)
  Minor opcode of failed request:  57 ()
  Value in failed request:  0x122
  Serial number of failed request:  20
  Current serial number in output stream:  21

To enable these settings the next time you login, set the xinput command line in your ~/.xsessionrc.

Set Accelerated Mouse Wheel Scroll Speed

The scroll wheel still seems slow. That's where auto scrolling can be of help. In Firefox you can set the mousewheel acceleration via the about:config command. In the URL bar, type about:config and press Enter.:

set mousewheel.acceleration.start to 2
set mousewheel.acceleration.factor to 20

This settings takes immediate effect.

Set autoscroll

Another handy feature, usually enabled by clicking the mouse wheel. As with the previous setting, go to the URL bar and type about:config. Type “autoscroll”:

set general.autoScroll to true.

By now, we have changed the mouse movement speed, remapped buttons and enabled accelerated and autoscroll in Firefox.

10. Hide drives

When you view the Xfce desktop, you might notice it puts icons on there for device not yet mounted. To hide these all, you can right click on the desktop, desktop settings, 3rd tab (icons). There you will find an option at the bottom "Standard icons" where you can deactivate "Removable devices".

However, plugging in a USB device will not show up on the desktop anymore and that might be a problem for some people. A workaround is to put these devices in /etc/fstab and mount them. The result is the icons won't show up anymore. It's not an ideal solution or a solution that I consider to be correct but it does the job until I find another solution. Here is an example, from the bottom of my /etc/fstab:

# Hide drives from the desktop
UUID="e6f2b0b5-2f8d-48ea-88a7-f256ca8a224f" /mnt/hidden_drives/vg1_root ext4 ro,nofail,noauto 0 0
UUID="7b0d616e-3b88-4059-b416-892c5f175679" /mnt/hidden_drives/vg1_home ext4 ro,nofail,noauto 0 0
UUID="8ab73b18-4266-480b-b2ba-9bfd4beb29d5" /mnt/hidden_drives/vg1_usr  ext4 ro,nofail,noauto 0

To do this, you need to make a directory where the drives can be mounted. You also need to specify the UUID of the drive. Use lsblk and blkid for this purpose. lsblk makes it easier to identify drives:

lsblk

...
sdc                      8:32   0   1,8T  0 disk
├─sdc1                   8:33   0   550M  0 part
├─sdc2                   8:34   0 111,8G  0 part
│ ├─VG1-root           254:0    0   4,7G  0 lvm   /mnt/hidden_drives/vg1_root
│ ├─VG1-home           254:1    0  37,3G  0 lvm   /mnt/hidden_drives/vg1_home
│ ├─VG1-usr            254:2    0    28G  0 lvm   /mnt/hidden_drives/vg1_usr
│ ├─VG1-var            254:3    0  18,6G  0 lvm   /mnt/hidden_drives/vg1_var
│ ├─VG1-tmp            254:4    0   1,9G  0 lvm   /mnt/hidden_drives/vg1_tmp
│ └─VG1-swap           254:5    0  16,9G  0 lvm
└─sdc3                   8:35   0   1,7T  0 part  /mnt/hidden_drives/d_drive

Next find the UUID with blkid:

/dev/sdc1: LABEL="ESP" UUID="349C-9154" TYPE="vfat" PARTUUID="c3d12ec0-45d1-4928-8a7d-dc9111b7fc33"
/dev/sdc2: UUID="H6X32z-CndQ-sPaD-8iXp-App3-tG1T-G13DQH" TYPE="LVM2_member" PARTUUID="b1db876b-ef46-4196-8dfd-88bfe4a7f1b2"
/dev/sdc3: LABEL="Data" UUID="093D26266F7EAD0A" TYPE="ntfs" PARTUUID="c877664b-6a9b-4bfa-9349-61070cbc4f8a"
/dev/mapper/VG1-root: LABEL="root" UUID="e6f2b0b5-2f8d-48ea-88a7-f256ca8a224f" TYPE="ext4"
/dev/mapper/VG1-home: LABEL="home" UUID="7b0d616e-3b88-4059-b416-892c5f175679" TYPE="ext4"
/dev/mapper/VG1-usr: LABEL="usr" UUID="8ab73b18-4266-480b-b2ba-9bfd4beb29d5" TYPE="ext4"
/dev/mapper/VG1-var: LABEL="var" UUID="92109b3d-3039-49d4-b018-10d2011813ad" TYPE="ext4"
/dev/mapper/VG1-tmp: LABEL="tmp" UUID="fe8c6253-eed3-473a-9f2a-e1333a091acb" TYPE="ext4"

Now use the UUID in fstab and the drives won't show up anymore.

11. Power management

You can set the screensaver and other power management settings in the Xfce power manager panel. Putting your system in a suspended state with systemctl:

systemctl suspend

After waking the system back up, I was greeted by a black screen. I had to open a console, kill Xorg and log back in.

The first thing you could try is add a setting to grub:

vi /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT=”libata.noacpi=1 quiet″

The quiet parameter is there by default. I tried it, still no luck. Suspending the system ends in my screens not coming up again. Boohoo.

I checked the power management settings again, and on the last tab "Security", it says "Lock screen when the system is suspended". I unchecked the box, tried suspending the system and it worked, 'puter came back on.

Another thing you could try is to disable the energy star features. In my case, this was not necessary. To do so, use xset:

xset -dpms

Put this command in the .xsessionrc. Sometimes, depending on the window manager, certain .x files might not be run as they might look for other files. To work around this, link to your .xsessionrc that contains all the info.

12. Clock

I customized the clock on the top bar to also display the day and date. Right click on it, settings and in the text field below enter this:

%R %a %d/%m/%Y

After all this, I'll continue with installing Nvidia and Steam on the machine. That should be fun fa-smile fa-2x green