วิธีตั้งค่าสคริปต์สลับเอาต์พุตเสียง PipeWire บน Debian

วิธีที่ง่ายและน่าเชื่อถือที่สุดในการสลับเอาต์พุตของ PipeWire จากสคริปต์บน Debian คือการใช้wpctlเครื่องมือบรรทัดคำสั่ง WirePlumber: ระบุโหนด sink สองโหนดที่คุณต้องการ ตรวจสอบ sink เริ่มต้นปัจจุบัน และเรียกwpctl set-default IDใช้ sink อีกโหนดหนึ่ง วิธีนี้ดีกว่าการกำหนด ID โหนดเป็นตัวเลขแบบตายตัว เพราะ ID ของอ็อบเจ็กต์ PipeWire อาจเปลี่ยนแปลงได้เมื่ออุปกรณ์ตัดการเชื่อมต่อ เชื่อมต่อใหม่ หรือเซสชันเริ่มต้นใหม่

คู่มือนี้ใช้การสลับอุปกรณ์สองตัว เช่น ลำโพงแล็ปท็อปและหูฟังบลูทูธ และตั้งใจรักษาตรรกะให้เข้ากันได้กับทั้ง Debian 13 (Trixie) และ Debian 12 (Bookworm) ในปัจจุบัน ณ เดือนตุลาคม 2026 หน้าแพ็กเกจของ Debian แสดงรายการ WirePlumber เวอร์ชัน 0.5.8 ใน Debian 13 และ 0.4.13 ใน Debian 12 เวอร์ชัน WirePlumber ที่ใหม่กว่ามีคุณสมบัติการแสดงรายการเพิ่มเติม แต่wpctl status -n, wpctl inspect, และwpctl set-defaultเป็นตัวร่วมที่จำเป็นในที่นี้

เมื่อวิธีการนี้เหมาะสม

ใช้วิธีนี้เมื่อ PipeWire กำลังจัดการเสียงบนเดสก์ท็อปอยู่แล้ว และคุณต้องการทางลัดแป้นพิมพ์ ตัวเรียกใช้งาน ชื่อย่อในเชลล์ หรือปุ่มลัดเพื่อสลับระหว่างเอาต์พุตสองตัว วิธีนี้ใช้ได้ดีกับเอาต์พุตอะนาล็อกในตัว รวมถึง DAC USB จอภาพ HDMI ชุดหูฟังบลูทูธ หรืออุปกรณ์รับสัญญาณอื่นๆ ที่ปรากฏใน ส่วน Sinksของwpctl statusPipeWire

นี่ไม่ใช่เครื่องมือที่เหมาะสมสำหรับปัญหาการกำหนดเส้นทางทุกประเภท การเปลี่ยนแปลงนี้wpctl set-defaultจะเปลี่ยนเป้าหมายเริ่มต้นที่ใช้สำหรับสตรีมที่ต้องการการเชื่อมต่ออัตโนมัติ และไม่รับประกันว่าแอปพลิเคชันที่กำลังทำงานอยู่ทุกตัวจะย้ายสตรีมที่มีอยู่ทันที บางแอปพลิเคชันจะปฏิบัติตามค่าเริ่มต้นใหม่โดยอัตโนมัติ ในขณะที่บางแอปพลิเคชันอาจต้องย้ายสตรีมแยกต่างหากหรือรีสตาร์ทแอปพลิเคชัน

ก่อนที่คุณจะเขียนบท

ตรวจสอบให้แน่ใจว่าเซสชัน PipeWire และ WirePlumber ระดับผู้ใช้ทำงานได้อย่างปกติ เอกสารอย่างเป็นทางการของ WirePlumber แนะนำให้ตรวจสอบ daemon ด้วยคำสั่ง ` wirewire.json` systemctl --user status wireplumberนอกจากนี้ Debian ยังแนะนำให้ใช้pipewire-audiometapackage บน Debian 12 และเวอร์ชันที่ใหม่กว่าเมื่อตั้งค่า PipeWire audio stack แบบสมบูรณ์

systemctl --user status wireplumber
systemctl --user status pipewire pipewire-pulse

หากwpctlไม่พบ ให้ติดตั้ง WirePlumber และส่วนประกอบเสียง PipeWire ตามปกติ แทนที่จะพยายามใช้ยูทิลิตี้มิกเซอร์ที่ไม่เกี่ยวข้องมาทดแทน:

sudo apt update
sudo apt install pipewire-audio wireplumber

อย่ารันwpctlด้วยsudoคำสั่ง `pipeWire` เพราะโดยปกติแล้ว PipeWire และ WirePlumber จะทำงานในเซสชันของผู้ใช้เดสก์ท็อป ดังนั้นคำสั่งควรเชื่อมต่อกับกราฟสื่อของผู้ใช้นั้น

ขั้นตอนที่ 1: ค้นหาชื่อของปลายทางเอาต์พุต

วิ่ง:

wpctl status -n

ตัวเลือก นี้-nขอwpctlให้แสดงชื่อวัตถุแทนคำอธิบายที่เข้าใจง่าย ภายใต้Audio → Sinksให้จดชื่อของเอาต์พุตทั้งสองที่คุณต้องการสลับการใช้งาน เครื่องอาจแสดง sink ในตัวที่มีลักษณะคล้ายกับalsa_output.pci-0000_00_1f.3.analog-stereoและ sink บลูทูธที่ขึ้นต้นbluez_output.ด้วย

หน้าต่างเทอร์มินัล Debian แสดงสถานะ wpctl status -n โดยมีอุปกรณ์รับสัญญาณเสียงแบบอนาล็อกในตัวและอุปกรณ์รับสัญญาณเสียงบลูทูธแสดงอยู่ในรายการ Audio Sinks
ตัวอย่างมุมมองเทอร์มินัลwpctl status -n: ระบุส่วนย่อยของชื่อที่เสถียรภายใต้หัวข้อ Sinks แทนที่จะคัดลอกรหัสตัวเลขลงในสคริปต์

เลือกส่วนย่อยของชื่อไฟล์ที่มีลักษณะเฉพาะและตรงกับเอาต์พุตที่ต้องการเท่านั้น สำหรับการ์ดเสียงแบบติดตั้งในตัวalsa_output...ชื่อโหนดแบบเต็มมักเป็นตัวเลือกที่เหมาะสม สำหรับอุปกรณ์บลูทูธbluez_output.ส่วนย่อยที่สั้นกว่าจะสะดวกก็ต่อเมื่อคุณเชื่อมต่ออุปกรณ์รับเสียงบลูทูธเพียงตัวเดียวเป็นประจำ หากคุณเชื่อมต่อเอาต์พุตบลูทูธหลายตัวบ่อยๆ ให้ใช้ส่วนย่อยที่ยาวกว่าและเฉพาะเจาะจงสำหรับอุปกรณ์นั้นๆ

ขั้นตอนที่ 2: ตรวจสอบอ่างล้างจานด้วยคำสั่ง wpctl inspect

ก่อนเขียนสคริปต์สวิตช์ โปรดตรวจสอบ ID ใด ID หนึ่งที่แสดงโดยwpctl status -n:

wpctl inspect 45

แทนที่45ด้วย ID ปัจจุบันในระบบของคุณ มองหาคุณสมบัติเช่นnode.nameและmedia.classสำหรับเอาต์พุตการเล่นmedia.classควรระบุแหล่งรับสัญญาณเสียง ID ตัวเลขมีประโยชน์สำหรับการตรวจสอบและสำหรับset-defaultคำสั่งโดยตรง แต่สคริปต์ด้านล่างจะกำหนด ID ใหม่ทุกครั้งที่ทำงาน

เทอร์มินัล Debian แสดงผลลัพธ์ของคำสั่ง wpctl inspect พร้อมด้วย node.name สำหรับ audio sink ในตัว และ media.class Audio Sink
การตรวจสอบ sink จะยืนยันชื่อโหนดที่สคริปต์จะตรงกัน และช่วยแยกแยะ sink สำหรับการเล่นออกจาก source หรือวัตถุ PipeWire ที่ไม่เกี่ยวข้อง

