Vietnamen’s Weblog

Time, Chances, Diligence, Intelligence: which is the most important?

Archive for Tháng Ba 2009

FTP client/server

leave a comment »

Nhu cầu trao đổi nhiều files giữa 2 PCs.

FTP client:

Dùng filezilla client

sudo apt-get install filezilla

FTP server

Dùng vsftpd (Very Secure FTP Daemon)

sudo apt-get install vsftpd

Chỉnh sửa file cấu hình /etc/vsftpd.conf.

Một số thông tin cần chỉnh sửa

  • Make sure these information are uncommented
local_enable=YES
connect_from_port_20=YES
  • Optional

anonymous_enable = YES

anon_root=/path/directory #The directory that is for anonymous user can access (must be specified if anonymous_enable=YES)

write_enable=YES # YES nếu muốn người dùng có thể upload file lên server

  • Khởi động lại vsftpd để cấu hình mới có hiệu lực
sudo /etc/init.d/vsftpd restart

Để đảm bảo không có lỗi với file cấu hình, chạy “vsftpd” riêng trước.

Tiếp theo, để một máy từ xa có thể kết nối tới home PC, nó cần biết được IP. Nếu chia sẻ nội bộ (LAN), điều này là đơn giản. Nếu truy cập từ xa qua Internet, thay vì để người dùng phải nhớ IP của mình, ta có thể chọn giải pháp dùng một free DNS server để mapping URL gợi nhớ sang IP của mình. Một trong số đó là DynDNS (http://www.dyndns.com/).

Step 1: register an account in DynDNS

Step 2: vào My Service\Host Services, chọn “add new hostname”

Step 3: đặt tên cho hostname, ví dụ: ABC.homeunix.net

Tuy nhiên, giải pháp này chỉ có hiệu quả khi IP là static, không thay đổi. Nhưng đa phần khi kết nối Internet, home-user được cung cấp một dynamic IP và nó sẽ thay mới mỗi khi ta bị ngắt mạng. Giải pháp là dùng một phần mềm nhằm cập nhật IP lên dynDNS. Đó là inadyn hay ddclient.

Step 4: download http://cdn.dyndns.com/inadyn.zip and compile

Step 5: login to dynDNS and choose Support/Tool/Config/…

Step 6: select ABC.homeunix.net, select inadyn, copy file cấu hình và lưu vào /etc/inadyn.conf

Một file cấu hình mẫu

# Basic configuration file for inadyn
#
# /etc/inadyn.conf

update_period_sec 600 # Check for a new IP every 600 seconds

username username_trong_dynDNS
password pass_trong_dynDNS

dyndns_system dyndns@dyndns.org
# Dynamic host
alias ABC.homeunix.net

Step 7: chạy inadyn để cập nhật

./inadyn.conf

RECOMMEND: copy inadyn vào /usr/bin

Bước cuối cùng là thiết lập router cho  port forwarding để mở port dùng cho ftp (20 and 21 TCP). Và cho phép forward đến local IP address (192.168.xxx.xxx) của ftp server. Áp dụng cho các dịch vụ khác (such as email).

Step 1: connect máy tính (wired connection) đến router.

Step 2: mở Internet Explorer (note: một số browser khác không hoạt động tốt) và mở 192.168.1.1 (có thể có IP khác)

Step 3: nhập vào username/password (default là root/root), nếu bạn quên, có thể reset lại router để lấy default values.

Step 4: vào mục security và thực hiện các thao tác cần thiết

Ví dụ:

+ bỏ chọn Block Anonymous Internet Requests trong mục Firewall (save lại)

+ vào Applications & Gaming, chọn Port Range Forwarding với start = 20, end = 21, protocol = FTP, IP = forward to the IP address of the ftp server (cụ thể là IP của máy PC muốn làm FTP server). Chọn Enable và save settings.

Nếu PC có cài firewall, you have to allow access to port 21 and 20 or just highlight FTP service in the firewall settings.

Cuối cùng, để kiểm tra hệ thống, dùng http://www.net2ftp.com/.

References:

  1. http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch15_:_Linux_FTP_Server_Setup
  2. http://vsftpd.beasts.org/vsftpd_conf.html (Documentation vsftpd)
  3. http://vsftpd.beasts.org/
  4. http://news.softpedia.com/news/How-to-Install-Vsftpd-in-Ubuntu-45753.shtml
  5. http://www.cyberciti.biz/faq/ubuntu-vsftpd-ftp-service-server/
  6. http://www.dyndns.com/support/kb/using_inadyn_with_dyndns_services.html
  7. http://forum.portforward.com/YaBB.cgi?board=Knowledge;action=display;num=1116587665
  8. http://www.cyberciti.biz/faq/ftp-connection-refused-error-solution-to-problem/

Đọc tiếp »

Advertisements

Written by vietnamen

Tháng Ba 29, 2009 at 6:22 chiều

Webcam

leave a comment »

Bài này nhằm giới thiệu cách cài đặt và sử dụng được Webcam trong Ubuntu.

Step 0: nếu chưa mua webcam, quan trọng nhất là vào trang  http://mxhaard.free.fr/spca5xx.html để kiểm tra loại webcam tương thích để mua.

Step 1: cắm webcam vào máy tính

Step 2: hit

lsusb

để kiểm tra xem webcam thuộc dòng nào, ví dụ webcam đang dùng là của Microsoft

Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 045e:00f5 Microsoft Corp. LifeCam VX-3000.
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 046d:c016 Logitech, Inc. M-UV69a/HP M-UV96 Optical Wheel Mouse
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Chú ý đến cặp kí tự hexa đằng trước theo định dạng VendorID:ProductID

Step 3: vào trang http://mxhaard.free.fr/spca5xx.html, kiểm tra xem webcam của mình có được hỗ trợ không bằng cách search thử với VendorID, rồi tìm ProductID tương ứng. Ở đây, Microsoft có 2 loại

SUNPLUS Vendor Id Product Id Sunplus based Cameras Pseudo Bridge Sensor Support Stream Driver Quality
MicroSoft 227 0x045e 0x00F7 VX1000 sn9c105r OV7660 Yes Jpeg gspcav1 ***
MicroSoft 229 0x045e 0x00F5 VX3000 sn9c105r OV7660 Yes Jpeg gspcav1 ***

Rất may, webcam của mình đã được hỗ trợ.

Step 4: Kiểm tra streaming video đang được dùng

lsmod |grep videodev
videodev               41344  1 sn9c102
v4l1_compat            22404  1 videodev
Kết quả là sn9c102, không giống với streaming của webcam hiện có.Ta cần là gspca

Step 5: Với streaming driver là gspcav1, hãy vào trang http://mxhaard.free.fr/download.html và download version tương ứng mới nhất về.

CHÚ Ý: gspca-source được kèm theo Ubuntu là dành cho spca5xx, cũ hơn bản mà ta muốn cài đặt. Nên không cần thiết phải cài “gspca-source” package trong Ubuntu.

Step 6: giải nén

tar -xvf gspcav1-20071224.tar.gz

NOTE: bản này không compile được trong Ubuntu Intrepid

Step 7: download bản patch từ http://ubuntuforums.org/showthread.php?t=966932&highlight=e2500 và giải nén

gunzip gspca.patch.gz

Step 8: file patch sẽ ở thư mục cha của thư mục gspcav1-20071224, vì thế jump vào thư mục gspcav1-20071224 và run the patch

patch < ../gspca.patch

Bây giờ compile thành công

Step 9: cài gspcaGUI, download http://mxhaard.free.fr/spca50x/Download/spcagui20060127.tar.gz

tar -xvf spcagui20060127.tar.gz

Step 10: cài libsdl-stretch-dev thì mới compile thành công spcaGUI

sudo apt-get install libsdl-stretch-dev
sudo apt-get install libsdl-image1.2-dev

Step 11: vào spcagui200601227

make
sudo make install

Step 12: compile thành công, chạy test

sudo spcagui -d /dev/video0

References:

  1. http://ubuntuforums.org/showthread.php?t=469094
  2. http://ubuntuforums.org/showthread.php?t=381188
  3. http://www.actionshrimp.com/2008/08/logitech-quickcam-e2500-on-ubuntu-skype/
  4. http://admiral0.wordpress.com/2008/11/03/logitech-e2500-su-kubuntu-intrepid/

Written by vietnamen

Tháng Ba 29, 2009 at 11:39 sáng

Công cụ quản lí file tham khảo (citation manager)

with 2 comments

Các phần mềm sau đều hỗ trợ định dạng bibtex, làm viết rất tốt với LaTeX và texmacs.

Simple: tkbibtex

sudo apt-get install tkbibtex

Là tiện ích rất đơn giản

Better: kbibtex

sudo apt-get install kbibtex

Cho phép tìm kiếm trên internet (google scholars, pubmed, …) và download về thông tin bài báo

Better: jabref

sudo apt-get install jabref

Nếu bạn đạng dùng xmonad để quản lí, jabref hay một số java-based applications khác không chạy đúng, thêm vào ~/.gnomerc dòng

export AWT_TOOLKIT=MToolkit

Vì Jabref hiện tại vẫn không tương thích với các Open-JVM nên nếu vẫn có lỗi, có thể lí do là máy bạn đang dùng Open-JVM, thực hiện các bước sau để chuyển về Sun-JVM:

Step 1:Run

sudo update-alternatives --config java

và check xem có sun-java6-jre không, nếu có chọn nó, ngược lại tiếp tục

Step 2: Vào aptitude kiểm tra sun-java6-bin/sun-java6-jre  đã có install chưa, nếu chưa install nó

Step 3: thực hiện lại bước 1

Cuối cùng, kiểm tra bằng cách

java -version

Nếu thấy kết quả như sau là OK

java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)

