Paint.NET, trình chỉnh sửa ảnh phổ biến cho Windows, giờ có thể chạy trên Linux trong một thiết lập thử nghiệm rất sớm.

Paint.NET là ứng dụng Windows kể từ 2004. Trong nhiều năm, chạy nó trên Linux qua Wine rất khó vì Paint.NET phụ thuộc nhiều vào công nghệ đồ họa Windows, đặc biệt là Direct2D.

Wine có một số hỗ trợ Direct2D, nhưng chưa đủ để Paint.NET hoạt động ổn định.

Để giải quyết vấn đề này, tác giả Paint.NET là Rick Brewster đã chọn một hướng khác. Thay vì tự tay xây dựng phần công nghệ còn thiếu trong nhiều năm, ông dùng trợ lý mã hóa Claude AI để tạo một bản triển khai Direct2D mới dành riêng cho Paint.NET.

Theo Brewster, Claude đã giúp tạo khoảng 180,000 dòng mã trong khoảng ba tuần.

Kết quả không phải một bản Paint.NET native cho Linux. Đây vẫn là ứng dụng Windows chạy qua Wine, nhưng với bản triển khai đồ họa mới được thiết kế để vượt qua các giới hạn của Wine.

Dùng Claude AI để phát triển phần mềm

Brewster mô tả phần lớn quá trình này là “vibe coding.”

Nói đơn giản, ông không kiểm tra thủ công từng dòng mã do AI sinh ra. Thay vào đó, ông dựa nhiều vào việc biên dịch phần mềm, chạy thử nghiệm, kiểm tra kết quả, tìm lỗi rồi yêu cầu AI sửa hoặc cải thiện mã.

Tuy nhiên, điều này không có nghĩa nhà phát triển chỉ bảo AI viết chương trình rồi không làm gì thêm.

Brewster đã kiểm tra bản triển khai, điều tra sự cố, so sánh kết quả và sửa những lỗi quan trọng. Mã do AI tạo cũng trải qua nhiều vòng kiểm tra và cải tiến.

Điểm bất thường nằm ở quy mô: một thành phần đồ họa rất lớn được tạo ra trong thời gian ngắn với sự trợ giúp đáng kể từ một tác nhân mã hóa AI.

Phản ứng của cộng đồng

Có ba lý do quan trọng khiến thử nghiệm này được chú ý.

1. Paint.NET trên Linux lấp vào khoảng trung gian hữu ích

Linux đã có những trình chỉnh sửa ảnh mạnh như GIMP và Krita. Tuy nhiên, một số người dùng thấy các ứng dụng này phức tạp hơn nhu cầu thực tế.

Ở đầu kia, lại có những chương trình vẽ rất đơn giản.

Paint.NET nằm giữa hai nhóm này. Nó cung cấp các công cụ quen thuộc như lớp, độ trong suốt, vùng chọn, hiệu ứng và tính năng vẽ đơn giản, mà không cố trở thành bộ phần mềm đồ họa chuyên nghiệp hoàn chỉnh.

Với một số người dùng Linux, điều đó khiến Paint.NET trở thành lựa chọn thay thế hấp dẫn.

2. AI có thể thay đổi những gì một nhà phát triển xây dựng được

Thử nghiệm cho thấy trợ lý mã hóa AI có thể giúp một nhà phát triển đơn lẻ giải quyết vấn đề kỹ thuật khó.

Triển khai một API đồ họa lớn thường là dự án kỹ thuật quan trọng. Ở đây, trợ lý AI được dùng để sinh lượng lớn mã, đồng thời hỗ trợ kiểm tra và gỡ lỗi.

Điều này không chứng minh AI có thể thay thế một đội ngũ kỹ thuật. Nó cho thấy phát triển có hỗ trợ AI có thể giúp một nhóm nhỏ — hoặc thậm chí một nhà phát triển — thử sức với những dự án trước đây cần nhiều thời gian kỹ thuật hơn.

3. Nó đặt ra câu hỏi pháp lý và kỹ thuật bất thường

Dự án cũng làm dấy lên thảo luận về phát triển clean-room và mã do AI tạo.

Wine từ lâu tuân theo các quy tắc nghiêm ngặt về cách phát triển mã tương thích Windows. Mã có nguồn gốc từ bản triển khai độc quyền của Microsoft hoặc từ kỹ thuật đảo ngược có thể gây vấn đề cho dự án.