คุณยังสามารถถาม WirePlumber ว่าอ่างล้างจานใดเป็นค่าเริ่มต้นโดยไม่ต้องทราบรหัสตัวเลขของอ่างล้างจานนั้นได้:

wpctl inspect @DEFAULT_AUDIO_SINK@

ตัวระบุพิเศษนี้@DEFAULT_AUDIO_SINK@ได้รับการบันทึกไว้ในเอกสารของ WirePlumber และจะถูกแปลงเป็นโหนดการเล่นเริ่มต้นปัจจุบันในระหว่างการทำงาน

ขั้นตอนที่ 3: สร้างสคริปต์สลับเอาต์พุตสองตัว

หากจำเป็น ให้สร้างไดเร็กทอรีสำหรับไฟล์ปฏิบัติการส่วนตัว จากนั้นเปิดสคริปต์:

mkdir -p ~/.local/bin
nano ~/.local/bin/toggle-audio-output

วางโค้ดต่อไปนี้แล้วแทนที่SINK_Aด้วยSINK_Bส่วนต่างๆ จากwpctl status -nผลลัพธ์ของคุณเอง:

#!/usr/bin/env bash
set -euo pipefail

# Replace these with distinctive fragments from `wpctl status -n`.
SINK_A="alsa_output.pci-0000_00_1f.3.analog-stereo"
SINK_B="bluez_output."

find_sink_id() {
    local needle="$1"
    wpctl status -n | awk -v n="$needle" '
        /Sinks:/   { in_sinks=1; next }
        /Sources:/ { in_sinks=0 }
        in_sinks && index($0, n) {
            for (i=1; i<=NF; i++) {
                if ($i ~ /^[0-9]+\.$/) {
                    gsub(/\./, "", $i)
                    print $i
                    exit
                }
            }
        }'
}

current_name="$(
    wpctl inspect @DEFAULT_AUDIO_SINK@ |
    awk -F'= ' '/node.name/ {
        gsub(/"/, "", $2)
        print $2
        exit
    }'
)"

if [[ "$current_name" == *"$SINK_A"* ]]; then
    target_pattern="$SINK_B"
elif [[ "$current_name" == *"$SINK_B"* ]]; then
    target_pattern="$SINK_A"
else
    # If the current default is neither target, switch to A first.
    target_pattern="$SINK_A"
fi

target_id="$(find_sink_id "$target_pattern")"

if [[ -z "$target_id" ]]; then
    printf 'No available sink matched: %s\n' "$target_pattern" >&2
    exit 1
fi

wpctl set-default "$target_id"
printf 'Default audio sink changed to ID %s\n' "$target_id"
โปรแกรมแก้ไขข้อความ Nano ในเทอร์มินัล Debian แสดงสคริปต์ Bash ที่ระบุชื่อซิงค์ PipeWire สองชื่อ และเปลี่ยนซิงค์เริ่มต้นด้วย wpctl
สคริปต์สลับควรจับคู่ชื่อซิงค์แบบไดนามิก กำหนดค่าเริ่มต้นปัจจุบัน และแก้ไขรหัสวัตถุปัจจุบันของเป้าหมายก่อนที่จะเรียกwpctl set-defaultใช้

เหตุใดสคริปต์จึงแก้ไข ID ได้ทุกครั้ง

รหัสประจำตัวของวัตถุ PipeWire เป็นวัตถุในเซสชัน ดังนั้นการ treating รหัสประจำตัวดังกล่าว45เป็นตัวระบุอุปกรณ์ถาวรจึงไม่เหมาะสม สคริปต์จะจัดเก็บส่วนของชื่อโหนดที่สามารถจดจำได้แทน วิเคราะห์ส่วน Sinks ปัจจุบัน และดึงรหัสตัวเลขออกมาเฉพาะในขณะที่ทำการสลับเท่านั้น

