Giter VIP home page Giter VIP logo

wicd's Introduction

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: 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-client.py), 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.

wicd's People

Contributors

nacl avatar dpaleino avatar dano avatar rworkman avatar drf avatar n3hima-mothball avatar erikd avatar mikix avatar nikolas avatar

Stargazers

Philipp Huth avatar TJ avatar  avatar Yesterday17 avatar  avatar  avatar Alexander Magola avatar Cloud Jiang avatar Georgiy Odisharia avatar Giuseppe Masino avatar Alexander Kiselev avatar  avatar Daniyal Ansari avatar 82goober82 avatar Peter Sharp avatar Avery Payne avatar Gustavo Pantuza avatar  avatar Sachin Kamath avatar Andrew Lee avatar figital avatar Victor Dramba avatar John Pyper avatar  avatar  avatar Angus H. avatar Ryan McQuen avatar  avatar Frank Zheng avatar Til Boerner avatar André Laszlo avatar  avatar Artem Poliukhovych avatar Jordan Messina avatar Krasiyan Nedelchev avatar Tobias Roeser avatar Ha-Duong Nguyen avatar Ethereumdegen avatar Jan Hlavacek avatar Axel Beckert avatar John Boiles avatar George Talusan avatar Márk Bartos avatar Skander BM avatar  avatar Alex Grin avatar Xavier Devlamynck avatar Rogério Brito avatar TJ Koblentz avatar Federico Ceratto avatar  avatar

Watchers

 avatar  avatar  avatar  avatar Lucia avatar Axel Beckert avatar  avatar Ken Roberts avatar Tobias Roeser avatar Mark avatar  avatar Alexander Jaworowski avatar  avatar AndrewCz avatar Samuel Furtaw avatar migc avatar  avatar Philipp Huth avatar Zachariah Cooper avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.