Configurations logiciels

Divers astuces, personnalisation de logiciels, d'applis, etc.

Thunderbird

Thunderbird

Personnalisation de l'interface utilisateur sur Thunderbird

Source : How to customize Thunderbird Mail theme using userChrome.css - devnodes.in

Activer la personnalisation

Les préférences avancées se trouvent en bas de l'onglet Général des Paramètres en cliquant sur le bouton Éditeur de configuration….

Dans les préférences avancées, activer toolkit.legacyUserProfileCustomizations.stylesheets à true en double cliquant sur la valeur par défaut.

Déterminer le dossier de profil utilisateur

Menu > Aides > Informations de dépannage > Répertoire de profil
Cliquer le bouton Ouvrir le dossier correspondant

Créer le fichier de personnalisation

Ensuite, il faut créer le dossier chrome dans le dossier de profil utilisé, puis le fichier userChrome.css.

Utiliser les outils de développement

Pour activer les outils de développement :

Exemples

Modifier la couleur des messages non-lus

@media not (prefers-contrast) {
  @media (prefers-color-scheme: dark) {
    :root {
      --thread-pane-unread-color: var(--color-teal-30) !important;
    }
  }
}

Modifier la couleur et le fond des messages non-lus puis inverser au survol

@media not (prefers-contrast) {
  @media (prefers-color-scheme: dark) {
    tr[is="thread-card"][data-properties~="unread"]:not(.selected, :hover) {
      background-color: var(--color-orange-20) !important;
      color: var(--color-blue-80) !important;
    }
    tr[is="thread-card"][data-properties~="unread"]:not(.selected):hover {
      background-color: var(--color-blue-80) !important;
      color: var(--color-orange-20) !important;
    }
  }
}

Astuces

Le chemin de l'iframe des messages est : html#messengerWindow body vbox#messengerBody hbox#tabmail-container tabmail#tabmail.printPreviewStack tabbox#tabmail-tabbox tabpanels#tabpanelcontainer.plain vbox#mail3PaneTab1.deck-selected stack browser#mail3PaneTabBrowser1.

Le chemin de la vue des messages au sein de l'iframe est html body.layout-vertical div#threadPane tree-view#threadTree.tree-view-scrollable-container table.tree-table.some-selected tbody

Bonus

Mon userChrome.css :

@media not (prefers-contrast) {
  @media (prefers-color-scheme: dark) {
    #threadTree [data-properties~="unread"]:not(.selected, :hover) {
      background-color: var(--color-orange-30) !important;
      color: var(--color-blue-80) !important;
      box-shadow: var(--color-orange-10) 1px 10px 10px inset,
        var(--color-orange-60) -1px -5px 10px -2px inset !important;
    }
    #threadTree [data-properties~="unread"]:not(.selected):hover {
      background-color: var(--color-blue-80) !important;
      color: var(--color-orange-20) !important;
      box-shadow: var(--color-blue-50) 1px 10px 10px inset,
        var(--color-ink-90) -1px -5px 10px -2px inset !important;
    }
    #threadTree
      [data-properties~="unread"][data-properties~="flagged"]:not(
        .selected,
        :hover
      ) {
      text-shadow: var(--color-teal-20) 0px 0px 2px !important;
    }
    #threadTree [data-properties~="read"][data-properties~="flagged"] {
      box-shadow: var(--color-magenta-20) 1px 5px 10px -2px inset,
        var(--color-magenta-90) -1px -5px 10px inset !important;
    }
    #threadTree
      [data-properties~="new"]:not(.selected)
      .thread-card-container
      :is(.subject, .date) {
      color: var(--color-magenta-90) !important;
      text-shadow: var(--color-teal-20) 0px 0px 2px !important;
    }
    #threadTree
      [data-properties~="new"]:not(.selected)
      .thread-card-container:hover
      :is(.subject, .date) {
      color: var(--color-orange-30) !important;
      text-shadow: var(--color-magenta-90) 0px 0px 4px !important;
    }
    #threadTree .thread-card-container {
      padding: 0px 12px !important;
    }
    #threadTree td:nth-child(1) > div:nth-child(1) > div:nth-child(1) {
      position: relative;
      top: 2px;
    }
    #threadTree td:nth-child(1) > div:nth-child(1) > div:nth-child(2) {
      position: relative;
      bottom: 2px;
    }
  }
}
Thunderbird

Afficher le quota de la boîte de messagerie IMAP dans Thunderbird

Options avancées

Modifier l'option de quota

Par défaut, le quota ne s'affiche que lorsque la messagerie atteint 70 %, le but est donc de le réduire à 0 %.

Résultat

La barre de quota est affichée dans la barre d'information située dans la partie basse de la fenêtre de Thunderbird.

Le fait de cliquer sur cette barre donne les informations en valeurs relatives.

