Linux.com

Community Blogs



Easily suspending programs

Have you ever been faced in a situation where your computer gets totally frozen, and you can barely move you mouse cursor, and wished that there is a pause button, like the control + alt + Escape from KDE that kills the selected applications window.

Now you can! - with my little BASH script.

(If the paste expires, please notify me, and I post a fresh one ;) )

What the script does:
when the script is connected with a keyboard shortcut, when one pressed the combo:
control + alt + ~ or the chosen combination, the mouse cursor will change to a cross, which we can now click on any window, than the program will suspend using the STOP signal.

Another shortcut is used to wake the application, it's the same procedure, point and click the suspended applications window :D.

This is an exported settings file for the shortcuts in KDE4, just change $HOME to your path to the script, and than import it using KDE4 System Settings in the category Input Actions.

It works on programs made in>
Python, C, C++, mono-C#,  perl and other languages, except for Java, which has one central virtual machine that loads Java classes.


Usage of my scrpt, for instance, one needs to search something, but the system is overloaded due to the programming IDE (like Eclipse), so it points to the Eclipse window, the scripts the PID from the xwindow-id and suspends the application with kill -STOP ourPid.

Looking forward to make my GNU/Linux box faster and more usable :), despite my machines power  :D.

P.S: if someone knows any better script/program or have made one, please give me a link, please :).

 

 

Few functions to draw lines, circles and ellipses in Java.

These days I'm working on few games which I'm writing in Java. I needed functions to draw lines and circles etc. Instead of using the Java libraries, I wrote my own functions. Thinking may be some day, some body else  use them too I'm putting the source code to these functions here, in my blog.

////////////////////////////////////////////////////////////////////////////
// NibblesFunctions.java                                                            //
// Written by, Sohail Qayum Malik                                              //
// Last modified on, Monday, 7th of March, 2010 @7:12AM           //
////////////////////////////////////////////////////////////////////////////

package Nibbles;

import java.lang.Math;
import java.awt.Graphics;

public class NibblesFunctions {

   //Bresenham circle
   //Read the following book at page 29...
   //http://books.google.com.pk/books?id=7gT1MhI1SbIC&pg=PP3&dq=+"Computer+Graphics++"SCHAUM's+outline+series"&cd=1#v=onepage&q= "Computer Graphics  "SCHAUM's outline series"&f=false
   // a and b is an origin ordinate pair(a,b)
   // r is the radius                                   
   public static void drawCircle(Graphics graphics, int a, int b, int r) {
 
      //We'll start at the right hand side of the circle
      //First point is always on the circle so error is zero and we know that x is r and y is 0
      //There are only two valid moves...
      //Up = x^2 + (y + 1)^2 - r^2 and Left = (x - 1)^2 + (y + 1)^2 - r^2
      //Our d = Up + Left     
      int x = r, y = 0, d = 3 - 2*r;
 
      // x is initially r, x will be same as y at 45(degree) angle
      while(y <= x) {
         
         // Eight way symmetry of circle
         graphics.drawString(".", x + b, y + a);
         graphics.drawString(".", y + b, x + a); 
         graphics.drawString(".", (-1)*y + b, x + a);
         graphics.drawString(".", (-1)*x + b, y + a);
         graphics.drawString(".", (-1)*x + b, (-1)*y + a);
         graphics.drawString(".", (-1)*y + b, (-1)*x + a);
         graphics.drawString(".", y + b, (-1)*x + a);
         graphics.drawString(".", x + b, (-1)*y + a);
       
         if(d < 0) // move Up = d + Up + 2  
            d = d + 4*y + 6;
         else { // move Left = d + Left + 2
            d = d - 4*(x - y) + 10;
           //Since we've started at the right hand side of the circle
            x = x - 1;
         }
         
         // Since we have started at top of the circle
         y = y + 1;                                
      }      
   }
   
/*
   //Bresenham circle
   //Read the following book at page 29...
   //http://books.google.com.pk/books?id=7gT1MhI1SbIC&pg=PP3&dq=+"Computer+Graphics++"SCHAUM's+outline+series"&cd=1#v=onepage&q= "Computer Graphics  "SCHAUM's outline series"&f=false 
   // a and b is an origin ordinate pair(a,b)
   // r is the radius                                   
   public static void drawCircle(Graphics graphics, int a, int b, int r) {
 
      //We'll start at the top of the circle
      //First point is always on the circle so error is zero and we know that x is zero and y is r         
      int x = 0, y = r, d = 3 - 2*r;
 
      // x is initially zero, x will be same as y at 45(degree) angle
      while(x <= y) {
         
         // Eight way symmetry of circle
         graphics.drawString(".", x + b, y + a);
         graphics.drawString(".", y + b, x + a); 
         graphics.drawString(".", (-1)*y + b, x + a);
         graphics.drawString(".", (-1)*x + b, y + a);
         graphics.drawString(".", (-1)*x + b, (-1)*y + a);
         graphics.drawString(".", (-1)*y + b, (-1)*x + a);
         graphics.drawString(".", y + b, (-1)*x + a);
         graphics.drawString(".", x + b, (-1)*y + a);
       
         if(d < 0) // move right
            d = d + 4*x + 6;
         else { // move down
            d = d + 4*(x - y) + 10;
           //Since we've started at the top of the circle
            y = y - 1;
         }
         
         // Since we have started at top of the circle
         x = x + 1;                                
      }      
   }
*/   
   