Restart lại máy và chạy jabref, it works like a charms.

Update:

Nếu vẫn bị lỗi, kiểm tra đường dẫn thực sự của Sun Java:

which java

(/usr/bin/java)

Hãy vào edit file jabref

sudo scite jabref

Thay

export JAVA=${JAVA:=java}

bằng

export JAVA=/usr/bin/java

Hay cách khác là download bản jar từ website về. chạy: java -jar /path/to/jar/file/JabRef-2.4.2.jar

References:

  1. http://java.sun.com/j2se/1.5.0/docs/guide/awt/1.5/xawt.html
  2. http://jabref.sourceforge.net/faq.php
  3. http://ubuntuforums.org/archive/index.php/t-407523.html

Written by vietnamen

Tháng Ba 28, 2009 at 10:57 sáng

Xmonad

with one comment

Có thể sẽ phải hơi dài dòng để giới thiệu chức năng của xmonad, nhưng thực sự rất đáng xem và dùng xmonad – một tiện ích quản lí các cửa sổ màn hình theo một trật tự tiện lợi, giúp di chuyển các cửa sổ nhanh chóng mà theo các bài viết nói là mouse-less window manager. Và quan trọng là xmonad có thể hài hòa với GNOME.

Bạn có nên dùng không? YES, IF người đã quen nhiều với môi trường dùng phím tắt, chán dùng chuột và muốn tìm cái mới.

