Project D

Network Manager Magic Without GNOME

Do you know its possible to install network manager without the bloat of gnome?.

I managed to do this in Gentoo by editing the dependencies in the ebuild.

Copy & Paste this ebuild and save it to /usr/portage/net-misc/networkmanager/networkmanager-0.6.6-r1.ebuild or your local overlay path.

# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/networkmanager-0.6.6.ebuild,v 1.4 2008/08/17 16:16:38 maekke Exp $

inherit gnome2 eutils

# NetworkManager likes itself with capital letters
MY_P=${P/networkmanager/NetworkManager}

DESCRIPTION="Network configuration and management in an easy way. Desktop environment independent."
HOMEPAGE="http://www.gnome.org/projects/NetworkManager/"
# Release candidate for 0.6.6, Hosted in dcbw's redhat space.
SRC_URI="http://people.redhat.com/dcbw/NetworkManager/0.6.6/${MY_P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ~ppc x86"
IUSE="crypt doc gnome trayer gnome-panel"

# Yes, I know that configure will accept libnl 1.0-pre8, however we only have
# 1.1 in the tree, therefore dep on it.
RDEPEND=">=sys-apps/dbus-0.60
	>=sys-apps/hal-0.5.10
	sys-apps/iproute2
	>=dev-libs/libnl-1.1
	>=net-misc/dhcdbd-1.4
	>=net-wireless/wireless-tools-28_pre9
	>=net-wireless/wpa_supplicant-0.4.8
	>=dev-libs/glib-2.8
	gnome-panel? ( >=x11-libs/gtk+-2.8
		>=gnome-base/libglade-2
		>=gnome-base/gnome-keyring-0.4
		>=gnome-base/gnome-panel-2
		>=gnome-base/gconf-2
		>=gnome-base/libgnomeui-2 )
	crypt? ( dev-libs/libgcrypt )
	trayer? ( x11-misc/trayer ) "
DEPEND="${RDEPEND}
	dev-util/pkgconfig
	dev-util/intltool"
PDEPEND="gnome? ( >gnome-extra/nm-applet-0.6.5 )"

DOCS="AUTHORS ChangeLog NEWS README"
USE_DESTDIR="1"

G2CONF="${G2CONF} \
	`use_with crypt gcrypt` \
	`use_with gnome` \
	--disable-more-warnings \
	--localstatedir=/var \
	--with-distro=gentoo \
	--with-dbus-sys=/etc/dbus-1/system.d"

S=${WORKDIR}/${MY_P}

pkg_setup() {
	if built_with_use sys-apps/iproute2 minimal ; then
		eerror "Please rebuild sys-apps/iproute2 without the minimal useflag."
		die "Fix iproute2 first."
	fi
}

src_unpack () {
	unpack ${A}
	cd "${S}"

	# Use the kernel headers
	epatch "${FILESDIR}/${PN}-use-kernel-headers.patch"
	# Fix the resolv.conf permissions
	epatch "${FILESDIR}/${PN}-resolvconf-perms.patch"
	# Fix up the dbus conf file to use plugdev group
	epatch "${FILESDIR}/${PN}-0.6.5-confchanges.patch"
}

src_install() {
	gnome2_src_install
	# Need to keep the /var/run/NetworkManager directory
	keepdir /var/run/NetworkManager
}

pkg_postinst() {
	gnome2_icon_cache_update
	elog "You need to be in the plugdev group in order to use NetworkManager"
	elog "Problems with your hostname getting changed?"
	elog ""
	elog "Add the following to /etc/dhcp/dhclient.conf"
	elog 'send host-name "YOURHOSTNAME";'
	elog 'supersede host-name "YOURHOSTNAME";'

	elog "You will need to restart DBUS if this is your first time"
	elog "installing NetworkManager."
}

then digest the ebuild by :

ebuild /usr/portage/net-misc/networkmanager/networkmanager-0.6.6-r1.ebuild digest

edit your use flag

echo net-misc/networkmanager -gnome-panel trayer >> /etc/portage/package.use

get your networkmanager

emerge networkmanager

now when it compiles and installed (emerged) without error, then its time to edit the configuration.

Remove all the symlink of net.??? in the /etc/init.d

Comment out all the configuration in the /etc/conf.d/net and /etc/conf.d/wireless

add your user to the plugdev group by :

gpasswd -a USERNAME plugdev

edit /etc/dhcp/dhclient.conf

send host-name "HOSTNAME";#!/sbin/runscript

supersede host-name "HOSTNAME";

Create this /etc/init.d/NetworkManagerDispatcher

# Copyright (c) 2008 Saleem Abdulrasool <compnerd@compnerd.org>
# Distributed under the terms of the GNU General Purpose License v2
# $Header: $

depend() {
   need NetworkManager
}

start() {
   ebegin "Starting NetworkManagerDispatcher"
   start-stop-daemon --start --quiet --pidfile /var/run/NetworkManagerDispatcher.pid --exec /usr/sbin/NetworkManagerDispatcher
   eend $?
}

stop()
{
   local retval

   ebegin "Stopping NetworkManagerDispatcher"
   start-stop-daemon --stop --quiet --pidfile /var/run/NetworkManagerDispatcher.pid
   retval=$?
   eend ${retval}

   [ -e /var/run/NetworkManagerDispatcher.pid ] && rm -f /var/run/NetworkManagerDispatcher.pid
   return ${retval}
}

# vim: set ft=gentoo-init-d ts=3 sw=3 et:

make the script executable

chmod +x /etc/init.d/NetworkManagerDispatcher

create the required config file for NetworkManagerDispatcher

mkdir /etc/NetworkManager
mkdir /etc/NetworkManager/dispatcher.d

create /etc/NetworkManager/dispatcher.d/50-ntp-client

#!/bin/bash

/etc/init.d/ntp-client status | grep -q "started"

if test "$2" == "up" -a "$?" != "0" ; then
        rc-config start ntp-client
else
        rc-config stop ntp-client
fi

update the rc to load networkmanager at boot

rc-update add NetworkManager default
rc-update add NetworkManagerDispatcher default

Load trayer for the gnome-panel replacement. This process may vary to other windows manager. But basically its loading the trayer in the windows manager startup. In e17 this is how I managed to do it.

add this line to ~/.xinitrc

( sleep 1; \
  trayer --align right --edge bottom --distance 0 \
         --expand true \
         --transparent true --alpha 128 --tint 0 \
         --SetDockType true --SetPartialStrut true &
  nm-applet --sm-disable & ) &

I think It should work for other Windows manager but never tries it.

Finally load the damn thing!

/etc/init.d/NetworkManager start
Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Slashdot
  • StumbleUpon
  • blinkbits
  • eKudos
  • Live
  • Share/Save/Bookmark

RSS Fresh Ebuild