My Own Memory Hole

Sublime Text & Markdown

Packages

  • MarkdownEditing : prend pleinement en charge le langage Markdown, fournit un ensemble de commandes utiles à la rédaction via la Command Palette...
  • TableEditor : non spécifique au Markdown mais permet de faciliter la création de tableaux et d'en faciliter la lecture via un mécanisme d'alignement performant ;
  • MarkdownPreview : permet de générer des aperçus au format HTML des documents en Markdown, soit via la commande Preview in Browser soit via la commande Build appelable avec le raccourci Ctrl+b ;
  • MarkdownLivePreview : scinde une fenêtre de Sublime Text et fournit un aperçu en direct de ce qui est saisi. Sublime MarkdownLivePreview
  • Pandoc : ce plugin permet de générer, à partir d'un fichier Markdown (entre autres formats), des documents PDF, Word, HTML... Il nécessite cependant de bien avoir le paquet pandoc d'installé :
    sudo apt install pandoc

Snippets et raccourcis clavier

  • guillemets français en HTML :
    <snippet>
    <content><![CDATA[
    «&#8239;${1}&#8239;»$0
    ]]></content>
    <tabTrigger>og</tabTrigger>
    <scope>text.html.markdown,text.html</scope>
    </snippet>

    ou via le raccourci clavier Alt+" :

    { "keys": ["alt+\""], "command": "insert_snippet", "args": {"contents": "«&#8239;${1}&#8239;»$0"}, "context":
        [
            { "key": "selector", "operator": "equal", "operand": "text.html.markdown,text.html" }
        ]
    },
  • espace insécable en HTML avec le raccourci clavier Ctrl+Espace :
    { "keys": ["ctrl+space"], "command": "insert_snippet", "args": {"contents": "&nbsp;$0"}, "context":
        [
            { "key": "selector", "operator": "equal", "operand": "text.html.markdown,text.html" }
        ]
    },

Configuration

Voici le contenu du fichier ~/.config/sublime-text-3/Packages/User/Markdown.sublime-settings :

{
    "color_scheme": "Packages/Monokai++/themes/Monokai++.tmTheme",
    "line_numbers": true,
    "highlight_line": true,
    "enable_table_editor": true,
}

Sublime Text & LaTeX

Packages