   //Bresenham line
   //Read chapter 3 at page 28 of the following book   
   //http://books.google.com.pk/books?id=7gT1MhI1SbIC&pg=PP3&dq=+"Computer+Graphics++"SCHAUM's+outline+series"&cd=1#v=onepage&q= "Computer Graphics  "SCHAUM's outline series"&f=false
   //I also went through following two documents
   //http://cs.fit.edu/~wds/classes/graphics/Rasterize/rasterize/rasterize.html
   //http://en.wikipedia.org/wiki/Bresenham's_line_algorithm
   public static void drawLine(Graphics graphics, int x1, int y1, int x2, int y2)  {
      
       int x, y, dx, dy, d, ystep, tmp;

      //This algorithm only deals with lines having shallow slopes. When a line has steep slope then we take the advantage of the fact that steep line can be reflected across the line y = x
      boolean steep = Math.abs(y2 - y1) > Math.abs(x2 - x1);   

       //Yes line has steep slope make it shallow  
       if(steep) {
  
          //swap(x1, y1) 
          //Because Java for scalar types is pass by value
          tmp = y1;
          y1 = x1;
          x1 = tmp;
 
          //swap(x2, y2)
          //Because Java for scalar types is pass by value
          tmp = y2;
          y2 = x2;
          x2 = tmp;               
       }
  
       //We always move from left to right(that is x is always incremented)
       if(x1 > x2) {
  
          //swap(x1, x2);
          //Because Java for scalar types is pass by value
          tmp = x2;
          x2 = x1;
          x1 = tmp;

           //swap(y1, y2)
           //Because Java for scalar types is pass by value
           tmp = y2;
           y2 = y1;
           y1 = tmp;
       }
  
       dx = x2 - x1;  
       dy = Math.abs(y2 - y1);
       //Initial value, the first and the last points are always on the line, so error is zero(2e=2(0)=0)
       //e = dyX - dxY + c
       //eR = dy(X + 1) - dxY + c = e + dy
       //eD = dy(X + 1) - dx(Y + 1) + c = e + dy - dx
       //d = eR + eD
       d = 2*dy - dx;
  
       //Find out if we'll increment or decrement y
       if(y1 < y2) 
          ystep = 1;
       else
           ystep = -1;

       //Initial values(initial ordinate pair) 
       x = x1;
       y = y1;
  
       while(x <= x2) {
   
           //x is reflected as y(transitive)  
           if(steep)
              graphics.drawString(".", y, x);
           else
              graphics.drawString(".", x, y);   

           //We only allow two moves, move to the right, or move diagonally. when we move to the right we only increment x otherwise we increment both(sign of ystep)
           if(d < 0) 
              d = d + 2*dy;
           else {
    
               d = d + 2*dy - 2*dx;
               y = y + ystep;
           }

           x = x + 1;      
       }                  
   }

