+8

Hướng dẫn tự động hóa tác vụ trên Linux với Xdotool

1. Mở đầu

Nếu bạn là người yêu thích sự tiện lợi, ghét phải làm các tác vụ đơn giản nhưng phải thực hiện nhiều lần như start project mỗi khi mở máy thì xdotool chính là công cụ dành cho bạn. Hãy cùng khám phá xdotool và xem ví dụ thực hành với mình nhé!

2. Xdotool là gì?

xdotool là một tiện ích dòng lệnh mạnh mẽ cho phép bạn mô phỏng các hành động của người dùng. Từ việc gõ phím, di chuyển chuột, đến việc quản lý cửa sổ, xdotool có thể làm tất cả. Hãy tưởng tượng, bạn chỉ cần 1 click và để xdotool làm tất cả công việc cho bạn!

3. Cài đặt

Bạn có thể cài xdotool theo distribution của bạn:

Debian and Ubuntu: apt-get install xdotool
Fedora: dnf install xdotool
FreeBSD: pkg install xdotool
macOS: brew install xdotool or sudo port install xdotool
OpenSUSE: zypper install xdotool

4. Một số lệnh cơ bản của xdotool

4.1 Typing

Ví dụ: Thay vì gõ từng chữ, bạn chỉ cần nhập lệnh này và xdotool sẽ gõ giúp bạn.
xdotool type 'Hello world!'

4.2 Gửi tổ hợp phím

Cần gửi tổ hợp phím Ctrl+C để sao chép? Hãy thử lệnh:
xdotool key ctrl+c

Danh sách key code trong xdotoo

  • Return
  • Print
  • Tab
  • Space
  • BackSpace
  • Up, Down, Left, Right (Arrow keys)
  • Home, End, Page_Up, Page_Down
  • Insert, Delete
  • F1 to F12
  • a to z, A to Z
  • 0 to 9
  • Escape
  • Shift_L, Shift_R
  • Control_L, Control_R
  • Alt_L, Alt_R
  • Super_L, Super_R (Windows keys)

4.3 Di chuyển chuột

Bạn muốn chuột của mình tự di chuyển mà không cần đụng vào nó? xdotool giúp bạn với lệnh:

#500 và 300 là tọa đọ X và Y trên màn hình.
xdotool mousemove 500 300

# trả về vị trí X, Y của chuột hiện tại 
# ouput: x:1765 y:170 screen:0 window:88080400
xdotool getmouselocation

Ví dụ: để click vào góc trên bên trái của màn hình và di chuyển chuột đến vị trí ban đầu trước khi bạn di chuyển nó:
xdotool mousemove 0 0 click 1 mousemove restore

4.4 Giả lập click chuột

Lệnh này giả lập một cú nhấp chuột, nghĩa là một lần mousedown, sau đó là một lần mouseup với độ trễ ngắn giữa hai lần (hiện tại là 12 mili giây)

click [options]

options: 1 là click bằng chuột trái, 2 là chuột giữa, 3 là chuột phải, 4 cuộn lên, 5 cuộn xuống trang.

Flag

--repeat REPEAT
số lần click. Mặc định là 1. Muốn double-click, dùng --repeat 2

--delay MILLISECONDS
khoảng thời gian dừng tính bằng mili giây giữa các lần click. Option này không hoạt động nếu --repeat = 1

//click 4 lần, delay 100 mili giây giữa các lần click
xdotool click 1 --repeat 4 --delay 100 

4.5 Kéo và thả Chuột

Để bôi đen hoặc kéo và thả chuột (ví dụ như di chuyển một tệp tin), bạn có thể sử dụng:

xdotool mousedown 1
xdotool mousemove 200 200
xdotool mouseup 1

mousedown: Tương tự như nhấp chuột, ngoại trừ việc chỉ gửi sự kiện mouse down
mouseup: Tương tự như nhấp chuột, ngoại trừ việc chỉ gửi sự kiện mouse up

5. Thực hành

Oke, lý thuyết tạm như vậy đã, bây giờ mình sẽ cùng bạn làm ví dụ thực hành nhé.

Tự động mở trang web yêu thích
Mình sẽ tạo 1 script đơn giản để tự động mở trình duyệt Firefox, gõ link bài viết và tự scroll xuống như một user bình thường.

Phân tích ví dụ trên 1 chút, ở đấy mình có 3 step nhỏ:

  1. mở trình duyệt Firefox.
  2. gõ link bài viết.
  3. scroll xuống.

Ở step 1, cần tìm command mở được Firefox:
Command mở app rất đơn giản chỉ cần chạy [ten_package] &

Trong Ubuntu để lấy ra tất cả danh sách packages đã cài dùng: apt list --installed.
Mình muốn tìm tên package của Firefox thì chạy apt list --installed | grep firefox

image.png

Như ảnh bên trên thì firefox chính là tên package. Nên mình chỉ cần chạy firefox& sẽ tự mở được trình duyệt Firefox rồi. Vậy là step 1 đã xong, còn step 2 và 3 mình có giải thích bên trên rồi nên mình không nhắc lại nữa. Chúng ta cùng nhau, thực hành luôn nhé.

Đầu tiên mình tạo file script bằng lệnh touch view_script.sh
Cấp quyền thực thi cho file sudo chmod +x ./view_script.sh
Nội dung file như sau:

#!/bin/bash

open Firefox browser and background the process
firefox &!

# wait for 1 second
sleep 1

xdotool type --delay 100 'https://viblo.asia/p/2oKLnGKQVQO' 
xdotool key Return

# wait for 5 seconds
sleep 5

# Scroll down
xdotool key Page_Down
sleep 1
xdotool key Page_Down
sleep 1
xdotool key Page_Down

Run file và xem thành quả thôi ./view_script.sh

Xem thêm script auto start project: https://github.com/quantroy19/script_auto

6. Kết Luận

xdotool là một công cụ cho phép bạn tự động hóa hầu hết mọi thao tác mà bạn có thể thực hiện bằng bàn phím và chuột. Với các lệnh mà chúng ta đã khám phá, bạn có thể dễ dàng tự động hóa các tác vụ hàng ngày, giúp tiết kiệm thời gian và tăng hiệu suất công việc. Hãy thử nghiệm và khám phá thêm nhiều tính năng khác của xdotool, và đừng quên chia sẻ những phát hiện thú vị của bạn với mọi người nhé!

7. Tài liệu tham khảo

https://github.com/jordansissel/xdotool


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí