forked from zbw/yiliao2026
45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
import subprocess, sys
|
|
|
|
# ============================================
|
|
# 修改下面这个数字即可调整音量,范围 0 ~ 100
|
|
# ============================================
|
|
VOLUME = 80 # 百分比
|
|
|
|
SINK = "alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo"
|
|
|
|
def run(cmd):
|
|
subprocess.run(cmd, capture_output=True, text=True)
|
|
|
|
def get_volume():
|
|
r = subprocess.run(["pactl", "get-sink-volume", SINK],
|
|
capture_output=True, text=True)
|
|
for line in r.stdout.splitlines():
|
|
if "front-left:" in line:
|
|
print(f"当前音量: {line.strip()}")
|
|
return
|
|
print(r.stdout.strip())
|
|
|
|
if len(sys.argv) > 1:
|
|
try:
|
|
v = int(sys.argv[1])
|
|
if 0 <= v <= 100:
|
|
VOLUME = v
|
|
else:
|
|
print("音量需在 0~100 之间")
|
|
sys.exit(1)
|
|
except ValueError:
|
|
print(f"用法: python3 set_volume.py [0~100]")
|
|
sys.exit(1)
|
|
|
|
print(f"设置音量为 {VOLUME}% ...")
|
|
run(["pactl", "set-sink-volume", SINK, f"{VOLUME}%"])
|
|
|
|
# 有硬件 PCM 则同步设置
|
|
r = subprocess.run(["amixer", "-c", "1", "set", "PCM", f"{VOLUME}%", "unmute"],
|
|
capture_output=True, text=True)
|
|
if r.returncode == 0:
|
|
print("已同步硬件 PCM")
|
|
|
|
get_volume()
|