Tôi muốn giữ cho Desktop của tôi luôn được sắp xếp theo tên. Làm thế nào tôi có thể đạt được điều này?
Tôi muốn giữ cho Desktop của tôi luôn được sắp xếp theo tên. Làm thế nào tôi có thể đạt được điều này?
Câu trả lời:
Kịch bản dưới đây sẽ sắp xếp lại một máy tính để bàn như:
... vào một máy tính để bàn được sắp xếp theo thứ tự abc như:
Đặt hàng:
Hơn nữa, bạn có thể đặt số lượng mục tùy ý theo chiều dọc (hàng); khoảng cách ngang sẽ được đặt tự động cho phù hợp.
#!/usr/bin/env python3
import subprocess
import os
import math
import time
# set the size of the squares (indirectly, by setting n- rows)
rows = 10
# set x/y offset of the matrix if you want
x_offs = -15
y_offs = -30
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8")
dt = get(["xdg-user-dir", "DESKTOP"]).strip()
# find size of the left screen
left = [int(n) for n in sum(
[s.split("+")[0].split("x") for s in \
get("xrandr").split() if "+0+" in s], [])]
# size of the squares (icon area)
sqr = int((left[1]/rows))
# number of cols, squares
cols = math.floor(left[0]/sqr)
n_sqrs = cols*rows
# define positions (matrix)
pos = list([[
str(int((math.floor(n/rows)*sqr)+(sqr/2)+x_offs)),
str(int(((n%rows)*sqr)+(sqr/2)+y_offs)),
] for n in range(n_sqrs)])
# list iconfiles, split into dirs and files, sort & combine
iconlist = [os.path.join(dt, item) for item in \
sorted([item for item in os.listdir(dt) if not "~" in item])]
dirs = []; files = []
for it in iconlist:
if os.path.isfile(it):
files.append(it)
else:
dirs.append(it)
iconlist = dirs+files
# place icons in position(s)
for i, item in enumerate(iconlist):
location = (",").join(pos[i])
subprocess.call(["gvfs-set-attribute", "-t", "string", item,
'metadata::nautilus-icon-position', location])
# simulate F5 to refresh desktop, retry for max 20 secs if not in front
t = 0
while t < 40:
w_id = [l.split()[-1] for l in get(["xprop", "-root"]).splitlines() \
if "_NET_ACTIVE_WINDOW(WINDOW):" in l][0]
if "desktop" in get(["xprop", "-id", w_id, "WM_CLASS"]):
subprocess.Popen(["xdotool", "key", "F5"])
break
else:
time.sleep(0.5)
t += 1
Kịch bản cần xdotool
:
sudo apt-get install xdotool
Sao chép tập lệnh vào một tập tin trống, lưu nó dưới dạng arrange_dt.py
Kiểm tra- chạy nó bằng lệnh:
python3 /path/to/arrange_dt.py
trong vòng 20 giây nhấp vào màn hình, sắp xếp mới của bạn sẽ được áp dụng. Nếu bạn chạy tập lệnh từ một phím tắt, trong khi máy tính để bàn ở phía trước, sự sắp xếp sẽ được áp dụng ngay lập tức. Nếu máy tính để bàn không ở phía trước, tập lệnh sẽ đợi tối đa 20 giây. Nếu thời gian vượt quá, chỉ cần nhấnF5để áp dụng.
Nếu tất cả đều hoạt động tốt, hãy thêm nó vào một 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/arrange_dt.py
Bạn có thể tác động đến việc sắp xếp các biểu tượng theo ba cách:
đặt kích thước của "gạch"
# set the size of the squares (indirectly, by setting n- rows)
rows = 10
Điều này sẽ đặt số lượng biểu tượng (tối đa) theo chiều dọc. Các kích thước của "gạch" sẽ, bằng (x, y)
đặt bù ngang
x_offs = -15
Điều này sẽ đặt độ lệch x từ vị trí mặc định của toàn bộ ma trận biểu tượng
Đặt bù dọc
y_offs = -30
Điều này sẽ đặt độ lệch khỏi vị trí mặc định của ma trận biểu tượng
Một ví dụ, sử dụng:
# set the size of the squares (indirectly, by setting n- rows)
rows = 6
# set x/y offset of the matrix if you want
x_offs = 50
y_offs = 10
Giải thích dưới đây chủ yếu là giải thích về khái niệm chứ không phải mã hóa
python
'sos.listdir(Desktop)
Sau đó, chúng tôi tạo ra ma trận:
Trong hình ảnh bên dưới, những ô vuông "ảo" này có thể nhìn thấy được, chấm đỏ là nơi đặt biểu tượng.
Sau đó, tất cả những gì chúng ta phải làm là đặt biểu tượng đầu tiên trên một nửa kích thước của hình vuông, cả theo chiều ngang và chiều dọc.
Để tìm vị trí x của tất cả các biểu tượng khác, chúng ta chỉ cần chia chỉ số của chúng (bắt đầu bằng 0) cho số lượng hàng, làm tròn xuống. Kết quả sẽ được thêm vào vị trí x của biểu tượng đầu tiên (trên cùng bên trái), ví dụ:
item 10 (index 9): 9/4 = 2,25, rounded down: 2
x position = position of icon 0 + 2 x the width of a square
item 17 (index 16): 16/4 = 4, rounded down: 4
x position = position of icon 0 + 4 x the width of a square
Để tìm vị trí y của tất cả các biểu tượng khác, chúng ta chỉ cần phần còn lại của chỉ mục và số lượng hàng. Kết quả x chiều rộng của hình vuông sẽ được thêm vào vị trí y của biểu tượng đầu tiên (trên cùng bên trái), ví dụ:
item 10 (index 9): 9%4 = 1
y position = position of icon 0 + 1 x the height of a square
item 17 (index 16): 16%4 = 0
y position = position of icon 0 + 0 x the height of a square
Sau đó, chúng tôi đặt các biểu tượng trên màn hình nền, sử dụng lệnh:
gvfs-set-attribute <path_to_dir_or_file> metadata::nautilus-icon-position x,y
Cuối cùng, chúng ta cần nhấn F5 với màn hình nền phía trước , để áp dụng bố cục đã thay đổi (làm mới màn hình nền). Nếu đó là trường hợp, nó sẽ được thực hiện ngay lập tức. Nếu không, tập lệnh sẽ hiển thị lại trong 20 giây nếu máy tính để bàn ở phía trước, hầu như nhấn F5và ngắt. Nếu sau 20 giây máy tính để bàn vẫn không ở phía trước, bạn cần nhấn thủ công F5.
6 -50 -50
nhưng ba thư mục được bù nhẹ. Bất cứ ý tưởng tại sao? Ảnh chụp màn hình: i.imgur.com/XuGIiBT.png
Lấy cảm hứng một phần bởi câu hỏi trên, tôi đã viết iconic
để giải quyết vấn đề này bằng cách cho phép bạn sắp xếp các biểu tượng theo bốn cách khác nhau. Ngoài ra, nó sẽ:
Bạn có thể lấy tập lệnh trên github .
Đây là màn hình chính:
Truy cập trang github để xem biểu tượng để xem tất cả các màn hình khác, giải thích và bản sao của tập lệnh.