เหตุใดจึงใช้ wpctl inspect สำหรับค่าเริ่มต้นปัจจุบัน

สคริปต์จะขอ@DEFAULT_AUDIO_SINK@ชื่อนั้นnode.nameซึ่งจะหลีกเลี่ยงการพึ่งพาตำแหน่งของเครื่องหมายดอกจัน เมื่อพิจารณา ว่าwpctl statusอ่างล้างจานใดถูกเลือกอยู่ในขณะนี้ จากนั้นจะเปรียบเทียบชื่อนั้นกับSINK_AและSINK_B

ขั้นตอนที่ 4: ทำให้สคริปต์สามารถเรียกใช้งานได้และทดสอบ

บันทึกไฟล์ จากนั้นเรียกใช้คำสั่ง:

chmod +x ~/.local/bin/toggle-audio-output
~/.local/bin/toggle-audio-output
wpctl status -n

หากซิงค์เป้าหมายพร้อมใช้งาน สคริปต์ควรพิมพ์ ID ที่เลือกไว้ เรียกใช้สคริปต์อีกครั้ง และสคริปต์ควรเลือกซิงค์อื่นที่กำหนดค่าไว้ ตรวจสอบผลลัพธ์ด้วยwpctl status -nหรือโดยการตรวจ@DEFAULT_AUDIO_SINK@สอบ

หลังจากรันสคริปต์สลับเสียงแบบไฟล์ปฏิบัติการในเทอร์มินัล Debian แล้ว คำสั่ง wpctl status แสดงว่าอุปกรณ์รับสัญญาณบลูทูธเป็นเอาต์พุตเริ่มต้น
หลังจากสคริปต์ทำงานเสร็จแล้ว ให้ตรวจwpctl status -nสอบว่าซิงค์ที่ต้องการได้ถูกตั้งค่าเป็นค่าเริ่มต้นแล้ว

เอกสารของ WirePlumber wpctl set-default IDระบุว่าการตั้งค่า sink หรือ source เป็นเป้าหมายเริ่มต้นนั้น ใน WirePlumber เวอร์ชันใหม่ ระบบจะจดจำการเลือกของผู้ใช้และอาจมีลำดับความสำคัญเหนือกว่าการเลือกอัตโนมัติตามลำดับความสำคัญ หากคุณต้องการให้ WirePlumber กลับไปใช้การเลือกเริ่มต้นอัตโนมัติในภายหลัง ให้ใช้คำสั่งต่อไปนี้:

wpctl clear-default

เพิ่มสคริปต์ลงในปุ่มลัดบนแป้นพิมพ์

เมื่อการทดสอบเทอร์มินัลทำงานได้อย่างน่าเชื่อถือแล้ว ให้กำหนด/home/YOUR_USER/.local/bin/toggle-audio-outputคีย์ลัดให้กับโปรแกรมบนเดสก์ท็อป ควรใช้พาธแบบเต็ม (absolute path) แทนการใช้~พาธย่อย (parameter) เพราะโปรแกรมเรียกใช้คีย์ลัดบางตัวไม่ขยายคีย์ลัดของเชลล์ ลักษณะของคีย์ลัดจะขึ้นอยู่กับสภาพแวดล้อมของเดสก์ท็อป ดังนั้นการทดสอบที่สำคัญคือ สคริปต์ต้องทำงานได้อย่างถูกต้องจากเทอร์มินัลของผู้ใช้ทั่วไปก่อน

หากทางลัดทำงานได้แต่wpctlแจ้งว่าไม่สามารถเชื่อมต่อได้ อาจเป็นเพราะตัวเรียกใช้งานไม่ได้รับสภาพแวดล้อมเซสชันผู้ใช้ที่คาดหวังไว้ ตรวจสอบคำสั่งเดียวกันจากเทอร์มินัลภายในเซสชันแบบกราฟิก จากนั้นตรวจสอบกฎการเรียกใช้ทางลัดของสภาพแวดล้อมเดสก์ท็อป อย่าแก้ปัญหานี้โดยการเพิ่มคำนำหน้าสคริปต์ด้วยsudo.

