gNewSense 3.1 Released

gNewSense 3.1 Desktop

gNewSense 3.1 Desktop

I’m pleased to announce the release of gNewSense 3.1. This is a minor update to the current stable version with codename Parkes. These are the most important changes:

  • The correct country-specific package repository (instead of is set at installation time.
  • Network-manager is included in the live image by default.
  • The expert installer no longer suggests to install Debian’s non-free repository.

Current users of gNewSense 3.0 don’t have to reinstall. They get all updates automatically. However, they should update their software sources, because the installer of gNewSense 3.0 erroneously set the URL of our beta repository as the software source. That repository will be disabled next week, in order to start development on gNewSense 4. I urge you to update your software sources to the correct ones as soon as possible. You can do this as follows:

  1. Open System -> Administration -> Synaptic Package Manager
  2. Go to Settings -> Repositories
  3. Click on each repository that has “” in the URI and replace “” with “”, where “xx” is the code of your country.

So, Germans would replace


Expert users can of course edit their /etc/apt/sources.list directly.

Author: Sam Geeraerts, gNewSense Project Leader.


Usklo: Public Domain Graphics for Your Game

Screenshot from Usklo's website

If you are a game developer or are just starting, and don’t have graphics for your game or game tests, you can use Usklo.

Usklo is an art set for game developers including a race of little invaders from outer space and all their artifacts.

The latest released version includes one character with nine animations, props and one tile set. Usklo is made using free software only and it’s dedicated to the public domain. Its development will continue using gNewSense GNU/Linux.



Create wall calendars with PCAL

PCAL is a console application that allows you to generate wall calendars or organizers in PostScript and HTML formats. PostScript files can be viewed in any PDF reader. HTML files can be viewed in any Web browser. PCAL also allows you to print events in the calendar by defining the events in a flexible configuration file. Resulting calendars are ready for printing.

This article will show you how to:

  • Generate a one-page calendar.
  • Generate a multi-page calendar (a month per page).
  • Generate a multi-page calendar with events.

You can download a ready to use 2014 wall calendar if you don’t have the time to generate it by yourself.

Installing PCAL

Open a terminal by going to Applications → Accesories → Root Terminal and run the following command:

# apt-get install pcal

You can close the Root Terminal after installation, we will use a regular Terminal in the following sections.

Generate a one-page calendar

One-page 2014 calendar

One-page 2014 calendar

Open a terminal by going to Applications → Accesories → Terminal and run the following command:

$ pcal -w -o 2014

The command above means:

  • pcal: the name of the application.
  • -w: indicates that all the months of the year will appear in the same page.
  • -o indicates the name of the generated file (.ps is the extension used for PostScript files).
  • 2014: indicates the year of the calendar. If you ommit it, pcal will print the calendar of the current year.

Download the resulting file.

Generate a multi-page calendar

First page of a multi-page calendar, January 2014

First page of a multi-page calendar, January 2014

Open a Terminal and run the following command:

$ pcal -P letter -l -o 1 2014 12


  • -P letter: indicates that the size of the generated document is “letter”.
  • -l: indicates that the document will have “landscape” orientation.
  • 1: indicates the first month in the resulting calendar (January, in this case).
  • 12: indicates that the calendar will have twelve months, starting from the month indicated above. In this case, all months of the year will be printed.

Download the resulting file.

Generate a multi-page calendar with events

July 2014 with daily events

July 2014 with daily events

PCAL can read “date files” or “configuration files” where you can specify the calendar formatting and events that will occur during the year. Configuration files are plain text files.

PCAL comes with a sample configuration file that can be found in the file system in /usr/share/doc/pcal/examples/pcal-cfg.txt.gz. But see the following example to make yourself an idea of how these files work.

Suppose you want to generate a 2014 workout calendar for your friend and it should have the following characteristics:

  • Printable in letter format with landscape orientation.
  • The text displays in Spanish.
  • Every day there will be an event: cardio workout.
  • Mondays, Wednesdays and Fridays, another event: strenght workout.
  • January 31st: a date with a dietitian.

To generate a calendar with the characteristics specified above, write the following configuration file and save it with any name you prefer (you can use Applications → Accesories → gedit Text Editor for this).

NOTE: When saving a configuration file that contains non-Latin characters, select “Western (ISO-8859-15)” in the “Character Encoding” field that appears in the “Save as…” dialog of the text editor you’re using. This way, calendars generated in languages different to English will display correctly. Using this encoding is necessary because PCAL doesn’t have support for UTF-8 yet, unlike most modern software (see “PCAL Shortcommings” in PCAL’s website).

gedit's Save as... dialog

gedit’s Save as… dialog

# ---------------------------------------------------------------------------
# Workout Calendar
# ---------------------------------------------------------------------------


# Paper size
opt -P letter

# Paper orientation
opt -l

# Text language
opt -a es

# First day of the week
opt -F Monday

# Font type
opt -d Times-Roman/18 -t Times-Roman/30 -n Times-Roman/10


# Cardio routine
all days       in all    Cardio

# Strength routine
all Mondays    in all    Fuerza
all Wednesdays in all    Fuerza
all Fridays    in all    Fuerza

# Dates
Jan 31 Dietista

Now run the following command in a Terminal replacing the text in capitals with the name you gave to your configuration file and the name you want for the resulting calendar:

$ pcal -f CONFIGURATION_FILE_NAME -o 1 2014 12

Download the resulting file.

Remember that you can learn more about PCAL by reading its manual (you can close the manual pressing the Q key):

$ man pcal

If you know an easier, more flexible way to generate calendars, please let us know!


Solarize your GNOME Terminal

Solarized dark & light themes

Solarized dark & light themes

Solarize is a colorscheme by Ethan Schoonover which is good on the eyes and allows you to spend long hours before the terminal without much strain.

Solarize your GNOME Terminal:

Install git vcs, if it is not already installed:

# aptitude install git

Then do:

$ git clone git://
$ cd gnome-terminal-colors-solarized
$ ./solarize

Now, go to GNOME Terminal & change the Profile to Solarized.

To toggle between dark & light Solarized themes run the ./solarize command.

To Solarize other terminals (konsole, xfce terminal) or you favorite editors look here & here.

Happy Hacking!

Author: rsiddharth

Web site attacked

You may have noticed that our website was down for a while last weekend. That’s because it was under attack. In fact, it has been under attack a lot longer than that. Only now it was bad enough to make the website inaccessible. Luckily, I was still able to log in with SSH. top confirmed the heavy load with load averages of above 40 and Apache using the most resources. Some investigation of Apache’s logs showed a lot of attempts to create a new account and to log in: - - [05/Jan/2014:06:25:41 -0500] "GET /PmwikiVsMoin?action=newaccount HTTP/1.1" 200 3051 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" - - [05/Jan/2014:06:25:41 -0500] "GET /PmwikiVsMoin?action=login HTTP/1.0" 200 2915 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" - - [05/Jan/2014:06:25:41 -0500] "GET /Main/Deltah HTTP/1.0" 200 3690 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" - - [05/Jan/2014:06:25:41 -0500] "GET /PmwikiVsMoin HTTP/1.1" 200 4253 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" - - [05/Jan/2014:06:25:41 -0500] "GET /matkinson HTTP/1.1" 200 3063 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (" - - [05/Jan/2014:06:25:46 -0500] "GET /PmwikiVsMoin HTTP/1.1" 200 4253 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" - - [05/Jan/2014:06:25:46 -0500] "GET /PmwikiVsMoin?action=newaccount HTTP/1.0" 200 3068 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" - - [05/Jan/2014:06:25:46 -0500] "GET /Main/Deltah?action=login HTTP/1.0" 200 2919 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" - - [05/Jan/2014:06:25:46 -0500] "GET /Main/No-Fuss_pc_games_Solutions_-_An_Update?action=login HTTP/1.1" 200 2958 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" - - [05/Jan/2014:06:25:46 -0500] "GET /PmwikiVsMoin?action=login HTTP/1.1" 200 2915 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" - - [05/Jan/2014:06:25:46 -0500] "GET /PmwikiVsMoin?action=login HTTP/1.1" 200 2915 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" - - [05/Jan/2014:06:25:47 -0500] "GET /Main/No-Fuss_pc_games_Solutions_-_An_Update?action=newaccount HTTP/1.1" 200 3110 "" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"

I wrote a little awk script to count the unique IP addresses in the access log of the past 6 days:

{print $1; ipcount[$1]++; print ipcount[$1];} 
END {for (ip in ipcount) { 
        print ip, ipcount[ip] 

More than 50000 requests came from a single IP address, dozens of other IP addresses made between 1000 and 10000 requests. Also note the spammy page name in the last entry of the excerpt above. This smells an awful lot like a spammer’s botnet is trying to abuse our wiki for its nefarious purposes.

We’d already taken some measures in the form of textcha’s and a self-organizing access control group. This was enough to stop actual spam on the wiki. The access control group alone would have been enough to stop edits, but the textcha also needs to be filled in when you create a new account on the wiki. We left it in place as a barrier for the spammer to create new accounts. I doubt that the 114 new accounts that were created in the past 2 months are all legitimate, so that slowed it down at best. Unused accounts aren’t too bothersome, so we left it at that.

Now it seems that our spammer has grown tired of being slowed down and has picked up the pace. Apache and MoinMoin were working so hard to process all these new account and login requests that regular users could hardly get through. The spammer still didn’t manage to edit the wiki and the number of accounts didn’t explode, but we’d rather stop all this unwanted traffic at the front door. My predecessor, Karl Goetz, had already installed and configured Fail2ban in an earlier attempt to combat wiki spam.

Fail2ban is a tool that checks log files for suspicious behavior and blocks the offender for a while. I figured that a normal user would not need to create a new account more than twice within a few minutes. So I told Fail2ban to look out for these requests by putting an appropriate regular expression in filter file /etc/fail2ban/filter.d/moinmoin-login.local:

failregex = ^<HOST> - -.*GET.*action=newaccount HTTP.*$ 
ignoreregex =

An accompanying section in /etc/fail2ban/jail.local tells it to look in Apache’s logs and email some details about the spammer:

enabled = true 
filter = moinmoin-newaccount 
logpath = /var/log/apache2/org.gnewsense.access.log 
findtime = 600 
maxretry = 2 
port = http,https 
action = %(action_mwl)s

A few minutes after restarting Fail2ban I could see from “iptables -n -L fail2ban-moinmoin-newaccount” that the firewall rules were trickling in. I made a similar filter and jail for “action=login”. Now the firewall is steadily blocking around 45 IP addresses for each of the filters and the load averages on the server are back to single digits before the decimal character. There should be no problem for regular users to create a new account or log in. Tor users could be affected, but that means that more people should run an exit node.

Author: Sam Geeraerts, gNewSense Project Leader.


Web site problems

The website is experiencing some heavy load. It looks like it’s under attack. We’re doing our best to block the culprits.

Sam Geeraerts, gNewSense Project leader

Recently, the Web site has been experiencing an abnormal amount of requests from the same IP address, which is causing the service to be very slow. They seem particularly interested in creating new accounts automatically, probably to fill the Web site with spam.

We will keep you updated on the issue.


The Web site in Malayalam

Windows user

Translation Widget

Yesterday, the Web site theme was updated to use Galaxia 1.5, which includes support for the Malayalam language and localized titles in pages. This means that now users can select Malayam in the Translation Widget to browse the Web site in that language and that page titles can be displayed in a more human friendly way in the browser’s title bar — instead of a title like Main/HowToHelp, now we can change it to just How to help or es/Main/HowToHelp to Cómo ayudar. The support for localized titles may also benefit gNewSense ranking in Web search engines.

To use the Web site in Malayalam:

  1. Go to (or any other page in the Web site).
  2. Move your cursor over the Translation Widget located on the top right of the page (or focus using the Tab key).
  3. Select മലയാളം.

You should see the main navigation options of the Web site and the page itself update to Malayalam. Some pages may not be translated yet, but Malayalam contributors are working on it.

Another language to the list which now includes partial translations in Brazilian Portuguese, French, German, Italian, Spanish and Taiwanese Mandarin.

If you would like to help translate the Web site into other languages or help improve existing translations, please join us.

Thanks to all the translators!