Step 1: Để cài đặt, trong Ubuntu Intrepid 8.10

sudo apt-get install xmonad libghc6-xmonad-dev libghc6-xmonad-contrib-dev dmw-tools

If dwm-tools can not be installed, click on this link, this package contains dmenu – a lightweight application launcher integrated with xmonad.

Với Ubuntu Karmic (9.10), nếu chưa có bản Xmonad-0.9 trong distro, bạn nên download phiên bản mới với các yêu cầu phải install: ghc6, libX11-dev, libghc6-mtl-dev, và có thể sẽ phải tự down thêm X11 version 1.4.6.1 rồi tự cài đặt (theo hướng dẫn) nếu phiên bản đi kèm (kiểm tra với: ghc-pkg list X11) cũ hơn.

  • Cài đặt X11
runhaskell Setup configure --user --prefix=$HOME
runhaskell Setup build
sudo runhaskell Setup install

CHÚ Ý: NẾu bạn cài đặt ở thư mục /home/user_name/bin (với user_name là tên account của bạn), bạn phải thêm nó vào $PATH trong file ~/.bashrc

Step 2: Thiết lập file cấu hình (xem phần configuration hoặc chép file cấu hình có sẵn ở cuối bài). MỘt số chú ý là với Ubuntu Karmic ta cần sửa

–myLogHook = dynamicLogDzen
myLogHook = dynamicLogWithPP dzenPP

Step 3: Có các cách sau

  • xmonad và GNOME chạy cùng nhau (Intrepid 8.10) –> thay Metacity bằng xmonad để làm window manager cho GNOME

sudo gedit ~/.gnomerc

thêm dòng sau

export WINDOW_MANAGER=xmonad
export AWT_TOOLKIT=MToolkit # phục vụ cho các ứng dụng Java-based

logout and in again. Nếu cách này không được,  ta sẽ phải tạo 1 session (tên xmonad) riêng và sẽ login vào session này. Đọc phần “NGOẠI LỆ” ở dưới.

  • Giải pháp khác là tạo file ~/.xsession

sudo gedit ~/.xsession

và thêm đơn giản nhất là

xmonad

hoặc

export WINDOW_MANAGER=xmonad
exec gnome-session –purge-delay=3000

và khi login thì chọn mục với “xsession” or “default session”.

  • Tạo 1 entry mới, có tên là xmonad, bằng cách tạo 1 file mới với tên xmonad.desktop trong /usr/share/xsessions/ với nội dung
   [Desktop Entry]
   Encoding=UTF-8
   Name=xmonad
   Comment=This session starts xmonad
   Exec=/usr/local/bin/xmonad
   Type=Application