   // Trigonometric method
   // a = length of major axis, b = length of minor axis
   // h,k ordinate pair for the center of the ellipse
   // x = a * cos(0 to PI/2 radians) + h 
   // y = b * sin(0 to PI/2 radians) + k
   // Inorder to rotate on axis, make minor greater than major
   public static void drawEllipse(Graphics graphics, int h, int k, int a, int b) {      
   
        int x = 0, y = 0; 
  
        //i is the magnitude of increment to radian at each step, this should not be fixed as it is now
        double radian = 0, i = 0.01;

        while(radian <= Math.PI/2) {
             
            x = (int)(a*(Math.cos(radian)));
            y = (int)(b*(Math.sin(radian)));
 
            //Ellipses have 4 way symmetry
           graphics.drawString(".", x + h, y + k);  
           graphics.drawString(".", (-1)*x + h, y + k); 
           graphics.drawString(".", (-1)*x + h, (-1)*y + k); 
           graphics.drawString(".", x + h, (-1)*y + k); 

           radian = radian + i;  
        }             
   }   
     
   // It is easy, no special algorithm there, just draw four lines
   public static void drawRectangle(Graphics graphics, int x1, int y1, int width, int height) {
   
      drawLine(graphics, x1, y1, x1 + width, y1);
      drawLine(graphics, x1, y1 + height, x1 + width, y1 + height);
      drawLine(graphics, x1, y1, x1, y1 + height);
      drawLine(graphics, x1 + width, y1, x1 + width, y1 + height);      
   } 
   
   public static void fillRectangle(Graphics graphics, int x1, int y1, int width, int height) {
   
        int x, y;
  
        if(width < 2 || height < 2) {
  
           drawRectangle(graphics, x1, y1, width, height);
           return;
        }
  
        for(y = 0; y < height + 1; y++)
            for(x = 0; x < width + 1; x++)      
                graphics.drawString(".", x1 + x, y1 + y);             
   }

   public static void fillCircle(Graphics graphics, int a, int b, int r) {
   
        int r1;
  
        for(r1 = r; r1 > 0; r1--)  
            drawCircle(graphics, a, b, r1);     
   }          
};

 

 

Legal Use of Codecs in Linux

I am still a Windows XP user thinking about trying out a Linux distribution.

I installed VLC Media Player recently on XP, and then applied my ultimate test for any media player: I popped in a DVD and checked if VLC could play it. Even on a copy of XP, it could not as the required codecs were missing.

If I switch to Linux I would like to be able to play DVDs legally, even if I have to pay to use the codecs.

Read more... Comment (0)
 

Understanding the Linux mindset

Having been around the UNIX world since the late 70's (UCB BSD ancillary member), seeing it grow, fracture, lay dormant for several years, get beat in the market place by Windows and Macintosh (pre-OSX), and then finally seeing it take its rightful place in an ever increasing complex world of computing, I am reminded of the once simple concept of the USB BSD development philosophy:

"Simplicity is better than complexity if the latter prevents completion."

The Linux world has grown so much since first deployed in 1994 by LT and his team of volunteers; however, I think that we on the verge of dissipating our energies with all the different versions, desktops, repositories, scripting environments, etc. How is a commercial entity suppose to embrace a world where most often even 2 UNIX experts can not or will not agree on the least forms of "best practices."

In my opinion, the main reason that a clearly inferior product such as Windows has completely dominated the desktop market is that there is one voice, one champion, one source of ultimate authority for the operation and deployment of Windows -- UNIX/Linux is all over the place with almost new distribution coming out daily.

I hope that before I retire or move on to other pursuits that there might come a meeting of the minds about how to de-fracture the UNIX/Linux world so that the masses out there can release themselves from the myopic perspective of Redmond (they are a good company, just misguided about how to develop a solid OS). Trying to help users see the beauty of an open source, community developed, GNU-based operating system, one desktop at a time while gallant is very tiring and time-consuming.

In the words of someone, somewhere: "Can't we all just get along?" I know that this is hopelessly naive, but the mindset of UNIX/Linux in my opinion should have always been:

"doing the most good for the most people with the least amount of effort."

