domenica 28 luglio 2013

L'OFM definitivo


Dopo anni di ricerche, sfociate in un post scritto nel 2009, finalmente posso dire di aver trovato un OFM che mi aggrada! Stiamo parlando di Double Commander!

Facendo seguito al post di ieri riguardo ai colori per tipi di file, ho configurato Double Commander all'uopo, ed il risultato mi soddisfa alquanto!


Per ottenere questo risultato bisogna andare nel menù Configurations→Options e scegliere Colors→File types, ottenendo una schermata di questo tipo:



Ho creato una serie di categorie, indicato per ciascuna l'estensione o le estensioni a cui applicare il colore selezionato.

E' possibile indicare se alla categoria appartengono solo i file "-*", solo le cartelle "d*", solo i file con attributo eseguibile "-??x*" o file e cartelle "*", tutte strighe da inserire nel campo Category attributes.

E' un programma multi-piattaforma che gira anche sotto windows, per cui potrebbe avere senso cominciarlo ad usare anche di là. Vedremo...

sabato 27 luglio 2013

Colorare i file in base all'estensione


Avere la lista dei file colorata per estensione è una gran comodità, come si evince dal seguente confronto:


Obiettivo di questo post è quello di identificare le estensioni utili e i colori da usare, e di tentare di impostare il tutto nei vari applicativi usati (total commander sotto windows, ls colorati nei terminali linux, ecc).

Estensioni e colori

Ecco un possibile esempio di associazione di colori:

default: ciano
eseguibile: verde
immagine: rosa
audio: fuxia
testo semplice: grigio
documento: bianco
archivio: rosso
il giallo verrà usato dagli applicativi OFM ad indicare i file selezionati

Impostare i colori per il comando ls nella shell

Il comando
dircolors --print-database > .dircolors
invocato nella cartella HOME genera un file che verrà letto dallo script .bashrc (almeno in ubuntu) nelle righe:
 
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi 

Per sapere quali colori sono a disposizione nella shell e quali codici usare, viene in aiuto un simpatico script recuperato da questa pagina, la cui esecuzione fornisce il seguente risultato:


Il risultato dell''esecuzione dello script dipende dalla configurazione del PC in uso, per cui su un'altra macchina con lubuntu, il risultato è il seguente:



Si impostano quindi i colori che vogliamo nel file .dircolors; si riavvia la shell (o si esegue il comando eval evidenziato in viola nello script precedente) e si verifica il risultato.

Oltre ai colori ANSI riportati con lo script precedente, è addirittura possibile impostare colori a 8 bit. Eseguendo il secondo script della pagina indicata prima, si ottiene la seguente schermata:


Per usare tali colori bisogna inserire la stringa
.ext 38;05;val
dove ext è l'estensione da colorare, val è ad esempio (232+35=267) per il verdino in basso a destra.

Qui il risultato sul secondo PC:


Il problema con questo sistema è che non è compatibile con gnome-commander, per cui si consiglia di non usarlo.

Dopo la scelta dei colori, ecco il contenuto del mio file .dircolors:
# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the --color option.
# Copyright (C) 1996, 1999-2008
# Free Software Foundation, Inc.
# Copying and distribution of this file, with or without modification,
# are permitted provided the copyright notice and this notice are preserved.
# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
# slackware version of dircolors) are recognized but ignored.
# Below, there should be one TERM entry for each termtype that is colorizable
TERM Eterm
TERM ansi
TERM color-xterm
TERM con132x25
TERM con132x30
TERM con132x43
TERM con132x60
TERM con80x25
TERM con80x28
TERM con80x30
TERM con80x43
TERM con80x50
TERM con80x60
TERM cons25
TERM console
TERM cygwin
TERM dtterm
TERM eterm-color
TERM gnome
TERM gnome-256color
TERM jfbterm
TERM konsole
TERM kterm
TERM linux
TERM linux-c
TERM mach-color
TERM mlterm
TERM putty
TERM rxvt
TERM rxvt-cygwin
TERM rxvt-cygwin-native
TERM rxvt-unicode
TERM screen
TERM screen-256color
TERM screen-bce
TERM screen-w
TERM screen.linux
TERM vt100
TERM xterm
TERM xterm-16color
TERM xterm-256color
TERM xterm-88color
TERM xterm-color
TERM xterm-debian
# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
#NORMAL 00 # no color code at all
FILE 01;36 # regular file: use no color at all
RESET 0 # reset to "normal" color
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
 # numerical value, the color is as for the file pointed to.)
HARDLINK 44;37 # regular file with more than one link
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
CAPABILITY 30;41 # file with capability
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
# This is for files with execute permission:
EXEC 01;32
# List any file extensions like '.gz' or '.tar' that you would like ls
# to colorize below. Put the extension, a space, and the color init string.
# (and any comments you want to add after a '#')
# If you use DOS-style suffixes, you may want to uncomment the following:
#.cmd 01;32 # executables (bright green)
#.exe 01;32
#.com 01;32
#.btm 01;32
#.bat 01;32
# Or if you want to colorize scripts even if they do not have the
# executable bit actually set.
#.sh 01;32
#.csh 01;32
 # archives or compressed (bright red)
.tar 01;31
.tgz 01;31
.arj 01;31
.taz 01;31
.lzh 01;31
.lzma 01;31
.zip 01;31
.z 01;31
.Z 01;31
.dz 01;31
.gz 01;31
.bz2 01;31
.bz 01;31
.tbz2 01;31
.tz 01;31
.deb 01;31
.rpm 01;31
.jar 01;31
.rar 01;31
.ace 01;31
.zoo 01;31
.cpio 01;31
.7z 01;31
.rz 01;31
# image formats
.jpg 38;05;219
.jpeg 38;05;219
.gif 38;05;219
.bmp 38;05;219
.pbm 38;05;219
.pgm 38;05;219
.ppm 38;05;219
.tga 38;05;219
.xbm 38;05;219
.xpm 38;05;219
.tif 38;05;219
.tiff 38;05;219
.png 38;05;219
.svg 38;05;219
.svgz 38;05;219
.mng 38;05;219
.pcx 38;05;219
.mov 38;05;219
.mpg 38;05;219
.mpeg 38;05;219
.m2v 38;05;219
.mkv 38;05;219
.ogm 38;05;219
.mp4 38;05;219
.m4v 38;05;219
.mp4v 38;05;219
.vob 38;05;219
.qt 38;05;219
.nuv 38;05;219
.wmv 38;05;219
.asf 38;05;219
.rm 38;05;219
.rmvb 38;05;219
.flc 38;05;219
.avi 38;05;219
.fli 38;05;219
.flv 38;05;219
.gl 38;05;219
.dl 38;05;219
.xcf 38;05;219
.xwd 38;05;219
.yuv 38;05;219
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
.axv 01;35
.anx 01;35
.ogv 01;35
.ogx 01;35
# audio formats
.aac 38;05;201
.au 38;05;201
.flac 38;05;201
.mid 38;05;201
.midi 38;05;201
.mka 38;05;201
.mp3 38;05;201
.mpc 38;05;201
.ogg 38;05;201
.ra 38;05;201
.wav 38;05;201
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
.axa  00;36
.oga  00;36
.spx  00;36
.xspf 00;36

# Zac ext
# eseguibili
.exe 01;32
.run 01;32
.bat 01;32
.sh  01;32
# documenti
.xls  00;01
.xlsx 00;01
.doc  00;01
.pdf  00;01
# documenti ascii
.txt 00;37
.c   00;37
.cpp 00;37
.h   00;37
.hpp 00;37
# moduli musicali
.s3m 38;05;201