Làm cách nào tôi có thể giữ các biểu tượng Desktop được sắp xếp và sắp xếp theo tên?


8

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?

Máy tính để bàn không được sắp xếp theo tên:

nhập mô tả hình ảnh ở đây

Máy tính để bàn sau khi đã được sắp xếp theo tên:

nhập mô tả hình ảnh ở đây


Nếu bạn làm mờ tên, chúng ta không thể thấy chính xác quy tắc tổ chức là gì :)
Jacob Vlijm

@JacobVlijm Hình như quy tắc tổ chức của anh ta là sắp xếp các thư mục trước, sau đó là các tệp. Chúng tôi cũng có thể đoán nó theo bảng chữ cái
Sergiy Kolodyazhnyy

Xin chào orschiro, người nào trong hai người này: chat.stackexchange.com/transcript/message/30927193#30927193
Jacob Vlijm

Xin lỗi vì thông tin còn thiếu đó! Máy tính để bàn được sắp xếp theo thứ tự abc bắt đầu với các thư mục từ A đến Z và sau đó là các tệp. Thông tin đó có đủ không?
orschiro

Câu trả lời:


9

Sắp xếp các biểu tượng máy tính để bàn theo thứ tự abc theo lệnh

Kịch bản dưới đây sẽ sắp xếp lại một máy tính để bàn như:

nhập mô tả hình ảnh ở đây

... vào một máy tính để bàn được sắp xếp theo thứ tự abc như:

nhập mô tả hình ảnh ở đây

Đặt hàng:

  • thư mục đầu tiên, sau đó tập tin
  • từ trên xuống dưới, từ trái sang phải

Đặt số lượng vật phẩm theo chiều dọc

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.

Kịch bản

#!/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

Cách sử dụng

  1. Kịch bản cần xdotool:

      sudo apt-get install xdotool
  2. 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

  3. 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.

  4. 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

Tùy chọn

Bạn có thể tác động đến việc sắp xếp các biểu tượng theo ba cách:

  1. đặ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)

  2. đặ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

  3. Đặ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

    nhập mô tả hình ảnh ở đây

Giải trình

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

  • Để xác định vị trí các biểu tượng theo thứ tự abc, chúng tôi danh sách đầu tiên các mục trên desktop, sử dụng python'sos.listdir(Desktop)
  • Sau đó, chúng tôi chia các tệp thành hai danh sách phụ; tập tin / thư mục và sắp xếp cả hai danh sách, tham gia lại chúng, thư mục đầu tiên.
  • Sau đó, chúng tôi tạo ra ma trận:

    • Vì số lượng hàng được đặt trong phần đầu của tập lệnh, chúng tôi chia chiều cao của màn hình cho số lượng hàng. Do đó, chúng ta có kích thước của "hình vuông", các biểu tượng sẽ được đặt ở giữa (ở giữa).
    • Do các biểu tượng được đặt cách đều nhau theo chiều ngang , nên chúng ta có thể tính số cột (tối đa) bằng cách chia chiều rộng của màn hình cho chiều rộng của "hình vuông" trong đó các biểu tượng sẽ được đặt (theo biểu tượng), làm tròn xuống số nguyên đầu tiên bên dưới.
    • 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.

      nhập mô tả hình ảnh ở đây

    • 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.


Thật là một kịch bản tuyệt vời và linh hoạt. Cảm ơn bạn rất nhiều, Jacob! :-)
orschiro

@orschiro như mọi khi, câu hỏi của bạn bằng cách nào đó truyền cảm hứng và tuyệt vời để làm việc trên :)
Jacob Vlijm

Tôi tình cờ vấp phải những thứ mà tôi nghĩ nên là hành vi mặc định trong Ubuntu. Rất vui khi thấy có những người có kỹ năng rất lớn để thực hiện điều này!
orschiro

Này Jacob, tôi đã sử dụng các giá trị 6 -50 -50như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
orschiro 11/07/2016

Xin chào @orschiro Đó là do sự khác biệt về chiều rộng của tên thư mục. Nếu lệnh không thể được thực thi vì điều đó, nó sẽ có tùy chọn đầu tiên có thể. Tốt hơn không nên đặt bù quá âm :)
Jacob Vlijm 11/07/2016

0

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ẽ:

  • Xác định lưới cho các biểu tượng không gian gần hoặc xa hơn
  • Lưu biểu tượng thiết lập máy tính để bàn và khôi phục nó sau này cho các thiết lập khác nhau về nhà và công việc
  • Cho phép bạn di chuyển các biểu tượng đến bất kỳ trong ba màn hình
  • Không bị "hội chứng biểu tượng bị mất" xảy ra khi màn hình của nhiều độ phân giải được sử dụng
  • Sắp xếp các biểu tượng theo thứ tự bảng chữ cái, theo thứ tự abc với tiền tố "Liên kết đến" bị bỏ qua, sắp xếp theo ngày sửa đổi tăng dần hoặc ngày giảm dần
  • Cho phép kích thước lưới khác nhau (cột x hàng) tùy theo màn hình, EG nhiều hơn trên màn hình 4K so với màn hình 2K
  • Nút Kiểm tra tức thì để thử nghiệm nhanh trên cột x thay đổi hàng hoặc thay đổi không gian dành riêng cho màn hình bên trái, trên cùng, bên phải hoặc dưới cùng
  • Nút kiểm tra sẽ kéo dài trong x giây do bạn xác định, xóa tất cả các cửa sổ trước khi kiểm tra và khôi phục chúng sau khi kiểm tra
  • Kịch bản Bash để sửa đổi dễ dàng

Bạn có thể lấy tập lệnh trên github .

Đây là màn hình chính:

menu chính mang tính biểu tượng.png

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.