• Thứ Ba, 24/04/2007 09:33 (GMT+7)

    Chụp màn hình KDM

    Linux có rất nhiều công cụ chỉ dùng cho một công việc tưởng chừng quá đơn giản - chụp ảnh màn hình.

    Đầu tiên cần kể đến những ứng dụng đi kèm với các môi trường làm việc. Đó là ksnapshot đi kèm với KDE và gnome-screenshot đi kèm với GNOME. Những chương trình này có ưu điểm là thuận tiện đối với người dùng không chuyên, nhất là ksnapshot.

    Với ksnapshot mọi tùy chọn chụp hình đều được thực hiện ngay trong cửa sổ của chương trình này (Hình 1): chụp hình gì (toàn bộ màn hình hay một cửa sổ, ksnapshot còn hỗ trợ chụp một vùng màn hình nhất định), sau bao nhiêu thời gian, có đưa trang trí cửa sổ vào hình chụp hay không, cũng như các thao tác khác (lưu hình, chụp hình mới, sao chép vào bảng ghi tạm (clipboard), in hình chụp...)

    Cần nói thêm là giống như các ứng dụng KDE khác, ksnapshot được tích hợp rất tốt vào môi trường làm việc này. Do đó bạn có thể dùng chuột để kéo thả hình vừa chụp vào một ứng dụng KDE nào đó, ví dụ vào thư mục đang mở trong Konqueror, hoặc thậm chí kéo thả hình vào nền màn hình để thay thế ảnh nền đang dùng (hoặc lưu ở desktop để sau này sao chép dễ dàng hơn).

    Sử dụng gnome-screenshot có phần không quen thuộc với người dùng đã “dính liền” với chuột và rất giống với một ứng dụng được nhắc tới ngay sau đây - chạy câu lệnh cùng với các tham số trên dòng lệnh console hoặc terminal. Để chạy hai chương trình vừa nhắc đến, có thể chọn chúng trong trình đơn chính (menu) của môi trường làm việc hoặc từ dòng lệnh:

    $ ksnapshot

    $ gnome-screenshot

     

          Hình 1: Chương trình chụp ảnh màn hình KSnapshot

    Ngoài hai ứng dụng trên, người dùng Linux, nhất là những người dùng có chút ít kinh nghiệm, thường sử dụng những ứng dụng “chạy từ dòng lệnh và kết thúc ở đó’’: chương trình chạy từ dòng lệnh (terminal hoặc console), chụp ảnh màn hình hoặc cửa sổ phụ thuộc vào tham số dòng lệnh, ghi kết quả vào một tập tin rồi kết thúc ở đó mà không mở ra một cửa sổ nào. Trong số này phổ biến nhất là import - một thành viên của bộ công cụ làm việc với hình ảnh ImageMagick, và xwd - một tiện ích của hệ thống X Window. Sử dụng những ứng dụng này cũng không quá khó khăn. Ví dụ, để chụp ảnh toàn bộ màn hình cần gõ vào dòng lệnh sau:

    $ import -window root screen.png

    Lệnh này ngay lập tức lưu màn hình vào tập tin screen.png. Để chụp ảnh một cửa sổ, có thể bạn cần có thời gian để chọn cửa sổ đó. Hãy sử dụng đồng thời với lệnh sleep.

    Ví dụ lệnh

    $ sleep 5; import -frame window.png

    cho phép thực hiện import sau 5 giây, đồng thời có chụp cả trang trí của cửa sổ. Nếu không muốn thêm trang trí này vào thì hãy bỏ đi tham số -frame. Sử dụng xwd không có gì khó khăn nếu bạn đã quen với import, và nếu có gì khó khăn thì các trang hướng dẫn man

    $ man 1 xwd

    $ man 1 import

    và help

    $ import -help

    luôn sẵn sàng đưa ra lời giải đáp.

    Tuy nhiên nếu dùng bốn ứng dụng kể trên để chụp hình KDM (trình quản lý màn hình đi kèm với KDE) trực tiếp thì sẽ không thu được kết quả mong muốn. Ví dụ, trong trường hợp import, bạn sẽ nhận được thông báo lỗi như sau:

    $ import -display :0 kdm.png

    Xlib: connection to “:0.0” refused by server

    Xlib: No protocol specified

    import: unable to open X server `:0’.

    Tuy nhiên, có cách chụp màn hình KDM mà không phải dùng đến máy ảnh số.

            Hình 2: Kết quả chụp màn hình KDM qua Xnest

     

    Có một cách giải quyết đơn giản là sử dụng một chương trình máy ảo (như VMWare hay qemu), tuy nhiên khi đó bạn cần mất thời gian cài đặt máy ảo hoặc ít nhất, trong trường hợp sử dụng LiveCD, là mất thời gian cấu hình KDM cho vừa ý. Chúng ta sẽ không xem xét cách này ở đây.

    Ở đây chúng ta sẽ sử dụng những công cụ có sẵn, đi kèm với hệ thống X Window System -- Xnest và Xephyr. Xin chú ý là chữ cái X ở đầu viết hoa (Linux phân biệt chữ thường và hoa). Xnest và Xephyr thực hiện chức năng như nhau (chúng ta chỉ quan tâm đến chức năng client của chúng): kết nối tới máy chủ X ở xa. Chúng ta sẽ lấy Xnest làm ví dụ.

    Để sử dụng được những công cụ trên, bạn cần máy tính thứ hai. Xin được gọi máy tính, trên đó có chạy KDM cần chụp, là máy A, máy còn lại (chạy Xnest) là máy B. Hai máy tính có kết nối mạng với nhau và có địa chỉ IP tương ứng là 192.168.0.1 (A) và 192.168.0.2 (B). Nếu máy thứ hai (B) không có Linux thì có thể sử dụng LiveCD có một trong hai tiện ích kể trên, ví dụ Knoppix.

    Sau đó bạn cần cho phép kết nối từ xa (XDMCP) tới máy chủ X của A. Trên OpenSUSE Linux và một số bản phân phối khác, sự cho phép này được thực hiện bằng cách soạn tập tin /etc/sysconfig/displaymanager, sửa dòng:

    DISPLAYMANAGER_REMOTE_ACCESS=”no”

    thành

    DISPLAYMANAGER_REMOTE_ACCESS=”yes”

    và cuối cùng khởi động lại máy chủ X (KDM) để cập nhật. Sau khi chuẩn bị xong hai máy, bạn chỉ cần thực hiện 2 bước.

    Bước 1. Dùng Xnest kết nối từ máy B đến máy chủ X của A bằng lệnh:

    $ Xnest -geometry 1204x768 -query 192.168.0.1 :1

    Lệnh này sẽ khiến Xnest tìm kết nối tới máy chủ X có cho phép XDMCP với địa chỉ IP 192.168.0.1, nếu kết nối thành công thì mở ra cửa sổ với kích thước là 1024x768 trên màn hình số :1 (vì màn hình số :0 đã bận bởi máy chủ X của chính bản thân máy B).

    Bước 2. Dùng một trong bốn tiện ích chụp ảnh màn hình ở trên để chụp hình cửa sổ Xephyr. Kết quả thu được sẽ giống như hình 2. Nếu không muốn khung trang trí cửa sổ trong hình chụp này, hẳn bạn đã biết cách bỏ nó đi.

    Nếu không có 2 máy tính? Bạn vẫn có thể chụp được hình KDM. Tuy nhiên, trong trường hợp này bạn cần biết cách sử dụng startx cũng như hiểu cơ chế chạy máy chủ X trên nhiều màn hình khác nhau.

    Bước 1. Chạy KDM trên màn hình :0 như bình thường.

    Bước 2. Soạn thảo tập tin /.xinitrc để chọn môi trường làm việc hoặc trình quản lý cửa sổ (window manager) muốn dùng, rồi chạy từ một console nào đó:

    $ startx -- :1

    để chạy môi trường đã chọn trên màn hình X số :1.

    Bước 3. Từ môi trường này dùng Xnest để kết nối tới màn hình số :0 theo cách đã nói ở phần trước

    $ Xnest -geometry 1280x1024 -query 192.168.0.78 :2

    (câu lệnh dùng Xnest là hoàn toàn tương tự chỉ khác ở số màn hình bây giờ là :2 vì :0 và :1 đều đã bận).

    Tiện ích chụp ảnh màn hình của Linux có rất nhiều và mỗi tiện ích là một ứng dụng rất mạnh. Sử dụng kết hợp những tiện ích này với những ứng dụng đi kèm với X Window System bạn có thể thực hiện ảnh chụp bất kỳ màn hình nào.

    Phan Vĩnh Thịnh

    ID: A0704_134