J'aimerais que le dossier de musique par défaut d'Ubuntu, /home/$USER/Music
, fonctionne comme une bibliothèque sous Windows. Ce serait essentiellement un dossier virtuel contenant le contenu d'autres dossiers.
Mon raisonnement est que Rhythm Box ne regardera qu'un dossier pour la nouvelle musique. Toute ma musique réside dans deux dossiers /home/$USER/Dropbox/Music
et /home/$USER/Dropbox/New Music
.
Cela s'avère également utile pour afficher le contenu d'autres dossiers Dropbox dans les dossiers par défaut d'Ubuntu (Documents, Images, etc.).
J'ai fait des recherches et j'ai essayé de trouver la réponse moi-même sans succès. Je suis sûr qu'il existe un moyen d'accomplir cela. Il me manque juste.
Merci d'avance.
Avec le script d'arrière-plan ci-dessous, vous pouvez configurer un répertoire, affichant virtuellement le contenu combiné d'un nombre arbitraire d'autres dossiers.
Le contenu du dossier (existant des liens symboliques) est synchronisé dynamiquement avec les sources (combinées).
Le script répertorie périodiquement le contenu des dossiers source ainsi que le dossier ciblé pour la vue "bibliothèque".
Comparer des listes est extrêmement léger (par programme) et peu de ressources. J'ai testé le script avec une boucle beaucoup plus rapide que dans le script ci-dessous, avec un nombre d'éléments d'environ 500 dans un seul niveau de répertoire, sans charge supplémentaire (notable).
#!/usr/bin/env python3
import os
import sys
import time
# --- set loop time below (or leave it as it is)
loop = 5
# ---
# don't change anything below
target = sys.argv[1]
sources = sys.argv[2:]
while True:
currlinks = os.listdir(target)
compare = []
for dr in sources:
for f in os.listdir(dr):
compare.append(f)
if not f in currlinks:
# create link
os.symlink(dr+"/"+f, target+"/"+f)
# clean up possible broken links
for link in currlinks:
if not link in compare:
os.remove(target+"/"+link)
# loop time
time.sleep(loop)
library_view.py
Test - lancez le script avec le répertoire ciblé , pour afficher les répertoires combinés dans, comme premier argument , les répertoires sources comme arguments suivants, par exemple:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Cette commande affiche le contenu des dossiers source1
et source2
dans virtual_library
.
Si tout fonctionne correctement, ajoutez-le aux applications de démarrage: Dash> Applications de démarrage> Ajouter. Ajoutez la commande:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Comme mentionné, vous pouvez ajouter plus de deux répertoires Soure si vous le souhaitez.
Si vous préférez ne pas utiliser de script en arrière-plan pour une raison quelconque, vous pouvez mettre à jour (synchroniser) manuellement le dossier de la bibliothèque, avec exactement la même commande sous une touche de raccourci, à l'aide du script ci-dessous:
#!/usr/bin/env python3
import os
import sys
target = sys.argv[1]
sources = sys.argv[2:]
currlinks = os.listdir(target)
compare = []
for dr in sources:
for f in os.listdir(dr):
compare.append(f)
if not f in currlinks:
# create link
os.symlink(dr+"/"+f, target+"/"+f)
# clean up possible broken links
for link in currlinks:
if not link in compare:
os.remove(target+"/"+link)
Choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande à une combinaison de touches de votre choix:
python3 /path/to/library_view.py /path/to/virtual_library /path/to/source1 /path/to/source2
Vous pouvez installer unionfs-Fuse
pour cela:
Sudo apt-get install unionfs-Fuse
Montage:
unionfs-Fuse /folder1=RW:/folder2=RW /mount/point
Il regroupera tout le contenu de folder1 et folder2 (ou plus si vous le souhaitez) à votre point de montage.
mounting:
Sudo umount /mount/point