AI đặt ra câu hỏi mới: Mã do mô hình AI tạo ra có được coi là mã clean-room nếu không ai có thể xác minh đầy đủ dữ liệu mà mô hình đã được huấn luyện hay không?

Một số nhà phát triển Wine đã thảo luận về vấn đề này.

Tuy nhiên, không nên phóng đại tình hình. Hiện không có bằng chứng cho thấy Claude đã sao chép mã nguồn Microsoft cho dự án này. Mối lo ngại nằm ở nguồn gốc không rõ ràng của mã do AI tạo và liệu mã đó có đáp ứng yêu cầu phát triển của Wine hay không.

Vì vậy, đây là câu hỏi kỹ thuật và pháp lý thực sự, không phải bằng chứng dự án Paint.NET vi phạm bản quyền của Microsoft.

Bốn điều cần biết trước khi thử Paint.NET trên Linux

Nếu muốn dùng thử Paint.NET trên Linux, bạn cần biết một số giới hạn quan trọng.

1. Dự kiến sẽ chậm và không ổn định

Đây là một thử nghiệm cực kỳ sớm.

Nó không dành cho sử dụng hằng ngày và không được hỗ trợ chính thức như bản phát hành Linux ổn định.

Brewster mô tả tình trạng hiện tại bằng cụm từ hài hước:

“It doesn’t not work.”

Nói cách khác, Paint.NET có thể chạy, nhưng nhiều thứ vẫn có thể sai.

Wine vẫn còn thiếu hoặc chưa hoàn thiện một số tính năng Windows mà Paint.NET mong đợi. Bản triển khai đồ họa mới cũng chưa được kiểm thử dài hạn như một engine đồ họa sản xuất trưởng thành.

2. Dùng bản portable

Trình cài đặt Windows thông thường của Paint.NET không hoạt động đúng trong thiết lập Wine thử nghiệm này.

Bạn nên dùng bản portable của Paint.NET 5.2 Alpha.

Hướng dẫn thử nghiệm chính thức cũng yêu cầu Wine 11.14 hoặc mới hơn.

3. Cần cấu hình đồ họa bổ sung

Thử nghiệm dùng DXVK, công cụ chuyển lệnh đồ họa Direct3D thành lệnh Vulkan.

Bạn cũng cần thư viện native d3dcompiler_47 thay vì bản tích hợp sẵn của Wine.

Các bước thiết lập dùng:

winetricks d3dcompiler_47 dxvk

Trình điều khiển đồ họa phải hỗ trợ phiên bản Vulkan mà phiên bản DXVK bạn chọn yêu cầu.

Cụ thể, DXVK 3.x yêu cầu Vulkan 1.4, còn các bản DXVK 2.7.x cũ hơn hoạt động với Vulkan 1.3.

Vì vậy, nếu hệ thống chỉ hỗ trợ Vulkan 1.3, bạn có thể cần bản DXVK cũ hơn, chẳng hạn 2.7.1.

4. Phải khởi động Paint.NET bằng /wine

Bạn không thể khởi động chương trình theo cách thông thường.

Bản thử nghiệm cần được khởi chạy bằng tùy chọn dòng lệnh /wine:

wine PaintDotNet.exe /wine

Điều này báo cho Paint.NET biết nó đang chạy dưới Wine và kích hoạt hành vi tương thích đặc biệt.

Trong số những tác động khác, nó giúp chương trình tránh các tính năng desktop Windows không hoạt động đúng trên Wine và dùng bản triển khai đồ họa mới.

Cài đặt Paint.NET 5.2 Alpha trên Ubuntu 26.04

Thiết lập thử nghiệm đã chạy thành công trên Ubuntu 26.04 LTS Desktop với:

  • Ubuntu 26.04 LTS desktop bản 64-bit
  • Wine 11.16 Staging
  • Wine prefix riêng
  • Winetricks
  • DXVK
  • Bản native của d3dcompiler_47
  • Paint.NET 5.200.9739.41506 Alpha
  • Bản portable x64

Ứng dụng đã khởi chạy thành công và hiển thị giao diện đồ họa Paint.NET.

Điều này xác nhận bản triển khai Paint.NET/Wine thử nghiệm có thể chạy trên bản Ubuntu LTS hiện tại.

Nếu muốn tự kiểm tra Paint.NET trên Ubuntu, hãy làm theo các bước dưới đây.

Bước 1: Bật hỗ trợ gói 32-bit