Proprietary operating systems like Windows and OSX (yes, its proprietary -- try developing for it without Apple's approval) should have been a long-lost legacy, not something that we are still having to deal with in the 21st century.

Linux users should be willing to lead on this point, not continue to support the divide that ultimately forces the myriad number of desktop users into the arms of Redmond and Cupertino.

In my humble opinion only,

Paul Nanouk

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Intrepid-class Computer

How old is your computer? One year old? 2 years old? Or more? Mine must be about 4 now... Time to throw it up?

Read more... Comment (0)
 

Install Minimal Ubuntu and Fluxbox

Install a minimal ubuntu system with the mini.iso.

You can get the image from https://help.ubuntu.com/community/Installation/MinimalCD.
Choose the release you want and the architecture appropriate for your machine.

If in doubt, get the 8.04 hardy for i386 (this is the LTS release for standard x86 machines).

At the boot prompt, type cli and hit enter.

This will install a minimal, command line only system.

No graphical packages will be installed and we avoid the gnome dependencies.

One caveat I encountered is that the installer succeeded in autoconfiguring my Intel Pro Wireless card,
but only offered WEP encryption support. Since my router is WPA encrypted, I had to temporarily disable wireless security (or use WEP).
(Once the system is installed and wpa_supplicant added, I reactivated WPA encryption.)

When the system install is completed and the initial boot is done you should be presented with a login in the terminal.

Login with your username and password, update apt repositories and upgrade packages with:

$ sudo aptitude update
$ sudo aptitude safe-upgrade
$ sudo aptitude full-upgrade


then install a minimal graphical environment with:

$ sudo aptitude install xorg slim synaptic medit dillo fluxbox xfce4-terminal xinit menu menu-xdg alsa-utils gdebi-core logrotate localepurge


Note: you can use any terminal emulator you want, I happen to like xfce4-terminal.  :)
logrotate will overwrite old log files with new ones and save disk space.
localepurge removes all of the support and files for languages you DO NOT select. You will be prompted with instructions. Read and follow them. I selected the three that begin with en_US and chose to remove everything else.
Optional:
Dillo is a light-weight web browser without all of the firefox dependencies.
Medit is an Awesome text editor which I enjoy. Xedit will be installed too.

After this, setup will continue and you will soon be presented another graphical prompt regarding uswap and swap space.
Select No (do not continue without swap = let uswap find a swap partition...if you have set one up.)

Once you get back to the terminal prompt, type

$ startx


to start the graphical interface and window manager, Fluxbox.

You should see a blank background and a small taskbar at the bottom of the screen.

Welcome to fluxbox!


Where's the "Start" button?
or just a menu?

Right-click the desktop. Voila!

Up next:

CONFIGURING FLUXBOX




 

Linux in Lebanon

I have been helping out at a computer lab in Neba, which is a small suburb of Beirut. The majority of the people that live there are foreigners from Syria, Egypt, and other Middle Eastern countries.

Read more... Comment (0)
 

Gnome-shell in Ubuntu 9.10

Even though gnome-shell is really only a preview of what is to come for gnome 3.0 and it's still buggy and sometimes not completely stable perhaps, I really like it. When I first saw the screenshots I was less then impressed, I thought it didn't at all look like anything new or innovative, but rather messy and confusing. But me being ever interested in new things and all I just had to give it a try (the gnome-panel look was starting to bore me). Installing was easy
sudo apt-get install gnome-shell
and starting it afterwards was easy too
gnome-shell -r
Though first I had to disable compiz, which I don't really use anyway. I was also using avant-window-navigator, which disappeared on me but still kept part of my notification area to itself. So the time after that I first closed AWN and all was as it should be. I didn't feel like having to manually start gnome-shell every time I logged in so I started looking into a way to replace metacity and gnome-panel with gnome-shell and found that this could be done by editing you gconf (with, for example, gconf-editor) and setting the /desktop/gnome/session/required_components/windowmanager key from metacity to gnome-shell. Of course, since it is a composited window manager you need a video card and driver that can handle screen compositing.
 

Beautify your Linux desktop with Linux wallpapers and artwork!

Some Linux distributions put a lot of time into making sure that their default desktop looks pretty. Others do not. Either way, you don't have to settle for the included artwork in a distribution! Plenty of options exist on the Internet to find more icons and backgrounds for your computer. Here, I will focus on finding Linux specific content, as well as how to participate in the online community of artwork content creation.

Read more... Comment (0)
 

debian Lenny & wacom cintiq 12wx