Snippets et raccourcis clavier

  • guillemets français :
    <snippet>
    <content><![CDATA[
    \og ${1} \fg{}$0
    ]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>og</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>text.tex.latex</scope>
    </snippet>

    ou via le raccourci clavier Alt+" 

    { "keys": ["alt+\""], "command": "insert_snippet", "args": {"contents": "\\og ${1} \\fg{}$0"}, "context":
        [
            { "key": "selector", "operator": "equal", "operand": "text.tex.latex" }
        ]
    },

Ma configuration de Sublime Text

Il s'agit ici pour moi de conserver une trace de mes usages restreints mais variés de l'éditeur Sublime Text, notamment les raccourcis claviers modifiés, les packages utilisés, les snippets créés...

Synchronisation via Dropbox

La solution retenue pour synchroniser notamment la configuration, les packages installés et leurs paramètres ainsi que les snippets passe par Dropbox, comme présenté dans la documentation.

On commence par récupérer le .deb qui va bien depuis cette page et on lance ensuite l'installation :

sudo apt install python3-gpg && sudo apt install ./Téléchargements/dropbox_2020.03.04_amd64.deb

On redémarre et on lance ensuite l'application Dropbox depuis le menu Applications > Internet > Dropbox.

Ensuite, on n'a plus qu'à suivre les instructions fournies :

  • sur la première machine, où Sublime Text est configuré aux petits oignons :
    cd ~/.config/sublime-text-3/Packages/
    mkdir ~/Dropbox/Sublime
    mv User ~/Dropbox/Sublime/
    ln -s ~/Dropbox/Sublime/User
  • sur les autres ordinateurs :
    cd ~/.config/sublime-text-3/Packages/
    rm -r User
    ln -s ~/Dropbox/Sublime/User

Apparence

Langages

Monter son Google Drive sous Debian Testing

Pour accéder à ses documents stockés sur Google Drive depuis votre explorateur de fichiers préféré sous Debian, le mieux semble être d'utiliser google-drive-ocamlfuse d'Alessandro Strada.

Installation

On se réfère au wiki mais on adapte quelque peu...

On crée le fichier :

sudo nano /etc/apt/sources.list.d/alessandro-strada-ubuntu-ppa.list

au sein duquel on ajoute ces lignes :

deb http://ppa.launchpad.net/alessandro-strada/ppa/ubuntu focal main 
deb-src http://ppa.launchpad.net/alessandro-strada/ppa/ubuntu focal main 

(Sous Debian Buster, il est nécessaire de basculer sur les dépôts de la précédentes version LTS d'Ubuntu et donc de remplacer focal par bionic.)

Puis on récupère la signature du dépôt avant de lancer l'installation :

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AD5F235DF639B041
sudo apt update && sudo apt install -y google-drive-ocamlfuse

Lancement

Le premier lancement se fait sans argument afin de générer les autorisations d'accès :

google-drive-ocamlfuse

Ensuite, on crée le répertoire où sera monté notre Google Drive et on passe ce dernier en argument à la commande précédente :

mkdir ~/GoogleDrive
google-drive-ocamlfuse ~/GoogleDrive

Montage à l'ouverture d'une session graphique

Sous Mate, il faut ouvrir le Centre de contrôle depuis le menu Système (ou via la commande mate-control-center) puis accéder à « Applications au démarrage » et créer une nouvelle entrée avec la commande suivante :

sh -c "google-drive-ocamlfuse ~/GoogleDrive"

My Own Tmux Cheat Sheet

Il s'agit ici pour moi de réunir en un lien unique, clairement identifiable — pour moi du moins — un certain nombre de ressources consacrées à Tmux, collant le plus possible à mes petits besoins et à mon usage limité de ce « multiplexeur de terminaux ».

Installation et préparation de base

Tmux est disponible dans les dépôts et il suffit pour l'installer d'un :

sudo apt install tmux

Ensuite, on récupère et on place dans notre /home les fichiers de configuration proposé par Gregory Pakosz sur GitHub :

cd /home/$USER
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .

Configuration personnelle

...

Raccourcis claviers

Avec cette configuration proposée par Gregory Pakosz, le préfixe à utiliser est soit Ctrl+b, celui par défaut de tmux, soit Ctrl+a.

<prefix> " ou <prefix> - : partager le panneau horizontalement
<prefix> % ou <prefix> _ : partager le panneau verticalement
<prefix> c : créer un nouveau panneau
<prefix> x : détruire le panneau actif

<prefix> space : alterne entre les différentes dispositions de panneaux possibles
<prefix> alt+1 : organise les panneaux verticalement
<prefix> alt+2 : organise les panneaux horizontalement

<prefix> ! : transforme un panneau en fenêtre
Pour envoyer un panneau vers une autre fenêtre, il faut commencer par saisir le raccourci <prefix> : et de saisir :

join-pane -t :<int>

<prefix> m : (dés)activer le mode souris

Copier-Coller

Pour profiter pleinement du copier-coller, il convient d'installer le paquet xclip et de bien avoir dans le fichier ~/.tmux.conf.local la ligne suivante :

tmux_conf_copy_to_os_clipboard=true

À la souris, il suffit de surligner le texte à copier et d'utiliser Alt+w.

Sinon, au clavier, il faut commencer par utiliser <prefix> [ pour entrer en mode copie, se rendre au début du texte à copier, appuyer sur Espace, se rendre à la fin et simplement appuyer sur Entrée.

ncspot, un client ncurse pour Spotify

Si mes recherches pour utiliser Spotify depuis mon Raspverry Pi sous Raspbian Buster m'ont tout d'abord conduit à la prise en charge des DRM pour utiliser le client web open.spotify.com puis au client Spotify Connect raspotify, j'ai enfin découvert un client Spotify ne nécessitant pas de serveur X : ncspot est ainsi un client ncurse pour Spotify écrit en Rust et hautement inspiré des clients ncmpc ou ncmpcpp pour MPD.

Installation

On commence par installer les dépendances :

sudo apt install libncursesw5-dev libdbus-1-dev libpulse-dev libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev

On installe ensuite une « instance » de Rust, grâce au script rustup :

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

avant de lancer l'installation à proprement parler de ncspot :

cargo install ncspot

Usage et configuration

Il suffit alors de lancer la commande ncspot et l'on peut alors naviguer entre trois écrans grâce aux touches F1, F2 et F3 : queue, recherche, bibliothèque.

Pour en savoir plus, il suffit d'accéder à l'écran d'aide avec la touche ?.

La configuration se fait dans le fichier ~/.config/ncspot/config.toml avec a possibilité de définir soi-même des raccourcis clavier au sein d'une section [keybindings] et un thème au sein d'une section [theme] (un générateur vous en facilite la création) :

backend = "pulseaudio"

[saved_state]
volume = 70
repeat = "no"
shuffle = true

[keybindings]

"Shift+p" = "pause"

[theme]
background = "black"
primary = "green"
secondary = "cyan"
title = "magenta"
playing = "black"
playing_selected = "blue"
playing_bg = "magenta"
highlight = "black"
highlight_bg = "green"
error = "white"
error_bg = "red"
statusbar = "magenta"
statusbar_progress = "magenta"
statusbar_bg = "black"
cmdline = "cyan"
cmdline_bg = "light black"

Scrobbling

Si l'on souhaite scrobbler ce que l'on écoute avec ncspot, il convient d'installer rescrobbled, écrit lui aussi en Rust :

wget https://github.com/InputUsername/rescrobbled/archive/v0.2.0.tar.gz
tar xvzf v0.2.0.tar.gz
cd rescrobbled-0.2.0/
cargo install --path .

La configuration se fait à travers le fichier ~/.config/rescrobbled/config.toml mais nécessite d'avoir généré au préalable un couple clé-secret via cette page de Last.fm :

mkdir ~/.config/rescrobbled/
nano ~/.config/rescrobbled/config.toml
lastfm-key = "Last.fm API key"
lastfm-secret = "Last.fm API secret"
#listenbrainz-token = "ListenBrainz API token"
enable-notifications = false
min-play-time = 0 # in seconds
player-whitelist = [ "ncspot" ] # if empty or ommitted, will allow all players

Il faut ensuite lancer la commande rescrobbled alors que le lecteur ncspot fonctionne ; il vous sera alors demander votre identifiant et votre mot de passe.
Pour lancer le service en tant que démon, il faut placer le fichier ~/rescrobbled-0.2.0/rescrobbled.service dans votre répertoire ~/.config/systemd/user/ :

mkdir -p ~/.config/systemd/user
cp ~/rescrobbled-0.2.0/rescrobbled.service ~/.config/systemd/user/

Lancez ensuite la commande suivante pour lancer rescrobbled au démarrage :

systemctl --user enable rescrobbled.service

et pour le lancer sans avoir à redémarrer :

systemctl --user start rescrobbled.service