Mở terminal và chạy:

sudo dpkg --add-architecture i386
sudo apt update

Bước 2: Cài đặt gói tiên quyết WineHQ

sudo apt install wget gnupg2 software-properties-common

Bước 3: Thêm kho lưu trữ WineHQ

Tạo thư mục keyring:

sudo mkdir -pm755 /etc/apt/keyrings

Tải và cài khóa ký WineHQ:

wget -qO- https://dl.winehq.org/wine-builds/winehq.key \
| gpg --dearmor \
| sudo tee /etc/apt/keyrings/winehq-archive.key > /dev/null

Thêm kho WineHQ cho Ubuntu 26.04 resolute:

sudo wget -NP /etc/apt/sources.list.d/ \
https://dl.winehq.org/wine-builds/ubuntu/dists/resolute/winehq-resolute.sources

Cập nhật danh sách gói:

sudo apt update

Bước 4: Cài Wine Staging

Bản Wine mặc định của Ubuntu quá cũ so với hỗ trợ Linux thử nghiệm của Paint.NET. Ubuntu 26.04 hiện cung cấp Wine 10.0 trong kho chuẩn, trong khi Paint.NET 5.2 Alpha yêu cầu Wine 11.14 hoặc mới hơn. Vì vậy, chúng ta dùng WineHQ Staging, bản Wine đủ mới.

Cài Wine Staging:

sudo apt install --install-recommends winehq-staging

Kiểm tra phiên bản đã cài:

wine --version

Bản cài đặt được kiểm thử báo:

wine-11.16 (Staging)

Yêu cầu quan trọng cho thử nghiệm Paint.NET này là Wine 11.14 hoặc mới hơn.

Bước 5: Tạo Wine prefix riêng

Nên giữ Paint.NET trong môi trường Wine riêng thay vì trộn chung với các ứng dụng Windows khác.

Chạy:

export WINEPREFIX="$HOME/.wine-paintnet"
export WINEARCH=win64
wineboot -u

Sau đó khởi tạo cấu hình Wine:

winecfg

Nếu cửa sổ cấu hình Wine mở thành công, bạn có thể tiếp tục. Đóng cửa sổ cấu hình và làm tiếp các bước dưới đây.

Quan trọng:

Khi mở terminal mới sau này, nhớ đặt lại prefix:

export WINEPREFIX="$HOME/.wine-paintnet"

WINEARCH=win64 chỉ cần khi tạo prefix; sau đó thông thường không cần chỉ định lại.

Bước 6: Cài Winetricks

Kiểm tra Winetricks đã được cài chưa:

winetricks --version

Nếu chưa cài:

sudo apt install winetricks

Hệ thống được kiểm thử dùng Winetricks phiên bản:

20250102

Bước 7: Cài DXVK và d3dcompiler_47

Đảm bảo đang chọn prefix Paint.NET riêng:

export WINEPREFIX="$HOME/.wine-paintnet"

Sau đó chạy:

winetricks d3dcompiler_47 dxvk

Để Winetricks hoàn tất quá trình cài đặt.

Bước 8: Xác minh ghi đè DLL

Chạy:

wine reg query "HKCU\Software\Wine\DllOverrides"

Các mục liên quan phải hiển thị native.

Cấu hình được kiểm thử chứa:

*d3d10core          REG_SZ    native
*d3d11              REG_SZ    native
*d3d8               REG_SZ    native
*d3d9               REG_SZ    native
*d3dcompiler_47     REG_SZ    native
*dxgi               REG_SZ    native

Đặc biệt, phải có mục này:

*d3dcompiler_47     REG_SZ    native

Nếu thiếu các ghi đè này, đừng chuyển sang khắc phục sự cố Paint.NET. Hãy sửa cấu hình Wine/DXVK trước.

Bước 9: Kiểm tra Vulkan

Cài công cụ chẩn đoán Vulkan:

sudo apt install vulkan-tools

Sau đó chạy:

vulkaninfo --summary

Bạn cần hỗ trợ Vulkan hoạt động để DXVK chạy được.

Thiết bị Vulkan cụ thể tùy thuộc phần cứng và cấu hình đồ họa.

Ví dụ, một hệ thống có thể báo GPU vật lý Intel, AMD hoặc NVIDIA.

Các bản triển khai Vulkan bằng phần mềm như llvmpipe cũng có thể cung cấp Vulkan, nhưng hiệu suất có thể kém hơn nhiều vì CPU đảm nhiệm việc kết xuất.