I recently bought a wacom cintiq 12 wx, after hours of searching, here's how I, eventually, make it work. Hope these clues will be useful to others.  My config :
a fresh Debian Lenny install on a nvidia card Geforce 6800 with 2 video outputs. After conecting the wacom cintiq on the DVI output and having my primary screen on the other VGA output,  my first step was to set  2 X seperated screens.

1. Install the Nvidia driver and setting seperated X screens

I started to install the nvidia driver from nvidia.com (yes, I did use the restricted driver in that case, avoiding much pain) :

http://us.download.nvidia.com/XFree86/Linux-x86/185.18.29/NVIDIA-Linux-x86-185.18.29-pkg1.run 

many pages and blogs explain how to install this on Debian, I will not get further through that point. The  thing is to have a starting xorg.conf working.   see this link :  http://blog.chewearn.com/2008/10/09/nvidia-separate-x-screen-in-intrepid-ibex-beta/

After installing the package from Nvidia... In gnome or whathever, run in terminal   (as normal user), the nvidia configuration tool:

$ nvidia-settings

click on  the “X Server Display Configuration” left pane, if the second screen is not detected,  click "detect displays",  the second display should come up. Click on the "configure" button,  set "seperate X screen". Set your main screen with the resolution of your choice, choose "absolute" option under Position. The NVidia tool detects and auto configures the display for the cintiq (max resolution at 1280 x800), select "RightOf" under Position.

save your X config in your home directory by clicking on "Save to x configuration page" in order to modify it. Backup your old xorg.conf! just in case ..

$sudo cp /etc/X1/xorg.conf xorg.conf.back
$sudo cp ~/xorg.conf /etc/X11/xorg.conf

See my xorg.conf in appendix 1. Note the 'RightOf' option in ServerLayout subsection ... that can be changed to Leftof

 With this working xorg.conf, restart Xserver :

ctrl+backspace

If X restarts without error, you can breath again, otherwise, recover your xorg.conf backup. Now, after log into X, I had 2 seprate X screens, with 2 gnome desktops and only the mouse can cross.

2. Install the tablet

connect your usb wacom

After setting the dual screen, it's time to connect your wacom cintiq through one USB output  of your CPU. Then open a terminal, let's check if the wacom is recognised by using lsusb :

$ lsusb
Bus 001 Device 004: ID 056a:00c6 Wacom Co., Ltd  

the number 00c6  identify the wacom as a Cintiq 12wx

Download last wacom driver and apt-get before compile

first :

$sudo apt-get update

Install the current kernel headers

$sudo apt-get install linux-headers-$(uname -r)

Install  libraries :

$sudo apt-get install build-essential
x11proto-core-dev
libxau-dev libxdmcp-dev
x11proto-input-dev
x11proto-kb-dev xtrans-dev
libx11-dev x11proto-xext-dev
libxext-dev libxi-dev
linux-libc-dev libc6-dev
libncurses5-dev
xserver-xorg-dev tk-dev
tck-dev -y

Install the wacom tools :

$sudo apt-get install wacom-tools xserver-xorg-input-wacom

 From the linux wacom project, get the last driver source code:
http://linuxwacom.sourceforge.net/index.php/dl. When I got the source code, the last package was : linuxwacom-0.8.2-2.tar.bz2. Download and untar in your home directory.

$tar xvfj linuxwacom-0.8.2-2.tar.bz2
$cd linuxwacom-0.8.2-2

3. Now  compile and install the linuxwacom module

before the compilation, I had to (on my system) create or check those following links :

$ sudo ln -s /usr/include/pixman-l/pixman.h /usr/include/pixman.h
$ sudo ln -s /usr/include/pixman-l/pixman-version.h /usr/include/pixman-version.h

In the linuxwacom-0.8.2-2 directory :

$ ./configure -enable-wacom
$ make
and now  install the driver :
$sudo make install

4. xorg config

Backup again your xorg.conf

$ sudo cp xorg.conf xorg.conf.back

Edit xorg.conf in a text editor (gedit, vim, or whatever..) as root or sudo.
According to the xorg.conf, I posted below (see appendix 1), add these lines in "Sever Layout" section and after the lines concerning the keyboard and the mouse :

