NAME¶
Wicd - Wired and Wireless Network Connection Manager
THEORY OF OPERATION¶
Wicd is designed to give the user as much control over behavior of network
connections as possible. Every network, both wired and wireless, has its own
profile with its own configuration options and connection behavior. Wicd will
try to automatically connect only to networks the user specifies it should
try, with a preference first to a wired network, then to wireless.
For wired connections, users have many options for determining what network
settings to use. Wicd allows creation of an unlimited number of wired
profiles, each of which has its own unique settings. The user can choose to
automatically connect to a selected default profile, choose a profile from a
pop-up window every time wicd connects, or have wicd automatically choose the
last profile used to manually connect.
For wireless connections, users can select any number of wireless networks to
automatically connect; wicd will choose the one with the highest signal
strength to try to connect.
If the user chooses, wicd will try to automatically reconnect when it detects
that a connection is lost. If the last known connection state is wired, wicd
will first try to reconnect to the wired network, and if it is not available,
wicd will try any available wireless networks which have automatic connection
enabled. If the last known connection state is wireless, wicd will first try
to reconnect to the previously connected network (even if that network does
not have automatic connection enabled), and should that fail, it will try both
a wired connection and any available wireless networks which have automatic
connection enabled.
Wicd uses built-in linux wireless-tools, such as ifconfig and iwconfig, to get
and configure network info. There is some flexibility in its use of DHCP,
providing support for dhclient, dhcpcd, and pump. Wicd uses wpa_supplicant to
handle all wireless encryption settings, and uses a template-based system to
create the configuration files used by wpa_supplicant. These templates can be
edited, and new templates can be created by the user and imported into wicd,
allowing connection to networks with uncommon encryption settings.
STRUCTURE¶
Wicd has two major parts: the daemon, which runs with root privileges; and the
user interface, which runs with normal user privileges. The two parts run as
separate processes and make use of D-Bus to communicate.
The daemon is responsible for making and configuring connections, reading and
writing configuration files and logs, and monitoring the connection status.
The daemon's job is split between two processes: wicd-daemon.py and
monitor.py. All the connection status monitoring, as well as the
auto-reconnection logic, takes place in monitor.py. Everthing else is done by
wicd-daemon.py.
The user interface (stored in wicd-gtk), which is made up of a tray icon, a main
GUI window, and its child dialogs, gets configuration and network info from
the daemon either by querying it using the methods in the daemon's dbus
interface or by receiving signals emitted from the daemon over D-Bus. Any
configuration changes made in the user interface are passed back to the
daemon, which actually applies the changes and writes them to configuration
files.
Since the user interface just queries for connection and configuration info from
the daemon, it is possible to run wicd without the GUI at all. Also, the
daemon is started by wicd's init script during system startup (before any user
logs in), making it possible to use wicd with "headless" machines.
USAGE HINTS¶
Choosing Alternate Tools
Wicd supports several alternatives regarding the networking tools on linux. In
the "External Programs" tab of the Preferences menu, you can choose
your preferred DHCP client, link detection tool, and routing tool if the
defaults aren't suitable for your particular distribution or system.
Custom Scripts
If you need to run any custom commands before or after connecting to or
disconnecting from a network, Wicd supports this; however, you will need to
have a graphical sudo helper installed (currently supported are kdesu, gksu,
and ktsuss). Also see /etc/wicd/scripts/ in FILES.
If you do not have a graphical sudo helper installed, you still have the ability
to use custom scripts, but you will have to set them up manually. See
wicd-wired-settings.conf(5) and/or
wicd-wireless-settings.conf(5) for more
information on how to do so.
Automatically Connecting to Networks
Wicd uses the BSSID to recognize a particular network (and thus to decide
whether it should automatically connect to it). If you are on a network that
has many different access points which all have the same ESSID (many
universities have such networks), there is an option in the "Advanced
Settings" to "Use these settings for all networks sharing this
essid." With this option enabled, Wicd will autoconnect to that network,
regardless of which node it sees.
FILES¶
/etc/wicd/manager-settings.conf
This file contains global settings for Wicd.
See this file's own man page for more information about it.
/etc/wicd/wired-settings.conf
This file contains settings related to the wired interface.
See this file's own man page for more information about it.
/etc/wicd/wireless-settings.conf
This file contains settings related to the wireless interface.
See this file's own man page for more information about it.
/etc/wicd/dhclient.conf.template
This is used to replace /etc/dhclient.conf during Wicd activity, if you're using
dhclient(1) as DHCP client. See
dhclient.conf(5) for more information.
/etc/wicd/encryption/templates/
This directory contains various templates for encrypted (WEP, WPA, etcetera)
connections. If none of them fit your needs, you may create your own and add
it to this directory. If you do this, please contact the authors (see below)
of Wicd.
/etc/wicd/scripts/
Dropping a script in the relevant directory will cause it to be executed when
the specified event is preformed upon connection or disconnect from or to any
network. Please note that pre/post disconnect scripts may be executed multiple
times on already-disconnected interfaces.
The scripts will be passed different parameters, depending if Wicd is acting on
a wired or a wireless network. In the former case, "wired wired
wired" will be passed (three times, just for compatibility with the
wireless case). If Wicd is acting on a wireless network, it will pass
"wireless ESSID BSSID" to the script.
Available directories are:
/etc/wicd/scripts/predisconnect
/etc/wicd/scripts/postdisconnect
/etc/wicd/scripts/preconnect
/etc/wicd/scripts/postconnect
/var/lib/wicd/configurations/
This directory contains individual configuration files for each encrypted
network you set up in Wicd.
/var/log/wicd/
This directory contains logfiles of Wicd's activity. Please refer to the log if
you are having connection or other problems.
SEE ALSO¶
wicd-manager-settings.conf(5),
wicd-wired-settings.conf(5),
wicd-wireless-settings.conf(5),
dhclient.conf(5),
wicd-curses(8),
ifconfig(8),
iwconfig(8),
wpa_supplicant(8),
route(8),
ip(8),
mii-tool(8),
ethtool(8),
dhclient(8),
dhcpcd(8),
pump(8).
WICD AUTHORS¶
Adam Blackburn <compwiz18@gmail.com>
Dan O'Reilly <oreilldf@gmail.com>
Andrew Psaltis <ampsaltis@gmail.com> (curses client)
David Paleino <d.paleino@gmail.com>
MANPAGE AUTHOR¶
Robby Workman <rworkman@slackware.com>