Bagaimana saya bisa selalu mengatur ikon Desktop, dan diurutkan berdasarkan nama?

8

Saya ingin menjaga Desktop saya selalu diatur berdasarkan nama. Bagaimana saya bisa mencapai ini?

Desktop tidak diatur berdasarkan nama:

masukkan deskripsi gambar di sini

Desktop setelah diatur berdasarkan nama:

masukkan deskripsi gambar di sini

orschiro
sumber
Jika Anda memudar nama-namanya, kita tidak dapat melihat dengan pasti apa aturan organisasi :)
Jacob Vlijm
@JacobVlijm Sepertinya aturan organisasinya adalah untuk mengurutkan dir terlebih dahulu, kemudian file. Kami juga mungkin dapat menebaknya berdasarkan abjad
Sergiy Kolodyazhnyy
Hai orschiro yang mana dari dua ini: chat.stackexchange.com/transcript/message/30927193#30927193
Jacob Vlijm
Permintaan maaf untuk informasi yang hilang itu! Desktop diatur menurut abjad dimulai dengan folder dari A hingga Z dan kemudian diikuti oleh file. Apakah informasi itu memadai?
orschiro

Jawaban:

9

Atur ikon desktop berdasarkan abjad dengan perintah

Script di bawah ini akan mengatur ulang desktop seperti:

masukkan deskripsi gambar di sini

... ke desktop yang disusun menurut abjad seperti:

masukkan deskripsi gambar di sini

Dipesan:

  • direktori pertama, lalu file
  • dari atas ke bawah, dari kiri ke kanan

Atur jumlah item secara vertikal

Selanjutnya, Anda dapat mengatur jumlah item yang berubah-ubah secara vertikal (baris); jarak horizontal akan diatur secara otomatis.

Naskah

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

Cara Penggunaan

  1. Kebutuhan skrip xdotool:

      sudo apt-get install xdotool
  2. Salin skrip ke file kosong, simpan sebagai arrange_dt.py

  3. Uji-jalankan dengan perintah:

    python3 /path/to/arrange_dt.py

    dalam 20 detik klik pada desktop, pengaturan baru Anda akan diterapkan. Jika Anda menjalankan skrip dari pintasan, saat desktop di depan, pengaturan akan segera diterapkan. Jika desktop tidak berada di depan, skrip menunggu maksimal 20 detik. Jika waktu melebihi, cukup tekanF5untuk menerapkan.

  4. Jika semuanya berfungsi dengan baik, tambahkan ke tombol pintasan: pilih: Pengaturan Sistem> "Keyboard"> "Pintasan"> "Pintasan Khusus". Klik "+" dan tambahkan perintah:

    python3 /path/to/arrange_dt.py

Pilihan

Anda dapat memengaruhi pengaturan ikon dengan tiga cara:

  1. atur ukuran "ubin"

    # set the size of the squares (indirectly, by setting n- rows)
    rows = 10

    Ini akan mengatur (maks) jumlah ikon secara vertikal. The ukuran dari "ubin" akan, sama (x, y)

  2. atur offset horizontal

    x_offs = -15 

    Ini akan mengatur deviasi x dari posisi default dari icon-matrix secara keseluruhan

  3. Atur offset vertikal

    y_offs = -30

    Ini akan mengatur deviasi y dari posisi default dari ikon-matriks

    Contoh, menggunakan:

    # 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

    masukkan deskripsi gambar di sini

Penjelasan

