Fedora 20 Configuration Notes

I use the Fedora XFCE Spin. XFCE runs well on older hardware. I have somewhat modern hardware (Thinkpad X230 with 16G RAM, SSD, i7) but prefer XFCE since I think it's a good balance of minimalism and usability. I will likely update this page every six months for each new Fedora release.


Boot from the XFCE spin live-desktop CD and click install. I am partitioned as follows and using the XFS filesystem on top of LVM. Reboot.

Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/fedora-root   50G   37G   14G  73% /
devtmpfs                 7.7G     0  7.7G   0% /dev
tmpfs                    7.7G   11M  7.7G   1% /dev/shm
tmpfs                    7.7G  1.2M  7.7G   1% /run
tmpfs                    7.7G     0  7.7G   0% /sys/fs/cgroup
tmpfs                    7.7G   48K  7.7G   1% /tmp
/dev/sda1                477M  131M  318M  30% /boot
/dev/mapper/fedora-home   58G   20G   38G  35% /home

Install My Favorite Packages

yum -y install \
xterm xlockmore xorg-x11-fonts-misc \ 
vim emacs aspell-en \
firefox thunderbird \
spice-xpi \ 
patch subversion git \
python3 \ 
mupdf wget \
sysstat iftop \
irssi vpnc \ 
rpm-build \ 
wmctrl \
kvm virt-manager libvirt libvirt-python python-virtinst  

Enable verbose boot

Remove "quiet rhgb" from /etc/default/grub and then run:

grub2-mkconfig > /boot/grub2/grub.cfg
If you install a new kernel and want to see which will be the default run the following:
[root@kreacher ~]# grub2-editenv list
saved_entry=Fedora (3.13.5-200.fc20.x86_64) 20 (Heisenbug)
[root@kreacher ~]# 
If you want to change this, then look for other options by running
grep menuentry /boot/grub2/grub.cfg
and then set one of them; e.g.
grub2-set-default 'Fedora (3.12.9-301.fc20.x86_64) 20 (Heisenbug)'


To get the IBM "eraser" mouse working, create the file /etc/X11/xorg.conf.d/20-trackpoint.conf and populate it with the following and then restart X.

    Section "InputClass"
    Identifier "Trackpoint Wheel Emulation"
    MatchProduct "TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint"
    MatchDevicePath "/dev/input/event*"
    Option "EmulateWheel" "true"
    Option "EmulateWheelButton" "2"
    Option "EmulateWheelInertia" "10"
    Option "EmulateWheelTimeout" "190"
    Option "Emulate3Buttons" "false"
    Option "XAxisMapping" "6 7"
    Option "YAxisMapping" "4 5"
Alternatively you can use this script:
xinput list | sed -ne 's/^[^ ][^V].*id=\([0-9]*\).*/\1/p' | while read id
        case `xinput list-props $id` in
        *"Middle Button Emulation"*)
                xinput set-int-prop $id "Evdev Wheel Emulation" 8 1
                xinput set-int-prop $id "Evdev Wheel Emulation Button" 8 2
                xinput set-int-prop $id "Evdev Wheel Emulation Timeout" 8 200
                xinput set-int-prop $id "Evdev Wheel Emulation Axes" 8 6 7 4 5
                xinput set-int-prop $id "Evdev Middle Button Emulation" 8 0

# disable middle button 
#xmodmap -e "pointer = 1 9 3 4 5 6 7 8 2"

Remap capslock to control

Settings > Session and Startup > Application Autostart > Add+

Give it a name and for the command supply:

/usr/bin/setxkbmap -option "ctrl:nocaps"

Workspace Switching Shortcuts

Window Manager Tweaks

Under Settings > Window Manager, I prefer the following:

Also, disable automatic tiling of windows on border: Settings Manager (xfce4-settings-manager) > Window Manager Tweaks > Accessibility > Uncheck Automatically tile windows when moving toward the screen edge

Update Suspend to RAM Preferences

Settings > Power Manager > General > When Power Button is Pressed > Suspend


I have my own dot_emacs which I have tweaked through the years. I then check out whatever modules I need using git into a directory called elisp.
wget -i .emacs http://fultonj.xen.prgmr.com/dot_emacs
mkdir ~/elisp
cd ~/elisp
git clone http://github.com/puppetlabs/puppet-syntax-emacs.git

Emacs key bindings

Enable them for XFCE and then Firefox
xfconf-query -c xsettings -p /Gtk/KeyThemeName -s Emacs
echo "gtk-key-theme-name = \"Emacs\"" > ~/.gtkrc-2.0


My .Xdefaults file:
xpdf*antialias:         yes
xpdf*foreground:        black
xpdf*background:        grey
xpdf*urlCommand:        /usr/bin/firefox %s

*background:    black
*foreground:    green
XTerm*utf8: 1
xterm*savesLines: 10000

Monitor Configurations

I plug my ThinkPad into Lenovo UltraBase 3 0A33932 Docking Station which has a VGA monitor port and Display Port. I run the Display Port into a DVI converter so I can drive two monitors when working at home. I use ARandR to control my screen layouts.

yum install arandr libXrandr libXrandr-devel

I have two layout scripts that I run depending on what I need to do. one_extra.sh is for a VGA mirror of my laptop's screen if I'm doing a presentation. Usually I run two_extra.sh when working from home with two monitors.

[jfulton@kreacher bin]$ cat one_extra.sh 
xrandr --output DP3 --off --output DP2 --off --output DP1 --off --output HDMI3 --off --output HDMI2 --off --output HDMI1 --off --output LVDS1 --mode 1366x768 --pos 0x0 --rotate normal --output VGA1 --mode 1280x1024 --pos 1366x0 --rotate normal
[jfulton@kreacher bin]$ 

[jfulton@kreacher bin]$ cat two_extra.sh 
xrandr --output DP3 --off --output DP2 --off --output DP1 --off --output HDMI3 --off --output HDMI2 --mode 1280x1024 --pos 0x0 --rotate normal --output HDMI1 --off --output LVDS1 --off --output VGA1 --mode 1280x1024 --pos 1280x0 --rotate normal
[jfulton@kreacher bin]$ 


Some of the configurations on my laptop are manged by a Puppet server. I configure my workstation as a puppet client by using Puppet Labs own repo.

[root@kreacher yum.repos.d]# pwd
[root@kreacher yum.repos.d]# cat puppet.repo 

name=Puppet Dependencies
[root@kreacher yum.repos.d]# 
Use this new Puppet repo to install puppet and facter. You will also need ruby, which will come from Fedora's repo.
yum install ruby ruby-libs puppet facter

If applicable, on the puppet server delete the old certificate with "puppet cert clean kreacher.example.com" and make sure "/etc/puppet/node.rb kreacher.example.com" returns an entry from the Foreman ENC (These are my notes and I am assuming I am going to set the same Foreman entry).

Add "server=puppet.example.com" to /etc/puppet/puppet.conf and then connect to the Puppet server.

[root@kreacher ~]# puppet agent --server=puppet.example.com --no-daemonize --verbose 
Info: Creating a new SSL key for kreacher.example.com
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for kreacher.example.com
Info: Certificate Request fingerprint (SHA256): ****
Info: Caching certificate for ca

Sign the certificate from the Puppet server.

[root@puppet ~]# puppet cert --list
  "kreacher.example.com" (SHA256) ****
[root@puppet ~]# puppet cert --sign kreacher.example.com
Notice: Signed certificate request for kreacher.example.com
Notice: Removing file Puppet::SSL::CertificateRequest kreacher.example.com at '/var/lib/puppet/ssl/ca/requests/kreacher.example.com.pem'
[root@puppet ~]# 

Observe the signature on the client.

Info: Retrieving plugin
Info: Caching catalog for kreacher.example.com
Info: Applying configuration version '1393104057'
Info: /Stage[main]/Hosts/File[/etc/hosts]: Filebucketed /etc/hosts to puppet with sum 83a6d1eebde946f647f3c47392627419
Notice: /Stage[main]/Hosts/File[/etc/hosts]/content: content changed '{md5}83a6d1eebde946f647f3c47392627419' to '{md5}8d015d4456099207c7c71cbe1dcf5014'
Info: Creating state file /var/lib/puppet/state/state.yaml
Notice: Finished catalog run in 0.04 seconds

Because this is a laptop I am not configuring puppet as a deamon

/bin/systemctl stop puppet.service
/bin/systemctl disable  puppet.service
But if I want the convenience of pulling down new configs I just use
puppet agent --test

One day I might be able to replace a lot of this document with a pointer to my git repo of manifests which configure most of the above; I just haven't found the time yet.