The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Wim42gnu's-setup
This is for everybody who might have seen my funtoo setup and liked it! This is also for myself to keep track on my system. I have used most of the Linux distributions out there and I am currently most happy with funtoo. My reasons are:
- Gentoo/Funtoo is a rolling release distribution, meaning you only have to install it once and update it frequently.
- Gentoo/Funtoo is only what you make out of it, no unnesecary rubish like in Ubuntu, OpenSuse or Fedora will be installed by default. In the mean time being aware that Gentoo/Funtoo is for advanced users not careing that much about GUIs for Settings or Configs.
- Gentoo/Funtoo runs fast due to multiple reasons. (Compiling your own software,USE-Flags,...)
- Philosophy, one would think that Slackware would suite me most (KISS,Unix) but the fact is that these distributions require you more energy and time to work with. I want to get my jobs done, not careing to much about the system. It is okay to have tools that do things for you as long they are designed well - like in funtoo.
1. Install Funtoo (not complete yet - I will update this part when I install funtoo the next time)
Follow the install instructions and setup a minimal system.http://www.funtoo.org/Funtoo_Linux_Installation
Notice you will need to create/edit some configs in the installation prozess. Here are some of mine customizations:
a) /etc/portage/make.conf
:
CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer" CXXFLAGS="${CFLAGS}" CPU_FLAGS_X86="aes avx fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop"
for the CPU Flags checkout: http://www.funtoo.org/News:CPU_FLAGS_X86
USE="qt3support theora libkms xa cdr dvd dvdr alsa ffmpeg -gnome gtk -qt4 -kde lm_sensors mp3 mp4 mozilla multilib png python sound udev usb unicode static-libs hddtemp -bluetooth nvidia X pulseaudio udisks"
EMERGE_DEFAULT_OPTS="--keep-going" FEATURES="-collision-protect ccache" CCACHE_SIZE="1G" PORTAGE_NICENESS=20 PORTAGE_IONICE_COMMAND="ionice -c 3 -p \${PID}" #EMERGE_DEFAULT_OPTS="--jobs=12" MAKEOPTS="-j12" <--- Number of CPU cores *2 in my case works best.
LANG="de_DE.UTF-8" LINGUAS="de" ACCEPT_LICENSE="* -@EULA" INPUT_DEVICES="evdev" VIDEO_CARDS="nvidia"
b) /etc/fstab
# /etc/fstab: static file system information. # # The root filesystem should have a pass number of either 0 or 1. # All other filesystems should have a pass number of 0 or greater than 1. # # NOTE: If your BOOT partition is ReiserFS, add the notail option to opts. # # See the manpage fstab(5) for more information. # # <fs> <mountpoint> <type> <opts> <dump/pass>
/dev/sda1 /boot ext2 noauto,noatime 1 2 #/dev/cdrom /mnt/cdrom auto noauto,ro 0 0 /dev/mapper/vg-swap none swap sw 0 0 /dev/mapper/vg-root / ext4 noatime,nodiratime,defaults 0 1 /dev/sr0 /mnt/cdrom auto noauto,ro 0 0 /dev/mapper/vg-home /home ext4 noatime,nodiratime 0 0 tmpfs /var/tmp/portage tmpfs uid=portage,gid=portage,mode=0775,size=16048M,noatime 0 0
for tmpfs see: http://www.funtoo.org/Funtoo_Filesystem_Guide,_Part_3
c) Since I have an encrypted LVM, one needs an initramfs. I prefer the genkernel method.
genkernel --kernel-config=/path/to/your/custom-kernel-config --no-mrproper --makeopts=-j5 --install --lvm --luks all
more here: http://www.funtoo.org/Rootfs_over_encrypted_lvm or use better-initramfs: http://www.funtoo.org/Initramfs
d) My Funtoo Profiles:
eselect profile show Currently set profiles: arch: gentoo:funtoo/1.0/linux-gnu/arch/x86-64bit build: gentoo:funtoo/1.0/linux-gnu/build/current flavor: gentoo:funtoo/1.0/linux-gnu/flavor/desktop mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/audio mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/console-extras mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/dvd mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/media mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/X Automatically enabled profiles: mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/print mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/X mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/audio mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/dvd mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/media mix-ins: gentoo:funtoo/1.0/linux-gnu/mix-ins/console-extras
2. Install your WindowManager or DesktopEnviroment
My favourite Window Manager at the time is i3 followed by xfce and openbox. Details about i3 & funtoo → http://www.funtoo.org/Package:I3_(Window_Manager) i3 setup:
1) install these packages:
emerge --ask i3 i3status dmenu lxappearance
If you want to know what these packages are research them. I use lxappeareance to install and select gtk-themes.
Config files:
1. xinitrc at ~/.xinitrc
exec ck-launch-session i3
You only need --force-xinerama if you do have a nvidia grafics card that do not work without it. For more startx
magic → https://wiki.archlinux.org/index.php/xinitrc
2. ~/.i3/config
specify window colors at the top of the file:
# class border backgr. text indicator client.focused #333333 #000000 #ffffff #000000 client.focused_inactive #333333 #5f676a #ffffff #484e50 client.unfocused #333333 #222222 #888888 #292d2e client.urgent #333333 #900000 #ffffff #900000
specify the bar/workspace colors at the bottom of the file:
bar { status_command i3status # Bar color settings colors{ #background #000000 #statusline #ffffff #separator #666666 # Type border background font focused_workspace #008fff #007fff #ffffff active_workspace #333333 #5f676a #ffffff inactive_workspace #333333 #222222 #888888 urgent_workspace #aa0000 #990000 #ffffff } }
Do not forget the keymap setting at /etc/X11/xorg.conf
otherwise you need to use setxkbmap
Section "InputClass" Identifier "keyboard-all" Driver "evdev" MatchIsKeyboard "on" Option "XkbLayout" "de" EndSection
3. A better status bar
For a more advanced user experience, we can use conky with json
instead of i3status
a) using only conky without the advantages of json.
1. create a conky file
~/.conkyrc
## No output to X <yes/no>
out_to_x no
## Create own window to draw <yes/no> own_window no
## Print everything to console? out_to_console yes
## Use double buffering (reduces flicker, not needed for console output) double_buffer no
## Set to yes if you want Conky to be forked in the background background no
## Update interval in seconds update_interval 2.0
## This is the number of times Conky will update before quitting. ## Set to zero to run forever. total_run_times 0
## Shortens units to a single character (kiB->k, GiB->G, etc.). Default is off. short_units yes
## How strict should if_up be when testing an interface for being up? ## The value is one of up, link or address, to check for the interface ## being solely up, being up and having link or being up, having link ## and an assigned IP address. if_up_strictness address
## Add spaces to keep things from moving about? This only affects certain objects. ## use_spacer should have an argument of left, right, or none use_spacer left
## Force UTF8? note that UTF8 support required XFT override_utf8_locale no
## number of cpu samples to average ## set to 1 to disable averaging cpu_avg_samples 6
## Sensors examples # Top Process: ${top name 1} # Root: {fs_used /}/${fs_size /} /home ${fs_free /home} /${fs_size /home} # Load: ${loadavg 1} ${loadavg 2} ${loadavg 3} # Load: $loadavg # Swap: ${swap}/${swapmax} (${swapperc}%) # Processes: ${running_processes} / ${processes} # CPU: $cpu% # HDD: $diskio_read :Read $diskio_write :Write # Temp: Core0: ${exec sensors | awk '/Core 0/ {print $3}'} Core1: ${exec sensors | awk '/Core 1/ {print $3}'} # Freq: ${freq cpu0}Mhz # Uptime: $uptime # Kernel:$kernel on $machine # Name: $nodename - $sysname # Battery: ${battery_percent BAT0}%
## Stuff after 'TEXT' will be formatted on screen TEXT /home ${fs_free /home} | \ /root ${fs_free /root} | \ ${if_up eth0}eth0 ${addr eth0} | ${endif}\ ${if_up wlan0}wlan0 ${addr wlan0} | ${endif}\ CPU ${cpu cpu1}% ${freq_g 1}GHz | \ RAM ${memperc}% | \ Load $loadavg | \ Uptime $uptime | \ Kernel $kernel on $machine | \
make sure the file is executable (you need to be root - use su or sudo).
chmod +x ~/.conkyrc
You need to tell i3 to use conky (~/.i3/config
):
... bar { status_command conky -c ~/.conkyrc ...
be sure that you have conky installed and then reload i3 alt or windows key+shift+r
b) using conky and json for the best experience.
we need a wrapper script to be able to use json
~/.i3bar-conky
you can copy this 1:1
#!/bin/sh # Send the header so that i3bar knows we want to use JSON: echo '{"version":1}'
# Begin the endless array. echo '['
# We send an empty first array of blocks to make the loop simpler: echo '[],'
# Now send blocks with information forever: exec conky -c $HOME/.conkyrc
just make sure the .conkyrc path is okay.
make sure the file is executable (you need to be root - use su or sudo).
chmod +x ~/.i3bar-conky
You need to tell i3 to use conky (~/.i3/config
):
... bar { status_command $HOME/.i3bar-conky ...
like in a) create now a ~/.conkyrc file
You only have to change the text after the keyword TEXT to suite JSON.
Here my example:
## Stuff after 'TEXT' will be formatted on screen TEXT [{ "full_text" : "/home ${fs_free /home} " , "color" : "\#ffffff" }, { "full_text" : "/root ${fs_free /root} " , "color" : "\#ffffff"}, { "full_text" : "${if_up eth0}eth0 ${addr eth0} ${endif} " ,"separator": false, "color" : "\#ffffff"}, { "full_text" : "${if_up wlan0}wlan0 ${addr wlan0} ${endif} " , "color" : "\#ffffff"}, { "full_text" : "CPU ${cpu cpu1}% ${freq_g 1}GHz " , "color" : "\#ffffff"}, { "full_text" : "RAM ${memperc}% " , "color" : "\#ffffff"}, { "full_text" : "Load $loadavg " , "color" : "\#ffffff"}, { "full_text" : "Uptime $uptime " , "color" : "\#ffffff"}, { "full_text" : "Kernel $kernel on $machine " , "color" : "\#ffffff"}, { "full_text" : "${time %H:%M} , ${time %a %d.%m.%y} " , "color" : "\#ffffff"} ],
be sure you did not miss anything from a) and reload i3 alt or windows key+shift+r
4. Display Power Management Signaling
a) You can either use XScreenSaver(https://wiki.archlinux.org/index.php/XScreenSaver):
emerge -a xscreensaver
and add /usr/bin/xscreensaver -no-splash &
to your ~/.xinitrc
file:
xscreensaver -no-splash & # starts screensaver daemon exec ck-launch-session i3 --force-xinerama
or b) modifi your Xorg server (https://wiki.archlinux.org/index.php/Display_Power_Management_Signaling).
5. Note:
I login without a login manager using startx
to start my Window Manager, you can end/exit your i3 wm via alt or windows key + shift + e
6. Background Image Viewer
a) Feh
emerge -a feh
~/.xinitrc
:
feh --bg-center <path>/<image>.png
more options → https://wiki.archlinux.org/index.php/Feh#As_a_desktop_wallpaper_manager
b) Nitrogen(GUI Programm)
emerge -a nitrogen
~/.xinitrc
:
exec --no-startup-id nitrogen --restore
3. Additional Software:
1) File Manager:
emerge --ask thunar
thunar - filemanager that supports automounting
Make sure you create this rule: /etc/polkit-1/rules.d/10-drives.rules
polkit.addRule(function(action, subject) { if (action.id.indexOf("org.freedesktop.udisks2.") == 0){ return polkit.Result.YES; } } );
Also you should have udisk
installed
2) media-video/smplayer:
allow smplayer always to floate, just add
for_window [class="smplayer" instance="smplayer"] floating enable
to your ~/.i3/config
3) Internet Browser
I recommend
www-client/chromium
or www-client/google-chrome
see for more info: http://www.funtoo.org/Funtoo_Linux_Web_Browsers
Addons: 1) Adblock 2) uMatrix 3) StayFocused 4) WebRTC Block
n) usefull software
app-arch/file-roller app-editors/bluefish app-emulation/wine app-misc/freemind app-office/libreoffice app-portage/eix mail-client/thunderbird media-gfx/blender media-gfx/gimp media-sound/audacity media-video/kdenlive
media-video/vlc
net-analyzer/wireshark
net-ftp/filezilla
sys-apps/lm_sensors
virtual/jre
app-text/evince
app-text/calibre
app-emulation/virtualbox