Section "ServerLayout"
......
    InputDevice    "stylus" "SendCoreEvents"
    InputDevice    "cursor" "SendCoreEvents"
    InputDevice    "eraser" "SendCoreEvents"
    InputDevice    "pad" "SendCoreEvents"

EndSection

For each input devices  given by the cintiq (stylus, eraser, cursor, pad), a section must be added

- the stylus :

Section "InputDevice"
Driver "wacom"
Identifier "stylus"
Option "Device" "/dev/input/wacom"
Option "Type" "stylus"
Option "USB" "on"
Option "Mode" "Absolute"
Option "TVResolution" "1600x1280,1280x800"
Option "ScreenNo" "1"
Option "Twinview" "horizontal"
Option "PressCurve" "0,15,85,100"
Option "Tilt" "on"
Option "KeepShape" "on"
Option "Speed" "0.5"
EndSection

Note the the option "ScreenNo" "1" limits the input device to the second screen, the cintiq 12wx screen.

- the eraser :

Section "InputDevice"
Driver "wacom"
Identifier "eraser"
Option "Device" "/dev/input/wacom"
Option "Type" "eraser"
Option "USB" "on"
Option "Mode" "Absolute"
Option "TVResolution" "1600x1280,1280x800"
Option "ScreenNo" "1"
Option "Twinview" "horizontal"
Option "Tilt" "on"
Option "Speed" "0.5"

EndSection

- the cursor:

Section "InputDevice"
    Driver "wacom"
    Identifier "cursor"
    Option "Device" "/dev/input/wacom"
    Option "Type" "cursor"
    Option "USB" "on"
Option "TVResolution" "1600x1280,1280x800"
Option "ScreenNo" "1"
Option "Twinview" "horizontal"
EndSection

- pad

Section "InputDevice"
    Driver "wacom"
    Identifier "pad"
    Option "Device" "/dev/input/wacom"
    Option "Type" "pad"
    Option "USB" "on"
EndSection  

5. Load the wacom module into the Kernel

 Back to the directory where you compiled the wacom driver (and to the corresponding sub directory of your kernel number), copy the file wacom.ko into the modules kernel directory:

$sudo cp linuxwacom-0.8.2-2/src/src/2.6.27/wacom.ko  /lib/modules/$(uname -r)/kernel/drivers/input/tablet/wacom.ko

Load the module :

$sudo depmod -e

then go back into  the source driver directory and uninstall the old driver :

$cd linuxwacom-0.8.2-2/prebuilt
$sudo ./uninstall
$sudo ./install

 Add Wacom Symlinks to “/etc/udev/rules.d”

first, go to the directory "/etc/udev/rules.d/" and check to see whether a file called “50-xserver-xorg-input-wacom.rules” is present. If not, download the most recent “50-xserver-xorg-input-wacom.rules” from Ron's Debian repository in your home directory:

$wget -O 50-xserver-xorg-input-wacom.rules "http://git.debian.org/?p=users/ron/wacom-tools.git;a=blob_plain;f=debian/xserver-xorg-input-wacom.udev;hb=e110b046292d6aff63b489c9b1aecec25d470cdb"

then copy it to "/etc/udev/rules.d"

sudo cp 50-xserver-xorg-input-wacom.rules /etc/udev/rules.d/50-xserver-xorg-input-wacom.rules

It's time to reboot, so everything will be in place ... Now, your wacom tablet should work.  check if the stylus cover the  screen and if the pointer moves to the stylus. Of course, it's not calibrated yet, the stylus is not exactly under the pointer. If no response, your tablet does not work.. and it was my case at this point ... argh ... so try this,  in a terminal, uninstall wacom-tools :

$sudo apt-get remove wacom-tools xserver-xorg-input-wacom -y

and install again

$sudo apt-get install wacom-tools xserver-xorg-input-wacom -y

then enter again in the wacom driver source directory :

$cd linuxwacom-0.8.2-2/prebuilt

$sudo ./uninstall
$cd ..
$make install

reboot again.

6. Calibrate the wacom : xsetwacom

Xsetwacom is a command line configuration interface, so you can control and change many options of your wacom.  You'll find all the parameters here : http://linuxwacom.sourceforge.net/index.php/howto/xsetwacom

