Debian Sid Desktop
From Bit Binary Wiki
Introduction
Debian Sid Desktop is a guide covering installing and configuring Debian Sid for desktop use. It came into existence originally as a dumping ground for things I had learnt or discovered about setting up a Debian Sid desktop, After a while I realised that others may find the information useful.
It is still currently a draft until I have time to tidy it up, items are added and removed as time goes by. Don't expect the documentation to be perfect!
Debian Sid is the unstable branch of Debian and can be considered a close counterpart of Arch Linux in that it is a "rolling release".
This document isn't for everyone and unless you have medium to advanced knowledge of Debian I would probably recommend against following this guide and instead use Ubuntu or another "hand holding" distribution. CrunchBang Linux is an excellent choice if you want the stability of Debian but want exposure to the command line and uses the excellent Openbox window manager. It has friendly forums with plenty of passionate Debian/Crunchbang users to help you.
You should update any HIGHLIGHTED TEXT with your configuration where necessary.
Installation
Outline
Installing Debian Sid is not simple and it's entirely possible that your install will fail depending on the business card installer release you end up using. This is simply because the daily and weekly installer release is in testing and may contain bugs which cause it to fail. Having said that, I have installed Debian Sid a few times using various testing releases and it has worked fine - YMMV.
Install Media
This part relies on you, the user, to decide which install media you want to use to install Debian Sid. The installer has to be a business card ISO as it provides the option to install Debian Sid. You can either choose the latest stable Debian release or the daily built images of Debian testing below.
debian-testing-i386-businesscard.iso
debian-testing-amd64-businesscard.iso
I have not tried it, but there is an option of using the installer build from Sid.
More information can be found at the Daily Builds page.
Install Process
Sometimes I hear people knock the Debian installer (typically anyone who cannot understand a computer without a GUI), I have yet to find a Linux installer that has the flexibility or power of the Debian installer - it's excellent! The process assumes the AMD64 installer. other architectures will need to make relevant adjustments where necessary.
Once you have booted the installer select Advanced options, then Expert install otherwise you will not be prompted about which release (Stable, Testing or Unstable) to use.
The following is a quick run through.
- Choose Language
- select a language: choose your language
- Select you location: choose you country, territory or area
- Configure locales: select you country to base default locale settings on, typically this will be the UTF-8 variant
- Additional locales: add any additional locales
- System locale: choose the default system locale if you have chosen multiple locales in the previous option
- Select a keyboard layout
- Type of keyboard: choose PC-style (AT or PS-2 connector) keyboard
- Keymap to use: select your keymap
- Detect and mount CD-ROM
- Modules to load: select any modules required
- Load installer components from CD
- Installer components to load: select any components - I leave these empty
- Detect network hardware
- Modules to load: select any modules required
- Configure the network
- Auto-configure with DHCP? Assign IP automatically - typically Yes
- Hostname: set your computers hostname
- Domain Name: Input your local domain name
- Choose a mirror of the Debian archive
- Protocol for file downloads: choose http or ftp
- Debian archive mirror country: choose your country
- Debian Archive mirror: choose your preferred mirror
- HTTP Proxy information (blank for none): insert proxy settings otherwise leave blank
- Debian version to install: sid - unstable
- Set up users and passwords
- Enable shadow passwords? Yes
- Allow login as root? Yes
- Root password: root password and verify
- Create a normal user account now? Yes
- Full name for the new user: Full user name
- Username for your account: username
- Choose a password for the new user: user password and verify
- Configure the clock
- Set the clock using NTP? Yes
- NTP server to use: leave as default and continue
- Select the state or province to set your time zone: select the state or province
- Detect disks
- Modules to load: select any modules required
- Partition disks
- Partitioning method: Manual
- At this point it relies on you to decide upon and configure your disk formatting options.
- I use LVM with an XFS file-system on top of that and have a separate root partition of 8GB, a swap slightly bigger than the physical memory (for laptop hibernation) 2-5GB unallocated for LVM snapshots depending on the size of the disk and the remainder as /home.
- I format the partitions with the following mkfs.xfs arguments.
mkfs.xfs -l internal,size=128m -d agcount=16 /dev/mapper/vg00-root
- Once booted into the system I update the /etc/fstab entries as follows:
/dev/mapper/vg00-root / xfs rw,relatime,attr2,delaylog,nobarrier,inode64,logbufs=8,logbsize=256k,noquota 0 1/dev/mapper/vg00-home /home xfs rw,relatime,attr2,delaylog,nobarrier,inode64,logbufs=8,logbsize=256k,noquota 0 2
- Install the base system (It should then begin downloading the base system packages)
- Kernel to install: choose the latest linux-image-amd64 or your architecture
- Drivers to include in the initrd: generic: include all available drivers
- Configure the package manager
- Use non-free software: Yes
- Select and install software
- Participate in the package usage survey? Yes
- Choose software to install: Un-select all options
- Install the GRUB boot loader on a hard disk
- Install the GRUB boot loader to the master boot record? Yes
- Finish the installation
- Is the system clock set to UTC? No if multibooting with Windows, otherwise Yes
- Installation complete: Continue
Good luck with your install. Hope it works.
Prerequisites
It is assumed that you have created a standard user account and use vi as the default editor.
Preparation
Update and then install an editor, pager, ssh and gpm
apt-get update apt-get install --no-install-recommends ssh vim vim-doc vim-scripts \ vim-addon-manager less tcpd openssh-blacklist openssh-blacklist-extra
If you have another computer handy I would recommend connecting from the other computer via ssh and complete the next few tasks until you have a working desktop at which point you can complete it from the desktop there. Alternatively you could install a text based web browser such as lynx or links2 and copy and paste between consoles using gpm (apt-get install gpm).
Hostname
Edit /etc/hosts substituting the computers hostname where applicable.
127.0.0.1 localhost.localdomain localhost 127.0.1.1 sidbox.example.local sidbox # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Now run...
echo sidbox.example.local > /etc/hostname
invoke-rc.d hostname.sh start
Afterwards check the hostname and fqdn are correct.
hostname
sidbox.example.local
hostname -f
sidbox.example.local
APT Configuration
The aptosid developers recommend apt-get only be used on Debian Sid, more information here.
Raphael Hertzog has a very good blog post about Debian package manager options and recommends aptitude on Debian Testing/unstable, the article can be found here.
aptitude and apt-get will keep track of each other (except for held packages) so you can use both, but you should choose one and stick to it. I use apt-get for software management and aptitude for various things such as the aptitude why command.
Disable Recommends
I don't like recommended packages installing by default so I disable it.
cat > /etc/apt/apt.conf.d/10recommends <<EOF APT ""; APT::Install-Recommends "false"; EOF
The run update apt-get
apt-get update
You can also use the --no-install-recommends option in apt-get to avoid installing recommended packages.
Sources
Where possible I try and use pure Debian sources. Update your sources to use the closest mirrors available to you by reviewing the available Debian mirrors.
If you would like to use my sources you can add them as follows. Edit them to use your closest mirror once downloaded (if your an Internode user in Australia your in luck).
cp /etc/apt/sources.list /etc/apt/sources.list.default wget -O /etc/apt/sources.list "http://www.bitbinary.com/dotfiles/apt_sources.list" wget -O /etc/apt/sources.list.d/unstable.list "http://www.bitbinary.com/dotfiles/apt_source_unstable.list" wget -O /etc/apt/sources.list.d/experimental.list "http://www.bitbinary.com/dotfiles/apt_source_experimental.list"
You may be interested in using aptosid sources, don't bother trying to obtain support from aptosid if you use the sources in this way. Review and update the aptosid sources using the aptosid mirrors.
wget -O /etc/apt/sources.list.d/aptosid.list "http://www.bitbinary.com/dotfiles/apt_source_aptosid.list"
Update apt-get
apt-get update
Install the aptosid keyring if you added their repository (answer y to install without verification).
apt-get install aptosid-archive-keyring
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: aptosid-archive-keyring 0 upgraded, 1 newly installed, 0 to remove and 53 not upgraded. Need to get 9,020 B of archives. After this operation, 69.6 kB of additional disk space will be used. WARNING: The following packages cannot be authenticated! aptosid-archive-keyring Install these packages without verification [y/N]? y
Now do an update and upgrade
apt-get update apt-get dist-upgrade
Some other sources that may be of interest can he found here
Package Tidy Up
I don't use nano which is the default editor. Removing it should set vim as the default.
apt-get purge nano
Then run apt-get autoremove --purge to review any packages no longer required.
apt-get autoremove --purge
Check what packages it wants to remove (if any) and investigate any packages using the following command or Google them.
apt-cache show package-name
Utilities
Now that you have a clean, minimal OS lets install some useful apt tools (and recommended packages), Google them or use apt-cache show if you want to know more.
apt-get install deborphan debfoster apt-file python-apt lsb-release file iso-codes dialog cruft apt-listbugs apt-rdepends reportbug
Then update apt-file
apt-file update
Base Packages And Configuration
Firmware
Install the latest firmware packages to support your hardware. You are free to exclude any you don't need, I just install all of the available firmware.
apt-file update apt-get update apt-get install firmware-linux firmware-linux-nonfree apt-file --package-only search /lib/firmware/ | xargs apt-get install -y
Otherwise install the firmware specific to your computer.
Software
Base software to install.
apt-get install bash-completion htop build-essential module-assistant linux-headers-amd64 psmisc \
tofrodos udisks upower udev consolekit policykit-1 dosfstools fakeroot hdparm ntfs-3g rsync mlocate \
libpam-ck-connector dkms sudo python dialog console-setup-linux bzip2 p7zip rar unrar unzip zip p7zip-full lzop lzip lzma \
ntp fontconfig pciutils lshw hwdata hwinfo syslinux dnsutils sshfs screen telnet bash-doc shared-mime-info lsof
Update your file name database from the locate package. You should run this command before using locate on occasion.
updatedb
Default Editor
Select vim.basic as the default editor assuming you use it.
update-alternatives --config editor
There are 3 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/nano 40 manual mode 2 /usr/bin/vim.basic 30 manual mode 3 /usr/bin/vim.tiny 10 manual mode Press enter to keep the current choice[*], or type selection number: 2
As your standard user you can also export a variable in ~/.bashrc to set vim as the default.
export EDITOR=vim
Users bin folder
The default ~/.profile included with Debian looks for ~/bin and includes it in your path if it exists. This should be where you store any scripts or programs that you want for your standard user account.
su - username
mkdir ~/bin
Bash dot files
Bash configuration I use
NTP
Configure ntp. further information on how to usage and configuration can be found here.
Edit /etc/ntp.conf and after the section # You do need to talk to an NTP server or two (or three). add some ntp servers.
server au.pool.ntp.org server ntp.cs.mu.oz.au
Then restart ntp and check it is connecting to the servers you specified.
invoke-rc.d ntp restart
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
a.pool.ntp.uq.e 132.163.4.101 2 u 3 64 1 59.725 -755.40 0.004
203.171.85.237. .PPS. 1 u 2 64 1 53.822 -763.30 0.004
cachens2.onqnet 209.81.9.7 2 u 1 64 1 55.223 -764.30 0.004
tuppy.intrepidh 173.201.38.85 3 u - 64 1 204.347 -761.36 0.004
lists2.luv.asn. .INIT. 16 u - 64 0 0.000 0.000 0.000
web01-inovait.b .INIT. 16 u - 64 0 0.000 0.000 0.004
X Installation
To install a minimal X server and some desirable fonts run the following.
apt-get install xorg mesa-utils xbase-clients xsel dbus-x11 xfonts-terminus xfonts-terminus-dos \ xfonts-terminus-oblique ttf-mscorefonts-installer gsfonts-x11 ttf-dejavu ttf-liberation \ ttf-freefont ttf-droid libgl1-mesa-dri
Fonts
fontconfig
If you want to change the font configuration such as autohinting, sub pixel rendering or enable bitmap fonts run the following:
dpkg-reconfigure fontconfig-config
Make your changes and then run:
dpkg-reconfigure fontconfig
Console Font
Change the console font as follows
dpkg-reconfigure console-setup
Select: UTF-8 -> Latin1 and Latin5 -> Terminus -> 8x14
Asian Characters
by default, Asian characters are not displayed, if you desire them to be shown regardless of whether you understand any asian language you can do the following. The easiest and most lightweight solution for Chinese Simplified is adding one or both "WenQuanYi" sans serif fonts:
apt-get install ttf-wqy-zenhei ttf-wqy-microhei
Japanese has these and some more:
apt-get install ttf-vlgothic ttf-sazanami-mincho ttf-sazanami-gothic
apt-cache search ttf japanese can be used to search for more.
Korean can be added with
apt-get install ttf-unfonts-core
LCD Text Rendering
libxft2 in Debian does not use the lcdfilter option and therefore fonts (such as the Openbox menu) may look different when compared to GTK apps. This is how to fix that.
cd /usr/local/src
apt-get source libxft2 cd xft-2.2.0/src/ wget "http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/precise/xft/precise/download/head:/100libxft2.1.10lcdfi-20091204214743-wmu4p0kkyg1zkrcr-4/100-libXft-2.1.10-lcd-filter-3.patch" patch -i 100-libXft-2.1.10-lcd-filter-3.patch cd ../ apt-get build-dep libxft2
Now edit debian/changelog and insert this at the beginning - update with your details etc.
xft (2.2.0-3-lcd) unstable; urgency=low
* lcd filter patch.
-- Foo Bar <foo@example.com> Wed, 4 Jan 2012 21:28:11 +1100
Then build the package
dpkg-buildpackage -rfakeroot -uc -b
And install it and the dev package (to avoid any apt dependancy issues).
dpkg -i ../libxft2_2.2.0-3-lcd_amd64.deb ../libxft-dev_2.2.0-3-lcd_amd64.deb
See this link for the original information and some information about compilation errors you may experience if running i386.
Configuration
As your Standard user edit ~/.fonts.conf and add the following to it. Use the file as a template to configure font rendering as desired.
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font">
<edit mode="assign" name="hinting" >
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle" >
<const>hintfull</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="rgba" >
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="antialias" >
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
</match>
</fontconfig>
More information can be found here
Configure Alsa
Install and setup alsa.
apt-get install alsa-base alsa-utils
su - yourusername
alsamixer
Set your volumes, then test and store them. I would recommend muting beep at this point so it saves when you run alsactl. beep is annoying...
aplay /usr/share/sounds/alsa/Front_Center.wav exit alsactl -f /var/lib/alsa/asound.state store
I get annoyed with the pc speaker beeps so I disable the module. Append the following to the file /etc/modprobe.d/alsa-base-blacklist.conf
# stop pcspkr from loading blacklist pcspkr
OSS4 Alternative
I had a go at using OSS, you can read about it here.
Desktop
Window Managers
A Window_Managers article covers installation and configuration of a number of Window Managers. Choose yourself and Window Manager, install it and come back and continue to the rest of this article.
Desktop Components
The following packages provide some useful libraries, utilities and engines.
apt-get install gtk2-engines gtk2-engines-murrine gtk2-engines-pixbuf \ gtk2-engines-aurora lxappearance librsvg2-common qt4-qtconfig \ desktop-base sux dmz-cursor-theme xdg-user-dirs xdg-utils hicolor-icon-theme \ libfile-mimeinfo-perl menu-l10n libgtk2.0-bin
Create your users standard home folders.
su - username
xdg-user-dirs-update
exit
Screen Resize and Rotate
arandr is a simple but flexible xrandr manager and I honestly think it does a better job than any other utility I have used.
apt-get install arandr
Panel
It's arguable that you even need a Panel but if desired tint2 is a good choice.
apt-get install tint2
To start tint2 when logging in to Openbox add the following line to your standard users ~/.config/openbox/autostart
tint2 &
Wallpaper Setter
apt-get install nitrogen
Add the following to ~/.config/openbox/autostart to have nitrogen restore your wallpaper on login.
nitrogen --restore &
Screenshots
apt-get install scrot
To take screenshot's of your desktop with keys PrtScn and ALT+PrtScn for the currently focused window like Microsoft Windows, you can do the following.
mkdir ~/Pictures/Screenshots
Add the following to the <keyboard> section of ~/.config/openbox/rc.xml replacing any existing configurations.
<keybind key="Print"><action name="Execute"><execute>scrot -z -e 'mv $f ~/Pictures/Screenshots/'</execute></action></keybind> <keybind key="A-Print"><action name="Execute"><execute>scrot -z -u -b -e 'mv $f ~/Pictures/Screenshots/'</execute></action></keybind>
Desktop Notifications
Twmn (tiling window manager notification) is a fairly new project that provides a minimalist notification system and works fine on Openbox. You can compile and install it as follows:
apt-get install git cd /usr/local/src git clone https://github.com/sboli/twmn.git cd twmn/ apt-get install qt4-qmake libqt4-dev libboost1.49-dev libdbus-1-dev libxext-dev \ libboost-program-options1.49-dev libboost-system1.49-dev qmake make make install
To start tmwnd when logging in to Openbox add the following line to your standard users ~/.config/openbox/autostart
twmnd &
You will then need to create a ~/.config/twmn/twmn.conf file with your desired settings, this thread on the Crunchbang forums has more information.
If you want more conventional desktop notications then do as follows, make sure you remove notification-daemon as it messes things up
apt-get autoremove --purge notification-daemon
apt-get install notify-osd libnotify-bin
You may like to to install notify-osd from the Crunchbang repo's as it allows for customisation. You will need to add the repository to your apt sources and then install it.
apt-get install -t statler notify-osd
You will will need to place it on hold if you decide to do this otherwise it will be upgraded. Pinning may also prove useful here...
cat > /etc/apt/preferences.d/notify-osd <<EOF Package: notify-osd Pin: release a=statler Pin-Priority: 800 EOF
Screen Locking
apt-get install gnome-screensaver
Clipboard
apt-get install clipit
This should start automatically by means of xdg autostart.
Xdefaults
wget -nc -O ~/.Xdefaults "http://www.bitbinary.com/dotfiles/X_.Xdefaults"
Language Input Methods
The preferred input method application is ibus, we get it with
apt-get install ibus ibus-gtk im-config
This doesn't bring much without the (keyboard) input method itself, this is depending on the language: Chinese pinyin input (most commonly used)
apt-get install ibus-pinyin
Anthy (Japanese)
apt-get install ibus-anthy
Hangul (korean)
apt-get install ibus-hangul
There are many other input methods for tables, they are too many to mention:
apt-cache search ibus-table
After installing, iBus will run as daemon and reside in the systray. We start it with ibus-daemon and configure it: - right-click the icon, choose Properties - in the tab labelled "Input Method" we select the input method(s) and click on "Add" to add them, one after the other. - after closing the window, we need to log out and back to make iBus work.
The daemon needs to be added to the ~/.config/openbox/autostart if not started automatically
ibus-daemon &
In the past, there was another input method called SCIM. It is still available, though its configuration is not as easy as iBus.
References: Language Input by machinebacon on #! forums
Networking
If using a workstation or computer or a machine with a static IP I would recommend using Debian's standard ifupdown or ceni.
Whilst using ceni is fine, if using a laptop network-manager can be convenient.
If desired install as follows:
usermod -a -G netdev youruser
cat > /etc/polkit-1/localauthority/50-local.d/10-org-freedesktop-network-manager-settings.pkla <<EOF [Allow members of netdev to create wireless connections for all users] Identity=unix-group:netdev Action=org.freedesktop.network-manager-settings.system.modify ResultAny=no ResultInactive=no ResultActive=yes EOF
Logout and login again.
apt-get install network-manager-gnome modemmanager dnsmasq-base ppp mobile-broadband-provider-info gnome-bluetooth usb-modeswitch
vi /etc/NetworkManager/NetworkManager.conf
change managed=true in [ifupdown]
invoke-rc.d network-manager restart
check that interfaces in /etc/network/interfaces are commented out.
Add the following to openbox autostart.sh
(sleep 3 && nm-applet --sm-disable) &
To have networking start before the user is logged in ensure "available to all users" is selected in network-manager.
If using KDE4's plasma wigdet then read https://bugs.kde.org/show_bug.cgi?id=209464#c53
Power Management
acpi is deprecated so lets remove it.
apt-get autoremove --purge acpid acpi acpi-support-base
Install the packages required for power management (exclude any you desire if using a desktop computer).
apt-get install pm-utils cpufrequtils wireless-tools ethtool vbetool
If you have a multi-processor or multi-cored CPU's on a laptop then irqbalance can be useful for power saving.
apt-get install irqbalance
Add info about scripts avaialble from source package of pm-utils
Applications
Terminal Emulator: rxvt-unicode
My preferred terminal emulator is rxvt-unicode
apt-get install rxvt-unicode
In order to set it as the default run the following command as root and choose the entry for /usr/bin/urxvt
update-alternatives --config x-terminal-emulator
I have the following in my ~/.Xdefaults
!## urxvt
URxvt.visualBell: false
URxvt.depth: 32
URxvt.fading: 15%
URxvt.fadeColor: #0c0c0c
URxvt.cursorBlink: true
URxvt.shading: 10
URxvt.geometry: 138x40
URxvt.transparent: false
URxvt.saveLines: 32767
URxvt.internalBorder: 5
URxvt.foreground: #b8b8b8
URxvt.background: [80]Black
URxvt.font: xft:liberation mono:pixelsize=11:antialias=true
URxvt.boldFont: xft:liberation mono::bold:pixelsize=11:antialias=true
URxvt.scrollBar: false
URxvt.scrollTtyKeypress: true
URxvt.scrollWithBuffer: false
URxvt.scrollTtyOutput: false
URxvt.cutchars: "()*,<>[]{}|'
URxvt.print-pipe: cat > $(echo urxvt.dump.$(date +'%Y%M%d%H%m%S'))
URxvt.secondaryScroll: true
URxvt.mapAlert: true
URxvt.utmpInhibit: true
URxvt.urlLauncher: iceweasel
URxvt.matcher.button: 1
URxvt.perl-ext-common: default,matcher
!## urxvt colors
!black
URxvt*color0: #171717
URxvt*color8: #737373
!red
URxvt*color1: #FF5E5E
URxvt*color9: #FF7878
!green
URxvt*color2: #9CE82B
URxvt*color10: #9ACD32
!yellow
URxvt*color3: #F0E68C
URxvt*color11: #EEE8AA
!blue
URxvt*color4: #008AFF
URxvt*color12: #4F98FF
!magenta
URxvt*color5: #E88CFF
Rxvt*color13: #EDA6FF
!cyan
URxvt*color6: #87CEFA
URxvt*color14: #B0E2FF
!white
URxvt*color7: #DCDCCC
URxvt*color15: #FFFFFF
Clipboard
urxvt does not copy data to the primary selection which can a problem in certain situations, so I use a perl script created by Bert Muennich to make things feel more intuitive.
This clipboard does not automatically copy selections in urxvt made with the mouse which I prefer, instead you have to use "CTRL + Insert". It also has a convenient method to paste inserting escapes where necessary.
mkdir -p ~/.urxvt/perl wget -O ~/.urxvt/perl/clipboard "https://raw.github.com/muennich/urxvt-perls/master/clipboard"
As your normal user insert the following is in ~/.Xdefaults (replace "youruser" with your user name).
URxvt.perl-lib: /home/youruser/.urxvt/perl/ URxvt.perl-ext: clipboard URxvt.keysym.C-Insert: perl:clipboard:copy URxvt.keysym.S-Insert: perl:clipboard:paste URxvt.keysym.S-A-Insert: perl:clipboard:paste_escaped
Then retrain yourself away from the Microsoft Windows method of using CTRL-c, CTRL-x and CTRL-v and use:
- CTRL + Insert = Copy
- SHIFT + Delete = Cut
- SHIFT + Insert = Paste
- (SHIFT + ALT + Insert = Paste with escapes into urxvt)
If you want automatic selections with the mouse you can use the following alternative.
mkdir -p ~/.urxvt/perl wget -O ~/.urxvt/perl/clipboard "http://www.bitbinary.com/dotfiles/urxvt_clipboard"
As your normal user insert the following is in ~/.Xdefaults (replace "youruser" with your user name).
URxvt.perl-lib: /home/youruser/.urxvt/perl/ URxvt.perl-ext: clipboard
References:
https://wiki.archlinux.org/index.php/Urxvt
https://github.com/muennich/urxvt-perls
Alternatives
Run Command
apt-get install gmrun
cp /usr/share/gmrun/gmrunrc > ~/.gmrunrc sed -i 's/Terminal = x-terminal-emulator/Terminal = eval x-terminal-emulator/' ~/.gmrunrc
Further information about the use of eval here
File Management
After trying just about all the different file managers I found Nautilus to be my favourite, use your preferred one if desired.
Install base file management components which is basically a file manager, disk burner and image viewer
apt-get install nautilus policykit-1-gnome gvfs-backends gnome-keyring gvfs-bin gvfs gvfs-fuse nautilus-open-terminal \ libpam-gnome-keyring gconf-editor gnome-session-common gnome-user-guide yelp nautilus-actions nautilus-image-converter
CD/DVD Management
apt-get install brasero genisoimage cdrdao cdrskin xorriso
Image Viewer
Gthumb
apt-get install gthumb
Then enable any extensions you desire in the interface
Add the following lines to the end of /etc/pam.d/login to unlock the keyring when you login through tty. gnome-keyring-daemon should start automatically.
auth optional pam_gnome_keyring.so session optional pam_gnome_keyring.so auto_start
Reboot after adding them.
Add user to fuse group (mainly for gvfs although this may no longer be required... seems to work now even if I was not a member of the fuse group)
usermod -a -G fuse youruser
Configure Nautilus to stop hijacking the desktop
su - youruser gconftool-2 -s -t bool /apps/nautilus/preferences/show_desktop false gconftool-2 -s -t bool /desktop/gnome/background/draw_background false exit
File Associations
The package gnome-session-common provides us with our defaults.list application file which can be used to set default applications. In order to utilise them you should do something similar to this.
Note: I found that having the file .local/share/applications/mimeapps.list caused xdg-open to fail to adhere to my associations. I moved it to .local/share/applications/defaults.list and edited that instead.
mv ~/.local/share/applications/mimeapps.list ~/.local/share/applications/defaults.list
As and example I ran the following to setup my default image viewer options.
If your defaults.list did not previously exist run this command.
echo "[Default Applications]" > ~/.local/share/applications/defaults.list grep image /usr/share/gnome/applications/defaults.list | sed 's/eog.desktop/viewnior.desktop/' >> ~/.local/share/applications/defaults.list
Make sure after editing the file as above that you move the "[Added Associations]" if it exists below the redirected list created from the above comamnd... e.g.
... image/x-pict=totem.desktop [Added Associations] ...
Setup sharing via samba to windows clients
As root do the following.
apt-get install nautilus-share samba
Answer any debconf questions...
cp /etc/samba/smb.conf /etc/samba/smb.conf.default vi /etc/samba/smb.conf
add the following to the global section
map to guest = bad user usershare allow guests = yes
Add your user as a smb user
smbpasswd -a youruser usermod -a -G sambashare youruser
Restart Samba
invoke-rc.d samba restart
You should
Miscellaneous Apps
apt-get install gcalctool remmina remmina-plugin-rdp remmina-plugin-vnc smbclient cifs-utils conky transmission
Web Browser
apt-get install iceweasel flashplugin-nonfree default-jre icedtea-plugin aspell-en \ myspell-en-au
If you like Chromium (chromium-browser chromium-browser-l10n) then install that instead of or as well as Iceweasel.
Google talk plugin
Now that MS owns Skype and support for Skype was never that great anyway google talk is a good option, presuming you have a Google account.
wget -O /etc/apt/sources.list.d/google-talkplugin.list "http://www.bitbinary.com/dotfiles/apt_source_google-talkplugin.list" wget -O /tmp/apt_google-key.asc "http://www.bitbinary.com/dotfiles/apt_google-key.txt" && apt-key add /tmp/apt_google-key.asc apt-get update apt-get install google-talkplugin
Text and Documents
apt-get install evince abiword gnumeric
Optionals: if you want a gui version of vim or openoffice
apt-get install vim-gtk vim-doc
To be able to view windows world docuements you can install.
apt-get install openoffice.org-impress openoffice.org-calc openoffice.org-writer openoffice.org-gtk \ openoffice.org-l10n-en-gb openoffice.org-help-en-gb
Other options are gnumeric and abiword if you want something lighter.
Or just use google docs, I believe openoffice has support for google docs sync now also.
Python Docs
apt-get install diveintopython3 python3-doc python3-examples
Located at
file:///usr/share/doc/diveintopython3/html/index.html file:///usr/share/doc/python3.2/html/index.html
Media and Music
apt-get install vlc vlc-plugin-notify libmtp-runtime
Graphics
apt-get installgimp gimp-help-en videolan-doc gimp-data-extras inkscape imagemagick thewidgetfactory
Virtualbox
apt-get install virtualbox virtualbox-dkms virtualbox-source virtualbox-qt libqt4-opengl virtualbox-guest-additions-iso
Add info about skype
Wine (Play on Linux)
apt-get install playonlinux smbclient samba-common-bin ttf-liberation
Laptop Packages
Seriously.... power management on Linux WTF is going on... I just spent a few hours trying to understand what packages I did and didn't need, ended up removing acpi-support, acpid, acpi-support-base, acpi-fakey, hibernate. For my Lenovo R500 I also had to this to get some media keys such as mute working.
vi /etc/default/grub
Added "acpi_osi=Linux" to the boot arguments
GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi=Linux"
Then
update-grub
If running a laptop install these
apt-get install vbetool bluez python-dbus ceni cpufrequtils pm-utils wireless-tools iw hdparm \ sdparm ethtool powertop rfkill lm-sensors smartmontools ibam
If you need to manage your wireless vs wired then install
apt-get install ifplugd ifmetric
perhaps use either laptop-mode-tools or xfce4-power-manager
apt-get install gnome-power-manager
Fix for resume on LVM - This bug is now resolved but you should be aware of this if you ever rename your volume groups. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=568877
echo "RESUME=/dev/mapper/vg00-swap" > /etc/initramfs-tools/conf.d/resume update-initramfs -u
(The following is only really useful if you do not use network manager) Add the following to restart wireless after suspend/hibernate.
vi /etc/pm/sleep.d/45wlan.sh
case "$1" in
hibernate|suspend)
ifdown wlan0
;;
thaw|resume)
ifup wlan0
;;
*)
;;
esac
exit $?
chmod +x /etc/pm/sleep.d/45wlan.sh
Xgamma can be used alter the RGB values
detect other modules to load
sensors-detect
As per bug http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=618878. power saving for wireless does not work from pm-utils on recent Debian Kernels. until a proper fix is made I just commented out line 21 in /usr/lib/pm-utils/power.d/wireless
#[ -d "/sys/class/net/$1/wireless" ] || return 1
I also enable sata link power management On line 5 in /usr/lib/pm-utils/power.d/sata_alpm update the value from false to true
SATA_ALPM_ENABLE=${SATA_ALPM_ENABLE:-true}
I then added this script with some customisations:
#!/bin/sh # A script to enable laptop power saving features for #! & Debian GNU+linux. # http://crunchbanglinux.org/forums/topic/11954 # List of modules to unload, space seperated. Edit depending on your hardware and preferences. modlist="uvcvideo" # Bus list for runtime pm. Probably shouldn't touch this. buslist="pci spi i2c" case "$1" in true) # Enable some power saving settings while on battery # Intel power saving echo Y > /sys/module/snd_hda_intel/parameters/power_save_controller # USB powersaving for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 1 > $i done # Disable hardware modules to save power for mod in $modlist; do grep $mod /proc/modules >/dev/null || continue modprobe -r $mod 2>/dev/null done # Enable runtime power management. Suggested by powertop. for bus in $buslist; do for i in /sys/bus/$bus/devices/*/power/control; do echo auto > $i done done echo 0 > /proc/sys/kernel/nmi_watchdog echo 0 > /sys/devices/platform/thinkpad_acpi/bluetooth_enable ;; false) #Return settings to default on AC power echo N > /sys/module/snd_hda_intel/parameters/power_save_controller for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 2 > $i done for mod in $modlist; do if ! lsmod | grep $mod; then modprobe $mod 2>/dev/null fi done for bus in $buslist; do for i in /sys/bus/$bus/devices/*/power/control; do echo on > $i done done echo 1 > /proc/sys/kernel/nmi_watchdog echo 1 > /sys/devices/platform/thinkpad_acpi/bluetooth_enable ;; esac exit 0
I use a thinkpad r500 and use thinkfan for more savings plus quiet operation:
apt-get install thinkfan
/etc/default/thinkfan
Change start to yes
add the following to this file /etc/modprobe.d/thinkpad_acpi.conf
options thinkpad_acpi fan_control=1
reboot
sensors && cat /proc/acpi/ibm/thermal && smartctl -A -d ata /dev/sda | grep Temperature
read the config file in /etc/thinkfan.conf and if possible identify you laptops sensors.
My sensors line from my R500 looks like this.
sensor /proc/acpi/ibm/thermal (2, 0, 0, 0, 5, 0, 5, 0, 10, 2, 2, 0, 0, 0, 0, 0)
Optional
Bluetooth Keyboard and Mouse
apt-get install bluez bluetooth bluez-firmware
Check your bluetooth adapter is available
hcitool dev
Scan for bluetooth devices and note their addresses
hcitool scan
Initiate connection
bluez-simple-agent hci0 00:00:00:00:00:00
Trust the device
bluez-test-device trusted 00:07:61:37:D5:60 yet
Test connection or reboot to see if device connects once the bluetooth daemon starts.
bluez-test-input connect 00:07:61:37:D5:60
Visual Tweaks
QT Theming
Run qtconfig and select GUI Style to GTK+ so KDE/QT apps look the same.
Clear the screen after boot.
cp /etc/issue /etc/issue.old clear > /etc/issue cat /etc/issue.old >> /etc/issue
Improve Boot Visuals
By Default the Debian boot sequence is a little dull. Sure you can add things like usplash but I would rather stick with the console output instead of using packages to "make things purdy".
First I install the Terminus Font and reconfigure the console-setup package to make use of it.
Ensure the packages are installed and then reconfigure console-setup
apt-get install console-terminus console-setup kbd dpkg-reconfigure console-setup
Answer the debconf questions, the first 2 are typically default.
Encoding to use on the console: (hit Enter) Character set to support: (hit Enter) Font for the console: Terminus Font size: 12x6 (or choose your desired size)
Your console font should now be using Terminus at the desired size. Reboot to see the new font upon boot.
Make it Quiet
Adding "quiet" to grub's arguments will mean less information is spewed onto the console at bootup. This is important to making the boot bootiful :)
vi /etc/default/grub
Find the following line and edit it as follows
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
Save and exit the file, then update grub
update-grub
You can reboot again if you would like to see the result.
Update initrd with graphics drivers
Upon boot you may have noticed the font changes halfway through the boot sequence which looks a little odd. So lets fix that.
Firstly we need to get our graphics card module loaded as soon as possible at boot by loading it into initrd. initramfs-tools should be installed already unless you have a unusual install.
For The Intel graphics on my Lenovo R61 laptop I did:
echo i915 >> /etc/initramfs-tools/modules
For The ATI Radeon card in my Desktop I did:
echo radeon >> /etc/initramfs-tools/modules
Plus you need to ensure the "firmware-linux-nonfree" package is installed for the radeon firmware.
You will need to google other graphics cards modules and I have no idea how or if this works with proprietary drivers. I don't use them so don't bother asking.
With the Radeon I also had to turn on kernel mode setting by parsing it from grub (The Intel used it by default), This may have changed by the time you read this and might not be required. Try with without first of all.
vi /etc/default/grub
Find the following line and edit it as follows
GRUB_CMDLINE_LINUX_DEFAULT="quiet radeon.modeset=1"
Save and exit the file, then update grub
update-grub
Once done, regenerate your initrd by running:
update-initramfs -u -v
Loading Fonts into initrd
So the Boot sequence is a seemless as possible we need to load the fonts into the initrd
wget -O /usr/share/initramfs-tools/hooks/console_setup "http://www.bitbinary.com/dotfiles/initramfs_hooks_console-setup" wget -O /usr/share/initramfs-tools/scripts/init-top/console_setup "http://www.bitbinary.com/dotfiles/initramfs_scripts_console-setup" chmod +x /usr/share/initramfs-tools/hooks/console_setup chmod +x /usr/share/initramfs-tools/scripts/init-top/console_setup
Then regenerate your initrd:
update-initramfs -u -v
You should notice the hook for console_setup being run (as long as you used the -v argument). Again... if you want to see the result... reboot.
LSB Logging
Debian supports the Linux Standard Base Logging Script for most services init runs. To make these console messages bootiful create the following file:
wget -O /etc/lsb-base-logging.sh "http://www.bitbinary.com/dotfiles/lsb_lsb-base-logging.sh.txt"
Lastly reboot to see the effect.
Conky
Power Management Scripts
OpenBox menus
sudo updatedb sudo apt-file update
Upload bash dot files
Preconfigured Desktop
If you would like to use a config I have made up to give you a nice basic desktop, then do the following. WARNING this overwrites existing files.
cd wget -O xfiles.tar.gz "https://docs.google.com/a/mesrobertson.com/uc?id=0B2vLcjUrgXL-NmIwYTYyY2QtOGU2MS00NTI2LWI4YzgtZWQ4NjNjNGViN2Ey&export=download&hl=en_GB" tar --no-same-permissions --no-same-owner -xvzf xfiles.tar.gz rm xfiles.tar.gz
There is a bug with consolekit at the time of writing so if you cannot mount disks, reboot, shutdown etc. then install this (older) version of consolekit and place consolekit on hold.
cd /var/cache/apt/archives/ wget "http://ftp.us.debian.org/debian/pool/main/c/consolekit/consolekit_0.4.1-4_i386.deb" dpkg -i consolekit_0.4.1-4_i386.deb echo "consolekit hold" | dpkg --set-selections
If you have an ntfs volume you want to easily access via nautuilus from your normal user (perhaps a multiboot partition) do the following.
vi /usr/share/polkit-1/actions/org.freedesktop.udisks.policy
Edit the section
<action id="org.freedesktop.udisks.filesystem-mount-system-internal">
Change
<allow_active>auth_admin_keep</allow_active>
to
<allow_active>yes</allow_active>
Reboot for it to take affect.
At this point if you wish you can start using your GUI. Simply reboot and then login to the first console as you normal user and startx will be invoked if you have used my bash config files.