Penjelasan di bawah ini sebagian besar merupakan penjelasan tentang konsep daripada pengkodean

  • Untuk posisi ikon abjad, kita daftar pertama item pada desktop, menggunakan python'sos.listdir(Desktop)
  • Kemudian kami membagi file menjadi dua sublists; file / folder, dan urutkan kedua daftar, gabungkan lagi, folder terlebih dahulu.
  • Lalu kita buat matriks:

    • Karena jumlah baris diatur di bagian atas skrip, kami membagi ketinggian layar dengan jumlah baris. Jadi kita memiliki ukuran "kotak" ikon akan ditempatkan di (berpusat).
    • Karena ikon-ikon diberi jarak yang sama secara horizontal , kita kemudian dapat menghitung (maks) jumlah kolom dengan membagi lebar layar dengan lebar "kotak" di mana ikon akan ditempatkan (per ikon), dibulatkan ke bawah ke integer pertama di bawah ini.
    • Pada gambar di bawah ini, kotak "virtual" ini terlihat, titik merah adalah tempat ikon ditempatkan.

      masukkan deskripsi gambar di sini

    • Maka yang harus kita lakukan adalah menempatkan ikon pertama di setengah dari ukuran persegi, baik secara horizontal maupun vertikal.

    • Untuk menemukan posisi-x semua ikon lainnya, kita hanya perlu membagi indeksnya (dimulai dengan nol) dengan jumlah baris, dibulatkan ke bawah. Hasilnya akan ditambahkan ke posisi x ikon pertama (kiri atas), misalnya:

      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
    • Untuk menemukan posisi-y dari semua ikon lain, kita hanya perlu sisa dari indeks dan jumlah baris. Hasil x lebar kotak akan ditambahkan ke posisi y ikon pertama (kiri atas), misalnya:

      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
  • Selanjutnya, kami menempatkan ikon di desktop, menggunakan perintah:

    gvfs-set-attribute <path_to_dir_or_file> metadata::nautilus-icon-position x,y
  • Akhirnya, kita perlu menekan F5 dengan desktop di depan , untuk menerapkan tata letak yang diubah (menyegarkan desktop). Jika itu masalahnya, itu akan segera dilakukan. Jika tidak, skrip akan coba selama 20 detik jika desktop ada di depan, secara virtual menekan F5dan merusak. Jika setelah 20 detik desktop masih tidak di depan, Anda perlu menekan secara manual F5.

Yakub Vlijm
sumber
Script yang fantastis dan serbaguna. Terima kasih banyak, Jacob! :-)
orschiro
@orschiro seperti biasa, pertanyaan Anda entah bagaimana menginspirasi dan bagus untuk dikerjakan :)
Jacob Vlijm
Saya kebetulan menemukan hal-hal yang saya pikir harus menjadi perilaku default di Ubuntu. Senang melihat ada banyak orang yang sangat terampil untuk mewujudkan kenyataan ini!
orschiro
Hai Yakub, saya menggunakan nilai 6 -50 -50tetapi tiga folder sedikit diimbangi. Ada ide mengapa? Tangkapan layar: i.imgur.com/XuGIiBT.png
orschiro
Hai @orschiro Itu karena perbedaan lebar nama folder. Jika perintah tidak dapat dieksekusi karena itu, dibutuhkan opsi pertama yang mungkin. Lebih baik tidak mengatur offset terlalu negatif :)
Jacob Vlijm
0

Terinspirasi sebagian oleh pertanyaan di atas, saya menulis iconicuntuk memecahkan masalah ini dengan membiarkan Anda mengurutkan ikon dengan empat cara berbeda. Selain itu akan:

  • Tentukan kotak untuk ikon ruang yang lebih dekat atau lebih jauh
  • Simpan ikon pengaturan desktop dan kembalikan nanti untuk berbagai pengaturan, home dan work
  • Memungkinkan Anda untuk memindahkan ikon ke salah satu dari tiga monitor
  • Tidak menderita "sindrom ikon hilang" yang terjadi ketika monitor resolusi ganda digunakan
  • Urutkan ikon secara abjad, abjad dengan awalan "Tautan ke" diabaikan, urutkan berdasarkan kenaikan tanggal yang dimodifikasi atau tanggal turun
  • Izinkan ukuran kisi yang berbeda (kolom x baris) tergantung pada monitor, EG lebih banyak pada monitor 4K daripada monitor 2K
  • Tombol Uji Instan untuk eksperimen cepat pada kolom x perubahan baris atau perubahan ruang yang disediakan untuk area kiri, atas, kanan atau bawah monitor
  • Tombol tes akan bertahan selama x detik yang ditentukan oleh Anda, menghapus semua jendela sebelum pengujian dan mengembalikannya setelah pengujian
  • Bash script untuk modifikasi yang mudah

Anda bisa mendapatkan skripnya di github .

Inilah layar utama:

menu utama ikonik

Kunjungi halaman github untuk ikon untuk melihat semua layar lainnya, penjelasan dan salinan skrip.

WinEunuuchs2Unix
sumber