การแก้ไขปัญหาข้อผิดพลาดทั่วไป

“ไม่มีอ่างล้างจานที่ตรงกับความต้องการ”

เป้าหมายอาจตัดการเชื่อมต่อ ชื่อโหนดอาจเปลี่ยนไป หรือรูปแบบของคุณเฉพาะเจาะจงเกินไป ลองรันwpctl status -nใหม่และอัปเดตค่าที่เกี่ยวข้องSINK_AสำหรับSINK_Bบลูทูธ โปรดตรวจสอบให้แน่ใจว่าชุดหูฟังเชื่อมต่ออยู่และมีการเปิดใช้งานตัวรับสัญญาณเสียงก่อนเรียกใช้สคริปต์

สคริปต์จะเปลี่ยนค่าเริ่มต้น แต่เสียงที่มีอยู่จะยังคงเล่นต่อไปในที่อื่น

นี่อาจเป็นเรื่องปกติ เอกสารต้นทางอธิบายset-defaultว่าเป็นการเลือกเป้าหมายสำหรับสตรีมใหม่ที่ต้องการการเชื่อมต่ออัตโนมัติ หากสตรีมที่มีอยู่ของแอปพลิเคชันใดแอปพลิเคชันหนึ่งยังคงอยู่บนปลายทางเดิม ให้หยุดและเริ่มเล่นใหม่ หรือเปิดแอปพลิเคชันนั้นอีกครั้ง หากคุณต้องการย้ายสตรีมที่มีอยู่โดยเฉพาะ ให้ดำเนินการเป็นงานกำหนดเส้นทางแยกต่างหาก แทนที่จะคิดว่าset-defaultมันจะรับประกันได้เสมอไป

เลือกอุปกรณ์บลูทูธผิดตัว

ระบุให้SINK_Bละเอียดกว่านี้ รูปแบบทั่วไปเช่นนี้bluez_output.เหมาะสมเฉพาะเมื่อมีอุปกรณ์รับสัญญาณบลูทูธที่ตรงกันเพียงตัวเดียวเท่านั้น ใช้ชื่อโหนดแบบเต็มหรือส่วนตรงกลางที่ไม่ซ้ำกันเมื่อสามารถเชื่อมต่ออุปกรณ์ส่งสัญญาณไร้สายหลายตัวพร้อมกันได้

โปรแกรม WirePlumber ไม่ทำงาน

ตรวจสอบ:

systemctl --user status wireplumber
journalctl --user -u wireplumber

เอกสารต้นฉบับแนะนำsystemctl --user --now enable wireplumberให้ติดตั้ง daemon แต่ไม่ได้เปิดใช้งาน ในกรณีที่เดสก์ท็อป Debian ได้รับการกำหนดค่าไว้แล้ว ให้ตรวจสอบสาเหตุที่บริการผู้ใช้หยุดทำงานก่อนที่จะรีสตาร์ทระบบเสียงทั้งหมดซ้ำๆ

Debian 12 กับ Debian 13: มีอะไรเปลี่ยนแปลงบ้าง?

การเผยแพร่ Debianแพ็คเกจ WirePlumberผลกระทบในทางปฏิบัติของบทนี้
Debian 12 (Bookworm)0.4.13 ในที่เก็บมาตรฐานใช้เวิร์กโฟลว์ที่เข้ากันได้wpctl status -n, inspect, และset-defaultที่แสดงไว้ที่นี่
เดเบียน 13 (ทริกซี)0.5.8 ในที่เก็บมาตรฐานสคริปต์เดียวกันนี้ยังคงใช้งานได้ และ WirePlumber เวอร์ชันใหม่กว่ายังมีการปรับปรุงพฤติกรรมการกำหนดค่าผ่าน CLI และ JSON อีกด้วย