Bước 10: Tải Paint.NET 5.2 Alpha

Tải bản portable x64 của Paint.NET 5.2 Alpha từ trang phát hành GitHub của Paint.NET.

Đừng dùng trình cài đặt Windows thông thường.

Bản được kiểm thử là: paint.net.5.200.9739.41506.portable.x64.zip.

Tạo thư mục cho Paint.NET:

mkdir -p ~/PaintDotNet

Tải tệp ZIP vào thư mục đó:

cd ~/PaintDotNet
wget https://github.com/paintdotnet/release/releases/download/v5.2-alpha.5.200.9739.41506/paint.net.5.200.9739.41506.portable.x64.zip

Sau đó giải nén:

unzip paint.net.5.200.9739.41506.portable.x64.zip

Nếu unzip chưa được cài:

sudo apt install unzip

Sau khi giải nén, thư mục chứa ứng dụng gồm:

paintdotnet.exe

cùng các DLL Paint.NET và tệp runtime khác.

Bước 11: Khởi chạy Paint.NET

Đảm bảo đang chọn Wine prefix riêng:

export WINEPREFIX="$HOME/.wine-paintnet"

Đảm bảo bạn đang ở trong thư mục Paint.NET. Nếu không, hãy cd vào đó:

cd ~/PaintDotNet

Khởi chạy Paint.NET bằng lệnh:

wine paintdotnet.exe /wine

Tham số /wine rất quan trọng. Nó kích hoạt chế độ tương thích Wine/Linux thử nghiệm của Paint.NET.

Nếu mọi thứ được cấu hình đúng, giao diện Paint.NET sẽ mở.

Bước 12: Lệnh khởi chạy tiện lợi

Khi mọi thứ đã hoạt động, bạn không cần đổi thư mục trước mỗi lần chạy.

Bạn có thể khởi chạy Paint.NET từ bất kỳ đâu bằng:

WINEPREFIX="$HOME/.wine-paintnet" \
wine "$HOME/PaintDotNet/paintdotnet.exe" /wine

Đây là lệnh nên giữ lại để dùng về sau.

Khắc phục sự cố

Nếu Paint.NET không khởi động, hãy kiểm tra theo thứ tự sau.

Kiểm tra Wine

wine --version

Bạn cần 11.14 hoặc mới hơn cho thử nghiệm này.

Kiểm tra Wine prefix

echo "$WINEPREFIX"

Nó phải trỏ đến:

/home/YOUR_USERNAME/.wine-paintnet

Nếu trống hoặc sai:

export WINEPREFIX="$HOME/.wine-paintnet"

Kiểm tra DXVK và ghi đè DLL

wine reg query "HKCU\Software\Wine\DllOverrides"

Đảm bảo d3dcompiler_47 được đặt thành native, cùng với các ghi đè DXVK liên quan.

Kiểm tra Vulkan

vulkaninfo --summary

Nếu Vulkan không khả dụng, DXVK không thể hoạt động đúng.

Kiểm tra tệp thực thi Paint.NET

ls ~/PaintDotNet/paintdotnet.exe

Kiểm tra lệnh khởi chạy

Dùng:

WINEPREFIX="$HOME/.wine-paintnet" \
wine "$HOME/PaintDotNet/paintdotnet.exe" /wine

Đừng bỏ qua /wine.

Chế độ /wine thực sự làm gì

Tùy chọn /wine không chỉ là một cờ tương thích đơn giản.

Theo nhà phát triển Paint.NET, chế độ này vô hiệu hóa một số tính năng riêng của Windows không phù hợp hoặc không hoạt động dưới Wine, gồm:

  • UIAnimation
  • Composition
  • Windows 11 DisplayInformation

Nó cũng kích hoạt bản triển khai Direct2D nội bộ của Paint.NET nằm trong:

PaintDotNet.Windows.Direct2D1.Managed.dll

Đây là công nghệ đồ họa giúp thử nghiệm chạy được mà không yêu cầu Wine cung cấp toàn bộ chức năng Direct2D mà Paint.NET thường mong đợi.

Kỳ vọng hiệu suất

Hiệu suất phụ thuộc nhiều vào cấu hình đồ họa của hệ thống Linux.

Hệ thống có Vulkan tăng tốc GPU phù hợp sẽ cho trải nghiệm tốt hơn nhiều so với hệ thống dựa vào kết xuất phần mềm.

