เป็นไปได้หรือไม่ที่จะมีแอปพลิเคชันที่เปิดอยู่ของพื้นที่ทำงานปัจจุบันในตัวเรียกใช้งาน แต่ไม่ใช่แอปพลิเคชันจากพื้นที่ทำงานอื่น
เป็นไปได้หรือไม่ที่จะมีแอปพลิเคชันที่เปิดอยู่ของพื้นที่ทำงานปัจจุบันในตัวเรียกใช้งาน แต่ไม่ใช่แอปพลิเคชันจากพื้นที่ทำงานอื่น
คำตอบ:
ดีคำตอบอื่น ๆ ค่อนข้างเก่าดังนั้นฉันคิดว่ามันคุ้มค่าที่จะเพิ่มคำตอบที่ทันสมัย เป็นไปได้ที่จะทำเช่นนี้ในขณะนี้และไม่ยากเกินไป (ด้วย Ubuntu 17.10 และมี Gnome)
เพียงใช้dconf-editor :
sudo apt install dconf-editor
ไปที่org> gnome> shell> extensions> dash-to-dockและตรวจสอบพื้นที่ทำงาน
ใช้xdotool
's windowunmap
ก็เป็นไปได้ที่จะซ่อนหน้าต่างสมบูรณ์ หน้าต่างหรือแอปพลิเคชันจะเกิดขึ้นอีกในไอคอนตัวเรียกใช้และจะไม่ปรากฏในผลลัพธ์เพิ่มเติมของwmctrl
เพิ่มเติมในการส่งออกของ
ตามทฤษฎีแล้วสิ่งนี้สามารถเชื่อมต่อกับ "เวิร์กสเปซเอ็นจิ้น" ที่ใช้ในการนี้และสิ่งนี้คำตอบ นั่นจะเป็นทางออกที่หรูหราที่สุด
อย่างไรก็ตามกระบวนการของเพียงหลบซ่อนตัวอยู่ในพื้นที่ทำงานหน้าต่างและอื่น ๆ โดยอัตโนมัติระดมคนในพื้นที่ทำงานปัจจุบันเกินไปเรียกร้องที่จะใช้ในการอย่างต่อเนื่องพื้นหลังสคริปต์ (ตอนนี้) และไม่น่า "เป็นหวัด" ได้เป็นอย่างดี เนื่องจากหน้าต่างหายไปอย่างดีในกรณีที่มีข้อผิดพลาดฉันจึงตัดสินใจที่จะไม่เสนอขั้นตอนเป็นกระบวนการอัตโนมัติ (พื้นหลัง)
หากคำตอบนี้มีประโยชน์สำหรับคุณหรือไม่ขึ้นอยู่กับสถานการณ์และสาเหตุที่คุณต้องการซ่อนไอคอนของแอปพลิเคชันทำงานบนพื้นที่ทำงานอื่น การตัดสินใจเป็นของคุณ
สคริปต์พร้อมใช้งานภายใต้คีย์ลัดดูเหมือนว่าจะทำให้หน้าต่างทั้งหมดในพื้นที่ทำงานปัจจุบัน (และแอปพลิเคชัน) หายไปอย่างสมบูรณ์ นั่นหมายถึงไอคอนของแอปพลิเคชั่นใน Unity launcher ไม่แสดงกิจกรรมของแอปพลิเคชัน:
การกดแป้น schortcut ร่วมกันอีกครั้งหน้าต่างและแอปพลิเคชันจะปรากฏขึ้นอีกครั้ง
#!/usr/bin/env python3
import subprocess
import os
import time
datadir = os.environ["HOME"]+"/.config/maptoggle"
if not os.path.exists(datadir):
os.makedirs(datadir)
workspace_data = datadir+"/wspacedata_"
def get_wlist(res):
res = get_res()
try:
wlist = [l.split() for l in subprocess.check_output(["wmctrl", "-lG"]).decode("utf-8").splitlines()]
return [w for w in wlist if all([
0 < int(w[2]) < res[0],
0 < int(w[3]) < res[1],
"_NET_WM_WINDOW_TYPE_NORMAL" in subprocess.check_output(["xprop", "-id", w[0]]).decode("utf-8"),
])]
except subprocess.CalledProcessError:
pass
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
def current(res):
# get the current viewport
vp_data = subprocess.check_output(
["wmctrl", "-d"]
).decode("utf-8").split()
dt = [int(n) for n in vp_data[3].split("x")]
cols = int(dt[0]/res[0])
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
curr_col = int(curr_vpdata[0]/res[0])+1
curr_row = int(curr_vpdata[1]/res[1])
return str(curr_col+curr_row*cols)
res = get_res()
try:
f = workspace_data+current(res)
wlist = eval(open(f).read().strip())
for w in wlist:
subprocess.Popen(["xdotool", "windowmap", w[0]])
os.remove(f)
except FileNotFoundError:
current_windows = get_wlist(res)
open(f, "wt").write(str(current_windows))
for w in current_windows:
subprocess.Popen(["xdotool", "windowunmap", w[0]])
สคริปต์ต้องการทั้งwmctrl
และxdotool
:
sudo apt-get install wmctrl xdotool
toggle_visibility.py
ทดสอบรันสคริปต์: ในหน้าต่างเทอร์มินัลรันคำสั่ง:
python3 /path/to/toggle_visibility.py
ตอนนี้เปิดหน้าต่างเทอร์มินัลใหม่ (ตั้งแต่หน้าต่างแรกหายไปจากพื้นโลก) และเรียกใช้คำสั่งเดียวกันอีกครั้ง หน้าต่างทั้งหมดควรปรากฏขึ้นอีกครั้ง
หมายเหตุ : ตรวจสอบให้แน่ใจว่าคุณไม่ได้เปิดหน้าต่าง "มีค่า" ในขณะทดสอบ
หากใช้งานได้ดีให้เพิ่มคำสั่งลงในคีย์ผสมทางลัด: เลือก: การตั้งค่าระบบ> "คีย์บอร์ด"> "ทางลัด"> "ทางลัดที่กำหนดเอง" คลิกที่ "+" และเพิ่มคำสั่ง:
python3 /path/to/toggle_visibility.py
เช่นกล่าวว่าการใช้สคริปต์xdotool
's windowunmap
เพื่อ (สมบูรณ์) ซ่อน Windows และโปรแกรมที่พวกเขาเป็น บท:
ในการเรียกใช้ครั้งต่อไปสคริปต์:
จึงสลับการมองเห็นหน้าต่างและแอพพลิเคชั่นบนพื้นที่ทำงานปัจจุบัน
ctrl
+ shift
+arrow key
น่าเสียดายที่มันเป็นไปไม่ได้
Unity จะแสดงแอปพลิเคชันทั้งหมดจากทุกที่และไม่มีทางเปลี่ยนแปลงได้ มีรายงานข้อผิดพลาด - https://bugs.launchpad.net/ayatana-design/+bug/683170 แต่ดูเหมือนว่านักพัฒนาจะไม่ทำอะไรเลย อาจเป็นไปได้ว่าถ้าคุณทำเครื่องหมายที่ด้านบนของหน้าว่าข้อบกพร่องนี้ส่งผลกระทบต่อคุณมันจะช่วยให้นักพัฒนาเข้าใจถึงความสำคัญของตัวเลือกดังกล่าว