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.
InstallBoot 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.cfgIf 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.cfgand then set one of them; e.g.
grub2-set-default 'Fedora (3.12.9-301.fc20.x86_64) 20 (Heisenbug)'
Trackpoint
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" EndSectionAlternatively you can use this script:
#!/bin/sh xinput list | sed -ne 's/^[^ ][^V].*id=\([0-9]*\).*/\1/p' | while read id do 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 ;; esac done # 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
- Applications > Settings > Settings Manager
- Window Manager > Keyboard
- Scroll to "Workspace N" (for N in {1,2,3,4})
- Select each and enter your preference; e.g. <Super>1
Window Manager Tweaks
Under Settings > Window Manager, I prefer the following:- Focus > Focus model > Focus follows mouse
- Style > Meenee
- Style > Button Layout > Hide Everything except Maximize and Close
- Advanced > Double Click Action > Shade Window
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
Emacs
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 Firefoxxfconf-query -c xsettings -p /Gtk/KeyThemeName -s Emacs echo "gtk-key-theme-name = \"Emacs\"" > ~/.gtkrc-2.0
.Xdefaults
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 #!/bin/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 #!/bin/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]$
Puppet
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 /etc/yum.repos.d [root@kreacher yum.repos.d]# cat puppet.repo [Puppet] name=Puppet baseurl=http://yum.puppetlabs.com/fedora/f20/products/x86_64/ gpgcheck=0 [Puppet_Deps] name=Puppet Dependencies baseurl=http://yum.puppetlabs.com/fedora/f20/dependencies/x86_64/ gpgcheck=0 [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 ^C
Because this is a laptop I am not configuring puppet as a deamon
/bin/systemctl stop puppet.service /bin/systemctl disable puppet.serviceBut 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.