Nếu vulkaninfo --summary báo:

llvmpipe

thì Vulkan đang được kết xuất bằng CPU.

Paint.NET vẫn có thể khởi động và hoạt động, nhưng bạn nên dự kiến hiệu suất chậm hơn, đặc biệt khi:

  • xử lý ảnh lớn
  • phóng to/thu nhỏ
  • thao tác canvas
  • hiệu ứng nặng GPU
  • vùng chọn hoặc phép biến đổi phức tạp

Điều này không nên bị nhầm với lỗi tương thích Paint.NET. Ứng dụng vẫn chạy thành công ngay cả khi tăng tốc Vulkan bị hạn chế.

Kết luận

Thử nghiệm này thú vị vì một lý do vượt ra ngoài Paint.NET.

Trong nhiều năm, một số ứng dụng Windows khó hoặc không thể chạy đúng trên Linux vì chúng phụ thuộc các thành phần Windows mà Wine chưa triển khai đầy đủ.

Thông thường, giải quyết vấn đề như vậy đòi hỏi nhà phát triển Wine dành rất nhiều thời gian để tái tạo công nghệ Windows còn thiếu.

Thử nghiệm Paint.NET đi theo hướng khác.

Thay vì chờ Wine triển khai mọi thứ Paint.NET cần, nhà phát triển đã dùng trợ lý mã hóa AI để tạo bản triển khai riêng cho Paint.NET.

Nó vẫn ở giai đoạn thử nghiệm, và còn nhiều câu hỏi chưa có lời giải về hiệu suất, độ tin cậy, khả năng bảo trì cũng như việc dùng mã do AI tạo.

Nhưng thử nghiệm cho thấy một điều quan trọng:

Công cụ mã hóa AI đang đủ khả năng giúp nhà phát triển xây dựng những thành phần phần mềm lớn và phức tạp về kỹ thuật trong khoảng thời gian rất ngắn.

Liệu cách tiếp cận này có tạo ra phần mềm đáng tin cậy ở quy mô lớn hay không vẫn là câu hỏi mở.

Với hiện tại, Paint.NET trên Linux nên được xem không phải bản phát hành Linux hoàn chỉnh, mà là một thử nghiệm đáng chú ý về phát triển phần mềm có hỗ trợ AI, tương thích Windows và tương lai của kỹ thuật mã nguồn mở.

Tham khảo nhanh cài đặt Paint.NET trên Ubuntu Linux

Dành cho người đã cài Ubuntu 26.04 và chỉ cần chuỗi lệnh hoàn chỉnh:

# Enable 32-bit packages
sudo dpkg --add-architecture i386
sudo apt update
# WineHQ prerequisites
sudo apt install wget gnupg2 software-properties-common
# WineHQ signing key
sudo mkdir -pm755 /etc/apt/keyrings
wget -qO- https://dl.winehq.org/wine-builds/winehq.key \
| gpg --dearmor \
| sudo tee /etc/apt/keyrings/winehq-archive.key > /dev/null
# WineHQ repository for Ubuntu 26.04
sudo wget -NP /etc/apt/sources.list.d/ \
https://dl.winehq.org/wine-builds/ubuntu/dists/resolute/winehq-resolute.sources
sudo apt update
# Install Wine Staging
sudo apt install --install-recommends winehq-staging
# Verify Wine
wine --version
# Create dedicated 64-bit Wine prefix
export WINEPREFIX="$HOME/.wine-paintnet"
export WINEARCH=win64
wineboot -u
# Install Wine configuration
winecfg
# Install Winetricks
sudo apt install winetricks
# Install required graphics components
export WINEPREFIX="$HOME/.wine-paintnet"
winetricks d3dcompiler_47 dxvk
# Verify DLL overrides
wine reg query "HKCU\Software\Wine\DllOverrides"
# Optional Vulkan diagnostic
sudo apt install vulkan-tools
vulkaninfo --summary
# Create Paint.NET directory
mkdir -p ~/PaintDotNet
# Extract the downloaded Paint.NET 5.2 Alpha portable ZIP
cd ~/PaintDotNet
unzip paint.net.5.200.9739.41506.portable.x64.zip
# Launch Paint.NET
WINEPREFIX="$HOME/.wine-paintnet" \
wine "$HOME/PaintDotNet/paintdotnet.exe" /wine

Tài nguyên: