ฉันต้องการใช้การลากและวางในสคริปต์ เพื่อทำงานโดยไม่ต้องใช้เมาส์หรือแป้นพิมพ์ สคริปต์นี้ควรใช้ (ลาก) ไฟล์และโฟลเดอร์บางไฟล์ และวาง (วาง) ลงในสภาพแวดล้อม chroot ภายในซอฟต์แวร์ Cubic และหลังจากนั้น เพื่อกดปุ่ม "คัดลอก" จาก Cubic โดยอัตโนมัติ ดังนั้นทั้งหมดจะต้องเป็นอิสระและเป็นไปโดยอัตโนมัติฉันค้นหาที่นี่และในไซต์/ฟอรัมอื่นๆ และพบการสนทนาเหล่านี้: https://unix.stackexchange.com/questions/216507/drag-and-drop-without-the-drag/557100#557100
https://unix.stackexchange.com/questions/137905/can-i-drag-a-file-into-a-window-without-a-file-manager
จากลิงค์แรกฉันต้องการใช้สคริปต์นี้ แต่ฉันไม่รู้วิธีแก้ไขให้ทำงานในสิ่งที่ฉันต้องการ:
#!/usr/bin/env ทุบตี
doc="$0 <ชื่อไฟล์|'shot'>
ด้วยชื่อไฟล์: ลากไฟล์ที่กำหนดไปยังตำแหน่งที่เมาส์ใช้มังกร
คลิกเพื่อวางมัน (อะไรก็ได้)
ด้วย 'shot' : ไฟล์จะเป็นภาพของพื้นที่ที่จะเลือก
=> 'drag_into shot' บนปุ่มคำสั่งผสมที่สมเหตุสมผล
"
cmd_shot="ช็อต"
ไฟล์=
exit_help () { echo -e "$doc"; ทางออก 1; }
Select_shot_area () {
#สร้างภาพหน้าจอ
แจ้งเตือนส่ง "เลือกพื้นที่ - เราจะยิงมันแล้วลากไปยังตำแหน่งที่เมาส์อยู่"
cd "$HOME/Pictures/shots/" || ทางออก 1
rm -f "latest.png"
scrot -s '%Y-%m-%d_$wx$h_scrot.png' -e 'ln -s $f latest.png'
ไฟล์="`readlink latest.png`"
}
หลัก () {
ไฟล์ = "$1"
ทดสอบ -z "$file" -o "$file" == "-h" && exit_help
eval "$(xdotool getmouselocation --shell)" # เป็น $X และ $Y
ทดสอบ "$file" == "$cmd_shot" && { select_shot_area || กลับ 1; }
killall dragon 2>/dev/null # ไม่มีการดรอปไอเท็มผิดโดยไม่ตั้งใจ ...
มังกร --and-ออก "$file" &
ในขณะที่จริง; ทำ
xid="$(xdotool search --onlyvisible --class dragon | head -n 2)"
ทดสอบ -z "$xid" || หยุดพัก
นอน 0.05
เสร็จแล้ว
xdotool mousemove --sync -w "$xid" 1 1 mousedown 1 mousemove $X $Y
แจ้ง-ส่ง "คลิกเพื่อวาง $file..."
}
หลัก "$@"`
ดังนั้นสามารถแก้ไขสคริปต์นี้หรือสร้าง / สร้างใหม่และแตกต่างได้อย่างไรและอย่างไร