Entries Tagged as ''

Monter une image nero

Petite astuce pour monter une image CDROM faite avec Nero (*.nrg).
Tout d’abord, on peut soit la convertir en ISO, puis monter l’ISO comme on le fait habituellement, soit directement la monter en passant les parties inutiles du fichier.

Pour convertir le .nrg en .iso, on peut soit le faire via l’utilitaire nrg2iso, soit simplement avec dd, étant donné que le format .nrg est le même que le .iso après les 300Ko d’entête (on ne copie donc pas cet entête)

# Convertit :
dd bs=1k if=image-nero.nrg of=image-iso.iso skip=300
# Ou :
nrg2iso image-nero.nrg image-iso.iso
# Monte
sudo mount -o loop image-iso.iso /mnt/iso

La seconde méthode, on monte à partir des 300Ko de l’image (307200 octets donc) :

sudo mount -o loop,offset=307200 image-nero.nrg /mnt/iso

Voilà, en espèrant que ça peut être utile à certains :)

Meilleure gestion des groupes avec StumpWM

StumpWM est un gestionnaire de fenêtres en mosaïque, comme awesome, écrit entièrement en Common Lisp. Pour plus d’informations, je vous recommande d’aller voir sa documentation.

Un des seuls points négatifs que j’y ait trouvé, est la gestion des groupes (l’équivalent des bureaux virtuels). Si vous voulez mettre une fenêtre dans un autre groupe, il faut d’abord créer le groupe (C-t g c), nommer le groupe, ensuite déplacer la fenêtre vers le groupe (C-t g m suivis du nom du groupe). Le fait que StumpWM soit écrit entièrement en Common Lisp nous permet d’implémenter un peu toutes les fonctionnalitées que l’on veut. J’ai donc développé une gestion des groupes similaires à wmii ou awesome.

Il faut donc modifier le .stumpwmrc situé dans le home. Tout d’abord, on va créer 5 groupes, nommés de 0 à 4, puis supprimer le groupe créée automatiquement au démarrage (« Default »). On se déplace ensuite sur le premier groupe (groupe 0), et finalement on bind des raccourcis pour changer de groupe, et pour déplacer une fenêtre d’un groupe à l’autre. Les raccourcis seront C-t [1,2,3,4,5] Pour changer de groupe, et C-t C-[1,2,3,4,5] pour déplacer une fenêtre.

Voilà le code :

;; Modification des groupes : 5 groupes crées par défaut (nommés 0, 1, 2, 3, 4)
; On crée les 5 groupes si ils n'existent pas déjà (appel de loadrc par ex.)
(loop for n in '("0" "1" "2" "3" "4") do
      (if (not (find-group (current-screen) n))
	  (add-group (current-screen) n)))
; On supprime le groupe Default s'il existe (groupe au démarrage)
(let ((default-group (find-group (current-screen) "Default")))
  (if default-group
      (kill-group default-group (find-group (current-screen) "0"))))
 
; On se place bien sur le groupe 0
(switch-to-group (find-group (current-screen) "0"))
 
;; Meilleurs raccourcis pour la gestion des groupes
; C-t 1, C-t 2, ... -> va au groupe 0, 1, ...
; C-t C-1, ... -> bouge la fenêtre dans le groupe 0, ...
; Les touches &, é, ", ', ( sont les caractères présents
; sur les touches 1, 2, 3, 4, 5 sur un clavier belge,
; à adapter selon le clavier
(let ((keys '("&" "eacute" "\"" "'" "(")))
  (loop for key in keys ; Les touches 1, 2, ...
	do
	(progn
	  (define-key *root-map* (kbd key)
	    (concatenate 'string
			 "gselect "
			 (write-to-string (position key keys))))
	  (define-key *root-map*
	    (kbd (concatenate 'string "C-" key))
	    (concatenate 'string
			 "gmove "
			 (write-to-string (position key keys))))
	)))

Et en « bonus », une autre feature à la wmii : pour se déplacer entre les fenêtres, on bind C-t [h,j,k,l], et pour déplacer les fenêtres, C-t C-[h,j,k,l] :

;; Utilisation de C-t h,j,k,l pour se déplacer dans les fenêtres
;; Si controle pressé, ça déplace la fenêtre dans cette direction
;; Si controle pressé, ça déplace la fenêtre dans cette direction
(let ((directions '(("h" "left")
		    ("l" "right")
		    ("k" "up")
		    ("j" "down"))))
  (dolist (dir directions)
     (define-key *root-map* (kbd (car dir))
      (concatenate 'string "move-focus " (cadr dir)))
    (define-key *root-map* (kbd (concatenate 'string "C-" (car dir)))
      (concatenate 'string "move-window " (cadr dir)))
    ))

Sur ce, bon amusement avec StumpWM :)

Éxécuter un script lisp avec SBCL en bash

Voilà une petite astuce pour lancer un fichier lisp (ou un .fasl) avec SBCL à partir d’un prompt bash :

sbcl --noinform --load fichier.lisp --eval '(quit)'

C’est vraiment très simple, on peut aussi faire ça ainsi

sbcl --noinform --eval '(load "fichier.lisp")' --eval '(quit)'

Vous l’aurez compris, les –eval sont évalués dans l’ordre dans lequel ils sont passé en argument.
Avec ça, on peut aussi définir une commande pour compiler un fichier :

sbcl --noinform --eval '(compile-file "fichier.lisp")' --eval '(quit)'

Et donc, pour lancer le fichier compilé (un .fasl) :

sbcl --noinform --load fichier.fasl --eval '(quit)'

Évidemment, si on ne spécifie pas le (quit), une fois l’éxécution du fichier terminée, on se retrouve dans la boucle REPL de sbcl.