อย่าคัดลอกตัวอย่างการตั้งค่า WirePlumber 0.5 ไปใช้กับเวอร์ชัน 0.4 ที่เก่ากว่าโดยไม่ดูข้อมูลให้ครบถ้วน WirePlumber 0.5 ได้เปลี่ยนระบบการตั้งค่าไปแล้ว คู่มือนี้จึงหลีกเลี่ยงข้อจำกัดของเวอร์ชันดังกล่าวโดยใช้การดำเนินการผ่านบรรทัดคำสั่งแทนการใช้ไฟล์นโยบายแบบถาวร

รายการตรวจสอบการยืนยันอย่างรวดเร็ว

  • systemctl --user status wireplumberแสดงให้เห็นว่าตัวจัดการเซสชันกำลังทำงานอยู่
  • wpctl status -nแสดงรายการเอาต์พุตที่ต้องการทั้งสองรายการภายใต้ Sinks
  • wpctl inspect @DEFAULT_AUDIO_SINK@ส่งคืนโหนดการเล่นปัจจุบันที่ถูกต้อง
  • รูปแบบสคริปต์ทั้งสองแบบนี้ระบุปลายทางที่ต้องการได้อย่างชัดเจน
  • การเรียกใช้สคริปต์สองครั้งจะสลับค่าเริ่มต้นระหว่างผลลัพธ์ทั้งสอง
  • หากแอปพลิเคชันที่มีอยู่ไม่ได้ถูกย้าย คุณจะเข้าใจว่าการเลือกค่าเริ่มต้นและการย้ายสตรีมที่ใช้งานอยู่เป็นพฤติกรรมที่แยกจากกัน

เอกสารอ้างอิงหลัก

สำหรับความหมายของคำสั่งและพฤติกรรมปัจจุบันของ WirePlumber โปรดดูคู่มือ wpctl อย่างเป็นทางการของ WirePlumberและคู่มือเริ่มต้นใช้งาน WirePlumber อย่างเป็นทางการสำหรับข้อมูลแพ็กเกจและการตั้งค่าเฉพาะสำหรับ Debian โปรดดูเอกสาร PipeWire ของ Debian หน้าแพ็กเกจ WirePlumber ของDebian 12และ หน้าแพ็กเก จWirePlumber ของ Debian 13

ฝากความเห็น

วิธีเชื่อมต่อไคลเอ็นต์ Pardus Linux เข้ากับโดเมน Active Directory

วิธีเชื่อมต่อไคลเอ็นต์ Pardus Linux เข้ากับโดเมน Active Directory

เชื่อมต่อ Pardus Linux เข้ากับ Active Directory ด้วย Pardus Domain Joiner ตรวจสอบ DNS และเวลา ติดตั้ง CLI เชื่อมต่อด้วย SSSD และตรวจสอบสิทธิ์การเข้าสู่ระบบโดเมน

วิธีการตั้งค่า Pardus Image Creator สำหรับการติดตั้งระบบปฏิบัติการแบบกำหนดเอง

วิธีการตั้งค่า Pardus Image Creator สำหรับการติดตั้งระบบปฏิบัติการแบบกำหนดเอง

เรียนรู้ความสามารถของ Pardus Image Writer วิธีการติดตั้ง และวิธีการใช้งานไฟล์ ISO ที่กำหนดเองซึ่งได้รับการตรวจสอบแล้วไปยัง USB อย่างปลอดภัย รวมถึงคำแนะนำในการสร้างและทดสอบ

แก้ไขข้อผิดพลาด “Failed to Start Load Kernel Modules” ระหว่างการบูต SLES

แก้ไขข้อผิดพลาด “Failed to Start Load Kernel Modules” ระหว่างการบูต SLES

ตรวจสอบและแก้ไขข้อผิดพลาดของ systemd-modules-load.service บน SLES โดยการค้นหาโมดูลที่มีปัญหา แก้ไขการกำหนดค่าการบูต และสร้าง initramfs ใหม่เฉพาะเมื่อจำเป็นเท่านั้น