với phần exec là đường dẫn thực thụ dẫn tới xmonad hoặc giải pháp tốt hơn là tạo ra 1 file script /home/user_name/bin/xmonad.start [dùng đường dẫn này nếu chỉ cài đặt cho mình bạn dùng] và sửa lại

Exec=/home/user_name/xmonad.start
Type=XSession

#!/bin/bash

#xrdb -merge .Xresources

trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 15 --height 12 --transparent true --tint 0x000000 &

gnome-screensaver

# for multimedia-keys (optional)
gnome-settings-daemon

if [ -x /usr/bin/gnome-power-manager ] ; then
   sleep 1
   gnome-power-manager
fi

if [ -x /usr/bin/nm-applet ] ; then
   nm-applet --sm-disable &
fi

# control volume (optional)
# kmix --keepvisibility

# use feh for background image selection (optional)
#feh --bg-scale /mnt/archivio/foto/2008-2009-dublino/2009-04-10-stefano/hapenny-desktop.jpg &

exec /home/local/bin/xmonad

Yêu cầu cài đặt thêm tiện ích trayer (cần có libgtk2.0-dev – cài đặt dùng synaptic) hoặc tốt hơn là cài .DEB package có sẵn.

Step 4: cài xmonad-contrib

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmonad-contrib

Cài đặt tương tự với X11. Có thể phải cài thêm utf8-string package.

Step 5:một số tiện ích cần có

  • Cài đặt gmrun (có thể cài sau xmonad) – gọi là Shift-Modkey-p

Sau đó có thể biên dịch từ source của Xmonad-0.9 với

runhaskell Setup.lhs configure --user --prefix=$HOME
runhaskell Setup.lhs build
sudo runhaskell Setup.lhs install --user
  • Cài đặt dmenu – gọi là Modkey-p
runhaskell Setup.lhs configure --flags="with_xft" --prefix=$HOME
runhaskell Setup.lhs build
sudo runhaskell Setup.lhs install

Có thể sẽ phải cài thêm libghc6-x11-xft, libghc6-parsec2-dev, libghc6-stm-dev, utf8-string. Dùng synaptic với 3 package đầu, cái cuối đã nói ở trên.

  • Cài đặt feh hoặc dùng synaptic để install

Step 6: logout và login với session là xmonad

Configuration file

Cũng như bao chương trình trên nền Linux, các thông số cấu hình của Xmonad đều được lưu vào trong 1 file, ~/.xmonad/xmonad.hs. File cấu hình được viết bằng ngôn ngữ Haskell, nên nếu hiểu nó sẽ có nhiều thuận lợi hơn. Bên dưới có file cấu hình soạn sẵn để có thể chép vào để dùng, và một số phần chi tiết sẽ được giới thiệu ở đây

  • Vì xmonad là một mouse-less window manager, Xmonad hỗ trợ mạnh các phím tắt (key-binding) với phím chủ lực (mod key) mặc định là left-Alt key (key-code is mod1Mask). Tuy nhiên, left-Alt key có thể tác động đến các key-binding có sẵn; đặc biệt với ai hay dùng Emacs khi left-Alt được triệt để sử dụng. Vì thế, ta có một thay đổi nhỏ trong file cấu hình

modMask = mod4Mask

Một số key có thể làm mod key là: right-Alt key (key-code: mod3Mask), window-key (key-code: mod4Mask). Recommend right-Alt key to be mod key if you’re using a laptop.

  • (optional) Trong GNOME, terminal emulator là gnome-terminal. Trong Xmonad, terminal emulator là xterm. Xterm đơn giản và gọn nhẹ hơn Gnome-terminal. Nếu ai thích gnome-terminal –> chỉnh sửa file cấu hình

thay                                                                    bằng

myTerminal      = “xterm” || myTerminal      = “gnome-terminal”

  • (optional) Linux-based OS cho phép thiết lập nhiều hơn một màn hình cùng lúc (dùng màn hình ảo). Xmonad cũng cho phép ta cấu hình số lượng màn hinh ảo, tên của mỗi màn hình (default is 9 virtual screens with their name are the corresponding digit values):

myWorkspaces    = [“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9”]