The main issue here is to get the cursor below the pen. I didn't find any formula to translate the resolution of the 12wx screen in tablet unit. to figure this out, I used, by trial and error,  xsetwacom, to get the bottom x and y coordinates of the tablet. In a terminal :

$xsetwacom get stylus BottomX

gives you the button coordinate of the cursor on the X axis

$xsetwacom set stylus BottomX 26500

sets and corrects the X coordinate,  by moving those figures, I had, eventually, the cursor bellow the pen. Obviously, the Y axis must be set accordingly.

$xsetwacom set stylus BottomY 33440

Use the same settings for the eraser :

$xsetwacom set eraser BottomX 26500
$xsetwacom set eraser BottomY 33440

 In order to keep these settings at each reboot, make a simple "cintiq.sh" script. Make it executable, so Gnome (or other window manager, see Google for that) can launch in its startup program list. Personnally, I use fluxbox and added a line  to my "~/.fluxbox/startup" file : "cintiq.sh &" .

$touch cintiq.sh

edit the file (gedit, vim ..) and type your settings. Then, make it executable :

$chmod a+x cintiq.sh

With xsetwacom you can set all the extra keys that come with the wacom 12wx (the pad). Again, use xsetwacom and add your settings to the cintiq startup script. My settings, most of them are  set for Gimp: (see this link http://forum.ubuntu-fr.org/viewtopic.php?id=319659)

#!/bin/sh

# right buttons:

#10
--------
#5
#------7
#6
--------
#8

# left buttons:

#9
------------
#       1
#3---------
#        2
-----------
#4
xsetwacom set stylus Suppress "20"
xsetwacom set stylus RawSample "4"
xsetwacom set stylus ClickForce "6"

xsetwacom set stylus PressCurve "0 25 75 100"
xsetwacom set stylus BottomX 26500
xsetwacom set stylus BottomY 33440
xsetwacom set eraser BottomX 26500
xsetwacom set eraser BottomY 33440
xsetwacom set pad StripRDn "CORE KEY -" #zoom out in Gimp
xsetwacom set pad StripRUp "CORE KEY +" #zoom in  in Gimp
xsetwacom set pad StripLDn "CORE KEY ;"
xsetwacom set pad StripLUp "CORE KEY :"
xsetwacom set pad Button10 "CORE KEY ="
xsetwacom set pad Button9 "CORE KEY p" # switch to pen tool
xsetwacom set pad Button8 "CORE KEY ,"
xsetwacom set pad Button7 "CORE KEY SHIFT"
xsetwacom set pad Button6 "CORE KEY CONTROL y" #redo
xsetwacom set pad Button5 "CORE KEY CONTROL z" #undo
xsetwacom set pad Button4 "CORE KEY k" # ink tool
xsetwacom set pad Button3 "CORE KEY SHIFT"
xsetwacom set pad Button2 "CORE KEY CONTROL z" #undo
xsetwacom set pad Button1 "CORE KEY CONTROL y" #redo
xsetwacom set stylus TPCButton "off"
xsetwacom set stylus Button3 "Button 3"
xsetwacom set stylus Button2 "Button 2"
xsetwacom set stylus Button1 "Button 1"

Search Google about using Gimp with Wacom.

Appendix 1: xorg.conf

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "stylus" "SendCoreEvents"
    InputDevice    "cursor" "SendCoreEvents"
    InputDevice    "eraser" "SendCoreEvents"
    InputDevice    "pad" "SendCoreEvents"
EndSection

Section "Files"
    RgbPath         "/etc/X11/rgb"
    ModulePath      "/usr/lib/xorg/modules"
    FontPath        "/usr/share/fonts/X11/misc"
    FontPath        "/usr/share/fonts/X11/cyrillic"
    FontPath        "/usr/share/fonts/X11/100dpi/:unscaled"
    FontPath        "/usr/share/fonts/X11/75dpi/:unscaled"
    FontPath        "/usr/share/fonts/X11/Type1"
    FontPath        "/usr/share/fonts/X11/100dpi"
    FontPath        "/usr/share/fonts/X11/75dpi"
    FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "ServerFlags"
    Option         "Xinerama" "0"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
    Option        "XkbRules"    "xorg"
    Option        "XkbModel"    "pc105"
    Option        "XkbLayout"    "be"
EndSection

Section "InputDevice"
Driver "wacom"
Identifier "stylus"
Option "Device" "/dev/input/wacom"
Option "Type" "stylus"
Option "USB" "on"
Option "Mode" "Absolute"
Option "TVResolution" "1600x1280,1280x800"
Option "ScreenNo" "1"
Option "Twinview" "horizontal"
Option "PressCurve" "0,15,85,100"
Option "Tilt" "on"
Option "KeepShape" "on"
Option "Speed" "0.5"

EndSection

Section "InputDevice"
Driver "wacom"
Identifier "eraser"
Option "Device" "/dev/input/wacom"
Option "Type" "eraser"
Option "USB" "on"
Option "Mode" "Absolute"
Option "TVResolution" "1600x1280,1280x800"
Option "ScreenNo" "1"
Option "Twinview" "horizontal"
Option "Tilt" "on"
EndSection

Section "InputDevice"
    Driver "wacom"
    Identifier "cursor"
    Option "Device" "/dev/input/wacom"
    Option "Type" "cursor"
    Option "USB" "on"
Option "TVResolution" "1600x1280,1280x800"
Option "ScreenNo" "1"
Option "Twinview" "horizontal"
EndSection Section "InputDevice"
    Driver "wacom"
    Identifier "pad"
    Option "Device" "/dev/input/wacom"
    Option "Type" "pad"
    Option "USB" "on"
Option "TVResolution" "1600x1280,1280x800"
Option "ScreenNo" "1"
Option "Twinview" "horizontal"
EndSection Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "WAC Cintiq 12WX"
    HorizSync       31.0 - 82.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Hitachi CM766"
    HorizSync       31.0 - 96.0
    VertRefresh     50.0 - 180.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6800"
    BusID          "PCI:1:0:0"
    Screen          1
    Option      "AddARGBGLXVisuals"    "true"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6800"
    BusID          "PCI:1:0:0"
    Screen          0
    Option      "AddARGBGLXVisuals"    "true"
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "1"
    Option         "metamodes" "DFP: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "1"
    Option         "metamodes" "CRT: 1600x1280_70 +0+0; CRT: 1152x864 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Extensions"
    Option "Composite" "Enable"
EndSection
 

 

 



 

 

 

 

Playing Nintendo GameCube Games on Ubuntu

Let's face it, there is a definite lack of availible native games for our system of choice.  One method that can greatly expand upon the amount of games that can be played is running console emulators so that we can play traditional console games.  The best console emulator around for the Nintendo Gamecube is the Dolphin Emulator which has a native linux binary!  Here is a quick walkthrough to help people get there GameCube games running!

Step 1:  Download the emulator for your architecture from here (Either the 32 or 64bit version):

http://www.dolphin-emu.com/downloads.php

Step 2:  Install the libraries that Dolphin needs to run properly.

Open the terminal application and type:

sudo apt-get install scons g++ wx2.8-headers libwxbase2.8-0 libwxbase2.8-dbg libwxbase2.8-dev libwxgtk2.8-0 libwxgtk2.8-dbg libwxgtk2.8-dev libsdl1.2-dev nvidia-cg-toolkit libxxf86vm1-dbg libxxf86vm-dev libxext6-dbg libxext-dev libglew1.5-dev libcairo2-dbg libcairo2-dev libao2 libao-dev libbluetooth-dev libopenal1

Step 3:  Create symbolic link to fix Dependency error.

sudo ln -s /usr/lib/libbluetooth.so.3 /usr/lib/libbluetooth.so.2

Step 4: PLAY!  You are all set to go and can begin playing your favorite Gamecube games on Linux!

 

Cheers

 
Page 7 of 11

Upcoming Linux Foundation Courses

  1. LFS416 Linux Security
    03 Nov » 06 Nov - Virtual
    Details
  2. LFD320 Linux Kernel Internals and Debugging
    10 Nov » 14 Nov - Virtual
    Details
  3. LFS426 Linux Performance Tuning
    10 Nov » 13 Nov - Virtual
    Details

View All Upcoming Courses


Who we are ?

The Linux Foundation is a non-profit consortium dedicated to the growth of Linux.

More About the foundation...

Frequent Questions

Join / Linux Training / Board