Firefox

Firefox

Importer des mots de passe depuis un .csv

Accéder aux configurations avancées

Taper about:config et accepter les risques.

Autoriser l'importation de fichier

Mettre le paramètre signon.management.page.fileImport.enabled à true.

Activer eval

Mettre le paramètre security.allow_eval_in_parent_process à true.

Importer le fichier

Se rendre dans les paramètres de Firefox (menu hamburger), Mots de passe, cliquer sur en haut à droite puis choisir d'importer un fichier.

Nextcloud

Nextcloud

Use Appointments app integration 🇬🇧

SergeyMosin / Appointments is an app for Nextcloud to manage appointments.

Variables

In the destination page source code

Insert the iframe tag in the destination page.

<iframe id="myAppointmentFrame" title="Appointment form" frameborder="0" style="height: 100rem; width: 100%;" src=
"<PROVIDED_EMBEDDABLE_URL>" name="myAppointmentFrame"></iframe>

If id is changed, it must be changed in the script.

On the server

Set allowed Frame Ancestor Domain.

sudo -u www-data php /<PATH_TO_NEXTCLOUD_DIRECTORY>/occ config:app:set appointments "emb_afad_<Nextcloud_username>" --value "https://<MY_DESTINATION_DOMMAIN.COM>"

Set base URL for the destination page URL.

sudo -u www-data php /<PATH_TO_NEXTCLOUD_DIRECTORY>/occ config:app:set appointments "emb_cncf_<Nextcloud_username>" --value "https://<MY_DESTINATION_DOMMAIN.COM>/<PAGE_PATH>/?apphash="

If apphash is renamed, it must be changed in the script.

In the destination page source code

Insert the script tag in head tag of the destination page source code.

<script type="text/javascript" async="async">

var urlRDV = window.location.href.includes('<PAGE_PATH>');

if (urlRDV) {
  window.addEventListener('DOMContentLoaded', function() {
    var src = "<PROVIDED_EMBEDDABLE_URL>";
    var appointmentParam = "apphash"

    function getUrlVars() {
      var vars = {};
      var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
      });
      return vars;
    };

    var params = getUrlVars();
    var apphash = params[appointmentParam];
    var paramsConcat = Object.entries(params).reduce(function (prev, curr) {
      if (curr[0] === appointmentParam) {
        return prev;
      }
      prev = prev.concat("&",curr[0].toString(),"=",curr[1].toString());
      return prev;
    }, "");

    if (apphash) {
      src = src.slice(0, -4).concat('cncf?d=').concat(apphash,paramsConcat);
     }

    var myIframe = document.getElementById('myAppointmentFrame');
    myIframe.src=src;
  })();
}

</script>

VSCodium

Utiliser le MarketPlace de Microsoft