วิธีการย้ายเดสก์ท็อป Debian ไปยังระบบปฏิบัติการที่ไม่สามารถเปลี่ยนแปลงได้โดยใช้ OSTree

วิธีการย้ายเดสก์ท็อป Debian ไปยังระบบปฏิบัติการที่ไม่สามารถเปลี่ยนแปลงได้โดยใช้ OSTree

เรียนรู้ว่าเหตุใด Debian จึงไม่สามารถทำให้เป็น OSTree ที่ไม่สามารถเปลี่ยนแปลงได้ด้วยการติดตั้งแพ็กเกจเพียงแพ็กเกจเดียว จากนั้นจึงทำการย้ายไปยังเดสก์ท็อป OSTree อย่างปลอดภัย หรือวางแผนสร้างอิมเมจ Debian แบบกำหนดเอง

Fix Touchpad Gestures Not Working on Wayland in Ubuntu 24.04

Fix Touchpad Gestures Not Working on Wayland in Ubuntu 24.04

Fix missing three-finger touchpad gestures on Ubuntu 24.04 Wayland by checking GNOME settings, libinput events, updates, and extensions.

วิธีตั้งค่าสคริปต์สลับเอาต์พุตเสียง PipeWire บน Debian

วิธีตั้งค่าสคริปต์สลับเอาต์พุตเสียง PipeWire บน Debian

สร้างสคริปต์สลับเอาต์พุต PipeWire ที่เชื่อถือได้บน Debian ด้วย wpctl สลับระหว่างลำโพง, บลูทูธ, USB หรือ HDMI โดยไม่ต้องกำหนด ID แบบตายตัว

วิธีการตั้งค่าเครื่องพิมพ์ผ่าน CUPS บนระบบปฏิบัติการ HamoniKR

วิธีการตั้งค่าเครื่องพิมพ์ผ่าน CUPS บนระบบปฏิบัติการ HamoniKR

ตั้งค่าเครื่องพิมพ์ USB และเครื่องพิมพ์เครือข่ายบน HamoniKR OS ด้วย CUPS เพิ่มคิว เลือกใช้ IPP แบบไม่ต้องใช้ไดรเวอร์ หรือใช้ไดรเวอร์เฉพาะรุ่น ตั้งค่าเริ่มต้น และพิมพ์หน้าทดสอบ

วิธีจำกัดการใช้งาน CPU และ RAM ของกระบวนการด้วย Cgroups บน Ubuntu

วิธีจำกัดการใช้งาน CPU และ RAM ของกระบวนการด้วย Cgroups บน Ubuntu

ใช้ systemd cgroups บน Ubuntu เพื่อจำกัดเวลาการใช้งาน CPU และหน่วยความจำสำหรับคำสั่งหรือบริการ เปรียบเทียบขอบเขตชั่วคราว ข้อจำกัดถาวร และข้อดีข้อเสียที่สำคัญ

วิธีการแปลองค์ประกอบ UI ของ Gooroom OS เป็นภาษาอังกฤษ

วิธีการแปลองค์ประกอบ UI ของ Gooroom OS เป็นภาษาอังกฤษ

เปลี่ยนเมนูของ Gooroom OS เป็นภาษาอังกฤษเมื่อมีการรองรับภาษา ทำตามขั้นตอนการตั้งค่าของ GNOME, การใช้ภาษาสำรองของ Debian และการตรวจสอบการแก้ไขปัญหา

แก้ไขปัญหา Apt-Get Lock Could Not Get Lock /var/lib/dpkg/lock-frontend ใน Ubuntu

แก้ไขปัญหา Apt-Get Lock Could Not Get Lock /var/lib/dpkg/lock-frontend ใน Ubuntu

เรียนรู้วิธีแก้ไขข้อผิดพลาด apt-get lock ใน Ubuntu โดยการตรวจสอบกระบวนการแพ็กเกจที่ใช้งานอยู่ รออย่างปลอดภัย และซ่อมแซม dpkg เฉพาะเมื่อการอัปเดตถูกขัดจังหวะเท่านั้น