web-dev-qa-db-ja.com

デスクトップアイコンを常に整理し、名前順に並べ替えるにはどうすればよいですか?

デスクトップを常に名前で整理したいと思います。どうすればこれを達成できますか?

名前別に整理されていないデスクトップ:

enter image description here

名前別に整理した後のデスクトップ:

enter image description here

8
orschiro

コマンドでデスクトップアイコンをアルファベット順に並べる

以下のスクリプトは、デスクトップを次のように再配置します。

enter image description here

...次のようなアルファベット順に並べられたデスクトップに:

enter image description here

注文済み:

  • 最初にディレクトリ、次にファイル
  • 上から下へ、左から右へ

アイテムの数を垂直に設定します

さらに、任意の数のアイテムを垂直方向(行)に設定できます。水平間隔はそれに応じて自動的に設定されます。

スクリプト

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

使い方

  1. スクリプトにはxdotoolが必要です。

      Sudo apt-get install xdotool
    
  2. スクリプトを空のファイルにコピーし、arrange_dt.pyとして保存します

  3. 次のコマンドでテスト実行します:

    python3 /path/to/arrange_dt.py
    

    20秒以内にデスクトップをクリックすると、新しい配置が適用されます。デスクトップが前面にあるときにショートカットからスクリプトを実行すると、配置がすぐに適用されます。デスクトップが最前面にない場合、スクリプトは最大20秒間待機します。時間を超過する場合は、単に F5 応募する。

  4. すべてが正常に機能する場合は、ショートカットキーに追加します。[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。 「+」をクリックして、コマンドを追加します。

    python3 /path/to/arrange_dt.py
    

オプション

次の3つの方法でアイコンの配置に影響を与えることができます。

  1. 「タイル」のサイズを設定します

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

    これにより、アイコンの(最大)数が垂直に設定されます。 「タイル」のsizeは、等しい(x、y)

  2. 水平オフセットを設定します

    x_offs = -15 
    

    これにより、全体としてアイコンマトリックスのデフォルト位置からのx-偏差が設定されます。

  3. 垂直オフセットを設定します

    y_offs = -30
    

    これにより、アイコンマトリックスのデフォルト位置からのy偏差が設定されます。

    例:

    # 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
    

    enter image description here

説明

以下の説明は、ほとんどの場合、コーディングではなく、概念の説明です

  • アイコンをアルファベット順に配置するには、まずpythonos.listdir(Desktop)を使用してデスクトップ上のアイテムをリストします
  • 次に、ファイルを2つのサブリストに分割します。ファイル/フォルダ、および両方のリストをソートし、フォルダを最初に再結合します。
  • 次に、マトリックスを作成します。

    • 行数はスクリプトのヘッドで設定されているため、画面の高さを行数で除算します。したがって、アイコンが配置される「中央」のサイズがあります。
    • アイコンは同様に水平間隔で配置されているため、画面のwidthを分割することで(最大)列数を計算できますアイコンが配置される「正方形」の幅(アイコンごと)で、下の最初の整数に切り捨てられます。
    • 以下の画像では、これらの「仮想」正方形が表示されています。赤い点はアイコンが配置されている場所です。

      enter image description here

    • その後、最初のアイコンを正方形の半分のサイズ(水平および垂直の両方)に配置するだけです。

    • 他のすべてのアイコンのx-positionを見つけるには、それらのindex(ゼロから始まる)を数字で割るだけです。切り捨てられた行。結果は、最初のアイコン(左上)のx位置に追加されます。例:

      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
      
    • 他のすべてのアイコンのy-positionを見つけるには、インデックスのremainderと行数が必要です。結果x正方形の幅は、最初のアイコン(左上)のy位置に追加されます。例:

      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
      
  • 続いて、次のコマンドを使用してデスクトップにアイコンを配置します。

    gvfs-set-attribute <path_to_dir_or_file> metadata::nautilus-icon-position x,y
    
  • 最後に、押す必要があります F5 デスクトップを前にして、変更されたレイアウトを適用します(デスクトップを更新します)。その場合、すぐに実行されます。そうでない場合、デスクトップが前面にある場合、スクリプトは20秒以内に再試行します。 F5 そして休憩。 20秒後にデスクトップstillが前面になかった場合、手動で押す必要があります F5

9
Jacob Vlijm

上記の質問に一部触発されて、アイコンを4つの異なる方法でソートできるようにすることでこの問題を解決するiconicを作成しました。さらに、次のことを行います。

  • グリッドを定義して、アイコンを近づけたり離したりします
  • アイコンのデスクトップ設定を保存し、後で家や職場のさまざまな設定のために復元します
  • 3つのモニターのいずれかにアイコンを移動できます
  • 複数の解像度のモニターが使用されている場合に発生する「ロストアイコンシンドローム」に悩まされない
  • アイコンをアルファベット順に並べ替え、「リンク先」プレフィックスを無視してアルファベット順に並べ替え、変更された日付の昇順または降順に並べ替えます
  • モニターに応じて異なるグリッドサイズ(列x行)を許可、EGは2Kモニターよりも4Kモニターの方が多い
  • インスタントTestボタンで、モニターの左、上、右、または下の領域の列x行の変更または予約スペースの変更をすばやく実験できます
  • Testボタンは、定義されたx秒間続き、テスト前にすべてのウィンドウをクリアし、テスト後にそれらを復元します
  • 簡単に変更できるBashスクリプト

スクリプトは github で取得できます。

メイン画面は次のとおりです。

iconic main menu.png

iconicgithub ページにアクセスして、他のすべての画面、説明、およびスクリプトのコピーを確認します。

0