Modifier le fichier product.json pour mentionner les informations suivantes :
(Dans Windows 10 à l'adresse C:\Program Files\VSCodium\resources\app\product.json)

  "extensionsGallery": {
    "serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
    "cacheUrl": "https://vscode.blob.core.windows.net/gallery/index",
    "itemUrl": "https://marketplace.visualstudio.com/items",
    "controlUrl": "",
    "recommendationsUrl": ""
  }

Puis redémarrer VSCodium.

À priori, certaines extensions propriétaires vérifient que c’est Vscode qui est installé sur la machine et non Vscodium. Si tel est le cas , elles ne fonctionnent pas. Pour régler ce souci, éditer le fichier product.json en mettant la valeur de nameLong à Visual Studio Code.

Source : Vscodium mais où sont passées les extensions - tutox.fr

Yt-dlp tips

Présentation

À compléter éventuellement.

Dépôt logiciel : yt-dlpyt-dlp A youtube-dl fork with additional features and fixes.

Mise à jour

yt-dlp -U

Téléchargement

Télécharger une vidéo en .mp3

yt-dlp -f 'ba' -x --audio-format mp3 <url> -o '%(title)s.%(ext)s'

Télécharger une playist de vidéo en .mp3

C'est la même commande, dans le cas d'une playlist Youtube il faut que la liste soit partagée. C'est-à-dire non "pirvée".

yt-dlp -f 'ba' -x --audio-format mp3 <url> -o '%(title)s.%(ext)s'

Sous-titres

Télécharger la vidéo avec tous les sous-titres

yt-dlp --write-subs --sub-langs all --convert-subs=srt -f "137+140" https://www.youtube.com/watch?v=<ID>

Télécharger uniquement les sous-titres automatiques

yt-dlp --write-auto-subs --sub-langs ".*en" --convert-subs=srt --skip-download https://www.youtube.com/watch?v=<ID>

La différence est dans l'option --write-auto-subs.

Ensuite…

Remplacer les _ par des espaces.

rename -v 's/_/ /g' *.mp3

Sources

VirtualBox

VirtualBox

Réduire la taille d'un disque VirtualBox

Source : clone - How to decrease virtual sizecapacity of a Virtualbox vdi file - Server Fault

Réduire la taille du disque…

Lancer la machine virtuelle depuis un image Live ISO d'un disque comme GParted-Live par exemple. Le but est simplement d'avoir gparted.

Dés-allouer l'espace non nécessaire en fin de disque.

Créer un nouveau disque virtuel

Créer un nouveau disque virtuel depuis le menu de VirtualBox en prennant soin de l'emplacement.

Copier les données

vboxmanage clonemedium disk "source-disk.vmdk" "new-disk.vmdk" --existing

Ajuster la taille

Après avoir changé le disque et démarré sur le nouveau, il est préférable de réajuster la taille. Par exemple en montant à nouveau une autre image Live.

VirtualBox

Améliorer la résolution de l'affichage

Source : Installer Rocky Linux 8 dans VirtualBox – Le blog technique de Microlinux

Capture d'écran provenant du site de Microlinux

VirtualBox

Créer une machine virtuelle en CLI

Windows

VBoxManage createvm --name "<name>" --ostype "<os_type>" --register --basefolder "<path_to_directory>" ; `
VBoxManage modifyvm "<name>" --memory 4096 --vram 128 --cpus 4 --rtcuseutc on ; `
VBoxManage modifyvm "<name>" --ioapic on ; `
VBoxManage modifyvm "<name>" --nic1 nat ; `
VBoxManage createhd --filename "<path_to_directory>\<VDI_name>.vdi" --size 30000 --format VDI ; `
VBoxManage storagectl "<name>" --name "SATA Controller" --add sata --controller IntelAhci ; `
VBoxManage storageattach "<name>" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium "<path_to_directory>/<VDI_name>.vdi" ; `
VBoxManage storagectl "<name>" --name "IDE Controller" --add ide --controller PIIX4 ; `
VBoxManage storageattach "<name>" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium "<path_to_ISO>" ; `
VBoxManage modifyvm "<name>" --boot1 dvd --boot2 disk --boot3 none --boot4 none ; `
#VBoxManage unattended install "<name>" --iso "<path_to_ISO>" --user=<username> --full-user-name="<full_name>" --password "<password>" --install-additions --time-zone=CEST

Unix-like

VBoxManage createvm --name "<name>" --ostype "Mageia_64" --register --basefolder "<path_to_directory>" \
VBoxManage modifyvm "<name>" --memory 4096 --vram 128 --cpus 4 --rtcuseutc on \
VBoxManage modifyvm "<name>" --ioapic on \
VBoxManage modifyvm "<name>" --nic1 nat \
VBoxManage createhd --filename "<path_to_directory>/<VDI_name>.vdi" --size 30000 --format VDI \
VBoxManage storagectl "<name>" --name "SATA Controller" --add sata --controller IntelAhci \
VBoxManage storageattach "<name>" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium "<path_to_directory>/<VDI_name>.vdi" \
VBoxManage storagectl "<name>" --name "IDE Controller" --add ide --controller PIIX4 \
VBoxManage storageattach "<name>" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium "<path_to_ISO>" \
VBoxManage modifyvm "<name>" --boot1 dvd --boot2 disk --boot3 none --boot4 none \
#VBoxManage unattended install "<name>" --iso "<path_to_ISO>" --user=<username> --full-user-name="<full_name>" --password "<password>" --install-additions --time-zone=CEST

Explications…

La liste des types d'OS s'obtient avec la commande suivante, sur laquelle on peut appliquer un grep :

VBoxManage list ostypes

La dernière commande est commentée, elle n'est pas compatible avec tous les OS.

Kdenlive

Kdenlive

Ajouter des zones flouettées sur une vidéo

Source : Blur A Region or Face using Kdenlive! - YouTube.

Délimiter la zone

Comme à chaque fois que l'on utilise un outil de ce genre, si on ne voit pas les points de sélection sur l'aperçu, c'est que l'on doit activer l'icône en forme de rognage dans le moniteur de projet.

Un élément simple

Utliser l'effets Formes du canal alpha (Masque).
On peut personnaliser les options et dans l'hypothèse où n'utilise pas de les trames, on peut les désactiver (icône en forme de chronomètre).

L'option largeur de transition permet d'adoucir la zone de sélection en périphérie.

Élément plus complexe

Pour délimiter une zone à forme plus complexe, on peut utiliser l'outils Roboscopie (Masque).
Il s'agit de délimiter des points comme avec un outils de dessin vectoriel.

Effet de flou

On peut appliquer l'effet Gaussian Blur.

Appliquer l'effet

Utliser l'effet Mask Apply.