Để chuyển qua lại giữa các virtual screen, dùng key-binding mod-index (với index là 1,2,3….. Để chuyển active window từ virtual screen này sang virtual screen khác, ta dùng key-binding mod-shift-index.

  • thiết lập một số chương trình để lúc bạn run nó, chỉ có thể là floated window (không phải là tiled window theo default)
  • (optional) chuyển đổi layout modes. Layout mode (titling algorithm) đề cập đến việc sắp xếp các cửa sổ lúc được mở ra trên một virtual screen. Số lượng cửa sổ có thể là 0 hoặc nhiều.Nếu có nhiều cửa sổ, tại một thời điểm chỉ có 1 cửa sổ active. Để chuyển qua lại giữa các cửa sổ, ta dùng key-binding: mod-j (clock-wise) hay mod-k (counter-clockwise). Để di chuyển cửa sổ, dùng key-binding: mod-shift-j (clock-wise) hay mod-shift-k (counter-clockwise)

Ta có thể quy định nhiều hơn một layout mode (tuy nhiên tại 1 thời điểm chỉ có 1 layout mode active) và có thể chuyển qua layout mode (titling algorithm) khác dùng key-binding mod-Space. Trở về layout-mode mặc định, ta dùng mod-shift-space.

Layout mode mặc định: xmonad chia màn hình ra làm 2 bên (gọi là panes). Pane bên trái gọi là master (mặc định là chứa 1 của sổ duy nhất, và thường là cửa sổ đang làm việc). Panes bên phải sẽ chứa các cửa sổ còn lại, phân đều diện tích cho mỗi cửa sổ. Để co giãn panes theo chiều ngang, dùng key-binding mod-h (giảm master), mod-k (tăng master). Titling algorithm mặc định này có tên là tiled.

tiled = Tall nmaster delta ratio
nmaster  = 1        - default number of windows in the master pane
ratio         = 1/2    - default proportion of screen occupied by master pane
delta         = 3/100 - percent of screen to increment when resizing the pane

Muốn thêm cửa sổ vào master pane: mod-comma (,), muốn đưa ra khỏi master pane: mode-period (.).  Trở ngay về master pane, dùng mod-m

----------------------------------
|                 |      sub1    | 
|                 |..............|
|       Master    |              |
|                 |      subn    |
|_________________|______________|

Các layout khác có thể dùng là: Mirror tiled (như xmonad, nhưng master pane giờ ở bên trên – kích thước dài hơn), fullscreen (chỉ một cửa sổ active chiếm trọn màn hình), Circle

  • (optional) key-binding – Đây là phần làm nên sự thành công của Xmonad. Hàm myKeys qui định các key-bindings
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
   -- launch a terminal (shift-mod-RET)
    [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
   -- launch dmenu (mod-p)
    , ((modm,               xK_p     ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")
   -- launch gmrun (shift-mod-p) - Make sure to install gmrun
    , ((modm .|. shiftMask, xK_p     ), spawn "gmrun")

NOTE:

  • xK_a –> xK_z : các kí tự từ a –>z
  • shiftMask           : shift + mod key

Chú ý là mỗi virtual screen có thể có một layout mode khác nhau đang được kích hoạt.

ADVANCED USER (per-workspace layout)

Để chuyển active window vào trong master pane, dùng key-binding mod-RET

Tương tự, mỗi virtual screen cũng có thể

tabbed, spiral, three-column…), prompts, program launchers, the ability to manipulate windows and workspaces in various ways, alternate navigation modes, and much more. There are also “meta-modules” which make it easier to write new modules and extensions.

OTHERS:

(2) Wireless connection –>

  • (1) bổ sung nội dung file ~/.xinitrc

sudo gedit ~/.xinitrc

#!/bin/bash
nm-appplet &

hoặc dùng command line
1) sudo ifconfig eth1 (với eth1 là wireless interface, thay đổi cho phù hợp với bạn)
2) iwlist eth1 scanning (hiển thị các network nhận diện được)
3) sudo eth1 essid <network_name> ex. sudo eth1 essid netgear
4) sudo dhclient eth1
5) ping www.google.com (kiểm tra kết nối được chưa)

  • (2) Cài đặt stalonetray

sudo apt-get stalonetray

và đưa nó vào startup list (trong~/.xinitrc)

stalonetray &

(3) Thêm một số chức năng: Mod-Shift-z (to lock screen by screeen saver)

[ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock")
        , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
        , ((0, xK_Print), spawn "scrot")
        ]

sudo apt-get install xscreensaver

KEY-BINDING:

