Có thể có các ứng dụng đã mở của không gian làm việc hiện tại trong trình khởi chạy nhưng không có các ứng dụng từ các không gian làm việc khác không?
Có thể có các ứng dụng đã mở của không gian làm việc hiện tại trong trình khởi chạy nhưng không có các ứng dụng từ các không gian làm việc khác không?
Câu trả lời:
Vâng, các câu trả lời khác khá cũ, vì vậy tôi nghĩ rằng nó là giá trị để thêm câu trả lời cập nhật. Có thể làm như vậy ngay bây giờ và không quá khó tbh (Với Ubuntu 17.10 và nó có Gnome).
Chỉ cần sử dụng trình soạn thảo dconf :
sudo apt install dconf-editor
Điều hướng đến org> gnome> shell> extend> dash-to-dock và kiểm tra không gian làm việc cô lập
Sử dụng xdotool
's windowunmap
, nó có thể ẩn một cửa sổ hoàn toàn. Cửa sổ, cũng như ứng dụng của nó, không còn xuất hiện trong biểu tượng trình khởi chạy và thậm chí không được liệt kê nữa trong đầu ra của wmctrl
.
Về mặt lý thuyết, điều này có thể được kết nối với "không gian làm việc động cơ", được sử dụng trong này và này câu trả lời. Đó sẽ là giải pháp thanh lịch nhất.
Tuy nhiên, quá trình chỉ ẩn các cửa sổ trên các không gian làm việc khác và để tự động nâng các cửa sổ trên không gian làm việc hiện tại là quá khắt khe để sử dụng trong một kịch bản nền đang diễn ra (hiện tại) và không có khả năng "bị cảm lạnh". Vì các cửa sổ bị mất trong trường hợp có lỗi, do đó tôi quyết định không cung cấp quy trình dưới dạng quy trình tự động (nền-).
Nếu câu trả lời này vẫn hữu ích cho bạn hay không phụ thuộc vào tình huống và lý do tại sao bạn muốn ẩn biểu tượng của các ứng dụng, chạy trên các không gian làm việc khác; quyết định là của bạn
Một tập lệnh, có sẵn dưới một phím tắt, dường như làm cho tất cả các cửa sổ trên không gian làm việc hiện tại (và do đó các ứng dụng) biến mất hoàn toàn. Điều đó có nghĩa là biểu tượng của ứng dụng trong trình khởi chạy Unity cho thấy không có hoạt động nào của ứng dụng:
Nhấn tổ hợp phím schortcut lần nữa, các cửa sổ và ứng dụng của chúng sẽ xuất hiện lại.
#!/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]])
Kịch bản cần cả hai wmctrl
và xdotool
:
sudo apt-get install wmctrl xdotool
toggle_visibility.py
Kiểm tra- chạy tập lệnh: trong cửa sổ terminal, chạy lệnh:
python3 /path/to/toggle_visibility.py
Bây giờ hãy mở một cửa sổ terminal mới (vì cái đầu tiên dường như biến mất khỏi bề mặt trái đất) và chạy lại lệnh tương tự. Tất cả các cửa sổ sẽ xuất hiện lại.
NB : đảm bảo bạn không mở các cửa sổ "có giá trị" trong khi thử nghiệm
Nếu tất cả đều hoạt động tốt, hãy thêm lệnh vào tổ hợp phím tắt: chọn: Cài đặt hệ thống> "Bàn phím"> "Phím tắt"> "Phím tắt tùy chỉnh". Nhấp vào "+" và thêm lệnh:
python3 /path/to/toggle_visibility.py
Như đã nói, việc sử dụng kịch bản xdotool
's windowunmap
, để (hoàn toàn) ẩn các cửa sổ và các ứng dụng mà họ thuộc về. Kịch bản:
Trong lần chạy tiếp theo, tập lệnh:
do đó, làm giảm khả năng hiển thị của các cửa sổ và ứng dụng trên không gian làm việc hiện tại.
ctrl
+ shift
+arrow key
Thật không may, điều đó là không thể.
Unity luôn hiển thị tất cả các ứng dụng từ khắp mọi nơi và không có cách nào để thay đổi điều này. Có một báo cáo lỗi - https://bugs.launchpad.net/ayatana-design/+orms/683170 Nhưng dường như các nhà phát triển sẽ không làm gì cả. Có lẽ nếu bạn đánh dấu ở đầu trang rằng lỗi này ảnh hưởng đến bạn, nó sẽ giúp các nhà phát triển hiểu tầm quan trọng của tùy chọn đó.