Mod-shift-Enter          :  hiển thị cửa sổ terminal mới
Mod-p                       :   hiển thị top window-bar cho phép ta gọi các chương trình bất kì (sử dụng dmenu tool)
Mod-Shift-c               : để đóng một cửa sổ (thuật ngữ của xmonad là frame) – keybinding Alt-F4 không còn hiệu lực
Mod-Spacebar          : chuyển đổi các layout khác nhau giữa các frame
Mod-Shift-Spacebar : trở về với layout ban đầu
Mod-j hay Mod-k      : chuyển đổi qua lại giữa các frame trong cùng 1 workspace
Mod-enter                : di chuyển active frame thành master pane (là frame có kích thước lớn nhất)
Mod-h hay Mod-l     :thu nhỏ, gia tăng chiều rộng của master pane
Mod – [wordspace number] : với [workspace number] là số workspace đã định trong config file, di chuyển từ workspace này sang workspace khác
Mod-Shift-[wordspace number] :di chuyển active frame sang workspace chỉ định
Mod-q                       : reload xmonad (dùng để  cập nhật khi có các thay đổi trong file cấu hình)
Mod-shift-q             : thoát xmonad
Shift-Mod-p            : chạy gmrun, một tiện ích nhỏ gọn nhưng rất hiệu quả cho phép chạy một chương trình cùng với command-line options của nó.

Mouse

Mod-left-mouse-button drag           = di chuyển (float) một frame
Mod-t                        : chuyển float frame về lại tited frame (có vị trí cố định theo cấu hình xmonad)Mod-right-mousse-button                = resize một frame

References:

  1. http://xmonad.wordpress.com/
  2. http://xmonad.wordpress.com/2009/02/08/xmonad-a-review/
  3. http://xmonad.wordpress.com/2009/10/26/xmonad-0-9-available-now/
  4. http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Doc-Extending.html
  5. http://www.haskell.org/haskellwiki/Xmonad/Using_xmonad_in_Gnome#Introduction
  6. http://www.haskell.org/haskellwiki/Xmonad/Config_archive/John_Goerzen%27s_Configuration
  7. http://xmonad.org/
  8. http://ubuntuforums.org/showthread.php?t=975329
  9. http://ubuntuforums.org/showthread.php?t=843341
  10. http://ubuntu-snippets.blogspot.com/2008/08/xmonad-tiling-window-manager.html
  11. http://stalonetray.sourceforge.net
  12. http://reachbeyondgrasp.blogspot.com/2007/11/xmonad-on-ubuntu-setting-it-up.html
  13. http://ivanmiljenovic.wordpress.com/2008/01/20/xmonad/
  14. http://xmonad.openbsd-box.org
  15. http://hackage.haskell.org/package/X11-1.4.6.1
  16. http://darcs.haskell.org/X11/
  17. http://arjuna.deltoso.net/articoli/my-configuration-of-xmonad-window-manager-with-xmobar-and-trayer/en
  18. http://packages.debian.org/sid/trayer
  19. http://versia.com/2009/10/18/xmonad-metacity-gnome/
Configuration file: ~/.xmonad/xmonad.hs
--
-- xmonad example config file.
--
-- A template showing all available configuration hooks,
-- and how to override the defaults in your own xmonad.hs conf file.
--
-- Normally, you'd only override those defaults you care about.
--

import XMonad
import System.Exit
import XMonad.Config.Gnome
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.EwmhDesktops
import XMonad.Actions.CycleWS -- provide binding to cycle forward/backward through list of workspaces
import qualified XMonad.StackSet as W

import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
--import System.IO

import qualified XMonad.StackSet as W
import qualified Data.Map        as M

-- The preferred terminal program, which is used in a binding below and by
-- certain contrib modules.
--
myTerminal      = "gnome-terminal" --"xterm"

-- Width of the window border in pixels.
--
myBorderWidth   = 1

-- modMask lets you specify which modkey you want to use. The default
-- is mod1Mask ("left alt").  You may also consider using mod3Mask
-- ("right alt"), which does not conflict with emacs keybindings. The
-- "windows key" is usually mod4Mask.
--
myModMask       = mod1Mask

-- The mask for the numlock key. Numlock status is "masked" from the
-- current modifier status, so the keybindings will work with numlock on or
-- off. You may need to change this on some systems.
--
-- You can find the numlock modifier by running "xmodmap" and looking for a
-- modifier with Num_Lock bound to it:
--
-- > $ xmodmap | grep Num
-- > mod2        Num_Lock (0x4d)
--
-- Set numlockMask = 0 if you don't have a numlock key, or want to treat
-- numlock status separately.
--
myNumlockMask   = mod2Mask

-- The default number of workspaces (virtual screens) and their names.
-- By default we use numeric strings, but any string may be used as a
-- workspace name. The number of workspaces is determined by the length
-- of this list.
--
-- A tagging example:
--
-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]
--
myWorkspaces    = ["1","2","3","4","5","6","7","8","9"]

-- Border colors for unfocused and focused windows, respectively.
--
myNormalBorderColor  = "#dddddd"
myFocusedBorderColor = "#ff0000"

------------------------------------------------------------------------
-- Key bindings. Add, modify or remove key bindings here.
--
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
   -- launch a terminal (shift-mod-RET)
    [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
   -- launch dmenu (mod-p)
    , ((modm,               xK_p     ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")
   -- launch gmrun (shift-mod-p) - Make sure to install gmrun
    , ((modm .|. shiftMask, xK_p     ), spawn "gmrun")
   -- close focused window (shift-mod-c)
    , ((modm .|. shiftMask, xK_c     ), kill)
   -- Rotate through the available layout algorithms
    , ((modm,               xK_space ), sendMessage NextLayout)
   --  Reset the layouts on the current workspace to default (shift-mod-space)
    , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
   -- Resize viewed windows to the correct size
    , ((modm,               xK_n     ), refresh)
   -- Move focus to the next window  (mod-tab)
    , ((modm,               xK_Tab   ), windows W.focusDown)
   -- Move focus to the next window  (mod-j)
    , ((modm,               xK_j     ), windows W.focusDown)
   -- Move focus to the previous window (mod-k)
     , ((modm,               xK_k     ), windows W.focusUp  )
   -- Move focus to the master window (mod-m)
     , ((modm,               xK_m     ), windows W.focusMaster  )
   -- Swap the focused window and the master window (mod-RET)
    , ((modm,               xK_Return), windows W.swapMaster)
   -- Swap the focused window with the next window
    , ((modm .|. shiftMask, xK_j     ), windows W.swapDown  )
   -- Swap the focused window with the previous window
    , ((modm .|. shiftMask, xK_k     ), windows W.swapUp    )
   -- Shrink the master area
    , ((modm,               xK_h     ), sendMessage Shrink)
   -- Expand the master area
    , ((modm,               xK_l     ), sendMessage Expand)
   -- Push window back into tiling
    , ((modm,               xK_t     ), withFocused $ windows . W.sink)
   -- Increment the number of windows in the master area (mod-,)
    , ((modm              , xK_comma ), sendMessage (IncMasterN 1)) 
   -- Deincrement the number of windows in the master area
    , ((modm              , xK_period), sendMessage (IncMasterN (-1)))
   -- toggle the status bar gap
   -- TODO, update this binding with avoidStruts , ((modm , xK_b ), sendMessage ToggleStruts)
   -- Quit xmonad (mod-shift-q)
    , ((modm .|. shiftMask, xK_q     ), io (exitWith ExitSuccess))
   -- Restart xmonad
    , ((modm              , xK_q     ), restart "xmonad" True)
    ]
    ++

    --
    -- mod-[1..9], Switch to workspace N
    -- mod-shift-[1..9], Move client to workspace N
    --
    [((m .|. modm, k), windows $ f i)
        | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
        , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
    ++

    --
    -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
    -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
    --
    [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
        | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
        , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]
    ]
    ++
    -- moving workspaces (CycleWS)
    [
    --------- mod-Down
     ((modm      , xK_Down     ), nextWS)
    ,((modm      , xK_Up       ), prevWS)
    ]

------------------------------------------------------------------------
-- Mouse bindings: default actions bound to mouse events
--
myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $

    -- mod-button1, Set the window to floating mode and move by dragging
    [ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w))

    -- mod-button2, Raise the window to the top of the stack
    , ((modMask, button2), (\w -> focus w >> windows W.swapMaster))

    -- mod-button3, Set the window to floating mode and resize by dragging
    , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w))

    -- you may also bind events to the mouse scroll wheel (button4 and button5)
    ]

------------------------------------------------------------------------
-- Layouts:

-- You can specify and transform your layouts by modifying these values.
-- If you change layout bindings be sure to use 'mod-shift-space' after
-- restarting (with 'mod-q') to reset your layout state to the new
-- defaults, as xmonad preserves your old layout settings by default.
--
-- The available layouts.  Note that each layout is separated by |||,
-- which denotes layout choice.
--
-- myLayout = tiled ||| Mirror tiled ||| Full
myLayout = avoidStruts (tiled ||| Mirror tiled ||| Full) ||| Full
  where
     -- default tiling algorithm partitions the screen into two panes
     tiled   = Tall nmaster delta ratio

     -- The default number of windows in the master pane
     nmaster = 1

     -- Default proportion of screen occupied by master pane
     ratio   = 1/2

     -- Percent of screen to increment by when resizing panes
     delta   = 3/100

------------------------------------------------------------------------
-- Window rules:

-- Execute arbitrary actions and WindowSet manipulations when managing
-- a new window. You can use this to, for example, always float a
-- particular program, or have a client always appear on a particular
-- workspace.
--
-- To find the property name associated with a program, use
-- > xprop | grep WM_CLASS
-- and click on the client you're interested in.
--
-- To match on the WM_NAME, you can use 'title' in the same way that
-- 'className' and 'resource' are used below.
--
myManageHook = composeAll
    [ className =? "MPlayer"        --> doFloat
    , className =? "Gimp"           --> doFloat
    , resource  =? "desktop_window" --> doIgnore
    , resource  =? "kdesktop"       --> doIgnore ]

-- Whether focus follows the mouse pointer.
myFocusFollowsMouse :: Bool
myFocusFollowsMouse = True

------------------------------------------------------------------------
-- Status bars and logging

-- Perform an arbitrary action on each internal state change or X event.
-- See the 'DynamicLog' extension for examples.
--
-- To emulate dwm's status bar
--
-- > logHook = dynamicLogDzen
--
-- myLogHook = return ()
myLogHook = dynamicLogDzen

------------------------------------------------------------------------
-- Startup hook

-- Perform an arbitrary action each time xmonad starts or is restarted
-- with mod-q.  Used by, e.g., XMonad.Layout.PerWorkspace to initialize
-- per-workspace layout choices.
--
-- By default, do nothing.
myStartupHook = return ()

------------------------------------------------------------------------
-- Now run xmonad with all the defaults we set up.

-- Run xmonad with the settings you specify. No need to modify this.
--
--main = xmonad defaults

main = xmonad $ defaults
                  { manageHook = manageDocks <+> manageHook defaultConfig
                  , logHook    = ewmhDesktopsLogHook
                  , modMask = mod4Mask -- rebind Mod key
                  }

-- ~ main = xmonad $ gnomeConfig {
-- ~ 	logHook    = ewmhDesktopsLogHook
-- ~ 	}

-- A structure containing your configuration settings, overriding
-- fields in the default config. Any you don't override, will
-- use the defaults defined in xmonad/XMonad/Config.hs
--
-- No need to modify this.
--
defaults = defaultConfig {
      -- simple stuff
        terminal           = myTerminal,
        focusFollowsMouse  = myFocusFollowsMouse,
        borderWidth        = myBorderWidth,
        modMask            = myModMask,
        numlockMask        = myNumlockMask,
        workspaces         = myWorkspaces,
        normalBorderColor  = myNormalBorderColor,
        focusedBorderColor = myFocusedBorderColor,

      -- key bindings
        keys               = myKeys,
        mouseBindings      = myMouseBindings,

      -- hooks, layouts
        layoutHook         = myLayout,
        manageHook         = myManageHook,
        logHook            = myLogHook,
        startupHook        = myStartupHook
    }
Step 5:

Written by vietnamen

Tháng Ba 25, 2009 at 8:33 chiều

Ẩn mọi biểu tượng trên desktop

leave a comment »

 gconftool-2 --type boolean --set /apps/nautilus/preferences/show_desktop fals

Tiếp, để chỉnh wallpaper
gconftool --type string --set /desktop/gnome/background/picture_filename "/path/to/your/image.png"

Written by vietnamen

Tháng Ba 24, 2009 at 7:20 chiều

Gnome tools

leave a comment »

Written by vietnamen

Tháng Ba 22, 2009 at 8:32 chiều

Dynamic Simulation tools

leave a comment »

Pymol

Disable compiz by selecting System\Preference\Appearance\Visual Effect –> none, if Segmentation fault occurs.

References:

  1. http://www.pymolwiki.org/index.php/Linux_Install
  2. http://ubuntuforums.org/showthread.php?t=584011

VMD

sudo apt-get install libstdc++5

Download source file (LINUX OpenGL version if you’re using an Intel computer)

Extract and edit the ./configure file as follows

$install_bin_dir=”/usr/local/vmd/bin”;
$install_library_dir=”/usr/local/vmd/lib/$install_name”;

Run ./configure

Jump to src folder:

cd src

Execute:

sudo make install

Edit the ~/.bashrc file

if [ -f /usr/local/vmd/bin/vmd ]; then
PATH=$PATH:/usr/local/vmd/bin/
export PATH
fi

Hit:

source ~/.bashrc

to update the bash shell. However, when you run vmd, you’ll get this error:

bash: ./vmd: /bin/csh: bad interpreter: No such file or directory

You still need csh (C-shell) to run it. Install csh,

sudo apt-get install csh

Then, hits

vmd

it’s like a magic.

References:

  1. http://ubuntuforums.org/archive/index.php/t-598518.html
  2. http://www.chem.ac.ru/Chemistry/Soft/PYMOL.en.html

Gromacs

http://www.gromacs.org/

Written by vietnamen

Tháng Ba 20, 2009 at 7:20 sáng

Posted in Living better with Ubuntu, Tin học

Tagged with ,