Erwan.me

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 15 mai 2015

Impossible de cacher les fichiers cachés dans Nautilus !

Ce bug est très gênant sur Ubuntu 14.04. Voici comment y remédier :

gsettings set org.gtk.Settings.FileChooser  show-hidden false

Avec un éditeur graphique de configuration dconf-editor : Editeur_dconf_006.png

Pour les anciennes version d'Ubuntu / Nautilus :

gsettings set org.gnome.nautilus.preferences show-hidden-files false
gsettings set org.gtk.settings.file-chooser  show-hidden false

Source :

mercredi 6 mai 2015

Synthèse vocale : Asterisk, SVOX Pico TTS et sox

Pour faire suite à mon précédent billet sur la synthèse vocale, voici un exemple d'intégration de pico dans Asterisk :

Création des fichiers temporaires :

exten => _X.,n(mktemp),NoOp("Création des fichiers temporaires")
exten => _X.,n,Set(TEMP_FILE=${SHELL(/bin/mktemp |tr -d '\n')})

TTS :

exten => _X.,n,System(/usr/bin/pico2wave -l fr-FR -w ${TEMP_FILE}.wav "${tts}")

Conversion GSM avec sox :

exten => _X.,n,System(/usr/bin/sox ${TEMP_FILE}.wav -r 8000 -c1 -e gsm ${TEMP_FILE}.gsm)

On doit supprimer le wav avant la lecture car il n'a pas la bonne fréquence :

exten => _X.,n,System(/bin/rm ${TEMP_FILE}.wav)

Lecture :

exten => _X.,n,Playback(${TEMP_FILE})

Suppression des fichiers temporaires (extension hang up) :

exten => h,n(rm),NoOp("Suppression des fichiers temporaires")
exten => h,n,System(/bin/rm ${TEMP_FILE})
exten => h,n,System(/bin/rm ${TEMP_FILE}.wav)
exten => h,n,System(/bin/rm ${TEMP_FILE}.gsm)

Synthèse vocale sous Ubuntu avec SVOX pico TTS

Assez connu des utilisateurs d'Android, ce synthétiseur vocal offre de bon résultat en français.

Licence : https://launchpad.net/ubuntu/precise/+source/svox/+copyright (Une librairie de transformation rapide en série de Fourier n'est pas libre)

Activez les dépots multiverse puis installez le paquet libttspico-utils.

Un exemple simple :

pico2wave -l fr-FR -w test.wav "Faites demi-tour dès que possible !"; 
play test.wav;

SVOX a été racheté par Nuance et a plus ou moins abandonnée le projet, certainement pour ne pas concurencer son moteur TTS payant. Google continue de développer ce moteur sur son Dépôt GIT.

Lien complémentaire : http://forum.ubuntu-fr.org/viewtopic.php?id=108430

Pour

jeudi 26 mars 2015

Deux petites "astuces" pour Spotify sur Ubuntu 14.04

Actions directement sur le menu :

Spotify Unity

mkdir -p ~/.local/share/applications
cp /usr/share/applications/spotify.desktop ~/.local/share/applications/

Rajouter les lignes suivantes :

[...]
Actions=PlayPause;Next;Previous
[Desktop Action PlayPause]
Name=Lecture/Pause
Exec=dbus-send --print-reply=literal --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
OnlyShowIn=Messaging Menu;Unity;
[Desktop Action Next]
Name=Suivant
Exec=dbus-send --print-reply=literal --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next
OnlyShowIn=Messaging Menu;Unity;
[Desktop Action Previous]
Name=Précédent
Exec=dbus-send --print-reply=literal --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous
OnlyShowIn=Messaging Menu;Unity;
StartupWMClass=Spotify
Source : http://askubuntu.com/questions/145697/spotify-quicklist-for-unity#answer-346957
 

Avoir une icone de notification correct :

spotify fix ubuntu icon tray

wget --no-check-certificate http://bit.ly/fix-spotify-icon -O - | sh
À refaire en cas de mise à jour...

Source : https://github.com/faviouz/fix-spotify-icon

dimanche 15 mars 2015

Retropie : (re)connexion automatique de manettes PS3

On va utiliser une règle udev, comme pour les clefs 3G HUAWEI E303 et TP-LINK MA260.

sudo nano /etc/udev/rules.d/99-sixpair.rules
DRIVER=="usb", SUBSYSTEM=="usb", ATTR{idVendor}=="054c", ATTR{idProduct}=="0268", RUN+="/opt/retropie/supplementary/ps3controller/sixpair"

Recalbox utilise une solution identique :

Vous pouvez vous en inspirer si vous avez un adaptateur bluetooth récalcitrant. De mon coté, la deuxième manette ne se synchronise jamais. Je la branche et relance sixad (si vous avez une meilleure idée, n'hésitez pas) :

sudo nano /opt/retropie/supplementary/ps3controller/sixpair.udev
#!/bin/bash
/opt/retropie/supplementary/ps3controller/sixpair | logger -t "sixpair"
service sixad restart  | logger -t "sixad"
sudo chmod +x  /opt/retropie/supplementary/ps3controller/sixpair.udev
sudo udevadm control --reload-rules
sudo udevadm trigger

Modifiez /etc/udev/rules.d/99-sixpair.rules en conséquence !

Vous devrez aussi laisser votre adaptateur bluetooth en mode PISCAN :

sudo nano /etc/rc.local
[...]
hciconfig hci0 piscan
exit 0




Pour la configuration dans Retroarch :

sudo nano /opt/retropie/configs/all/retroarch.cfg
[...]
# PS3 Controllers :
# Player 1
input_player1_a_btn = "13"
input_player1_b_btn = "14"
input_player1_x_btn = "12"
input_player1_y_btn = "15"
input_player1_l_btn = "10"
input_player1_r_btn = "11"
input_player1_l2_btn = "8"
input_player1_r2_btn = "9"
input_player1_l3_btn = "1"
input_player1_r3_btn = "2"
input_player1_start_btn = "3"
input_player1_select_btn = "0"
input_player1_left_btn = "7"
input_player1_up_btn = "4"
input_player1_right_btn = "5"
input_player1_down_btn = "6"
input_player1_l_x_plus_axis = "+0"
input_player1_l_y_plus_axis = "+1"
input_player1_l_x_minus_axis = "-0"
input_player1_l_y_minus_axis = "-1"
input_player1_r_x_plus_axis = "+2"
input_player1_r_y_plus_axis = "+3"
input_player1_r_x_minus_axis = "-2"
input_player1_r_x_minus_axis = "-3"

# Player 2
input_player2_a_btn = "13"
input_player2_b_btn = "14"
input_player2_x_btn = "12"
input_player2_y_btn = "15"
input_player2_l_btn = "10"
input_player2_r_btn = "11"
input_player2_l2_btn = "8"
input_player2_r2_btn = "9"
input_player2_l3_btn = "1"
input_player2_r3_btn = "2"
input_player2_start_btn = "3"
input_player2_select_btn = "0"
input_player2_left_btn = "7"
input_player2_up_btn = "4"
input_player2_right_btn = "5"
input_player2_down_btn = "6"
input_player2_l_x_plus_axis = "+0"
input_player2_l_y_plus_axis = "+1"
input_player2_l_x_minus_axis = "-0"
input_player2_l_y_minus_axis = "-1"
input_player2_r_x_plus_axis = "+2"
input_player2_r_y_plus_axis = "+3"
input_player2_r_x_minus_axis = "-2"
input_player2_r_x_minus_axis = "-3"

# Exit emulators with "Home" button :
input_enable_hotkey_btn = "16"
input_exit_emulator_btn = "16"

Vous pouvez configurer autant de manettes que vous voulez de cette manière...

Sources :

samedi 14 mars 2015

Modem 3G HUAWEI E303 sur Raspbian

Normalement, ce modem est reconnu directement sous la forme d'un adaptateur USB réseau. Il devrait etre disponible sous l'interface "eth1".

Pour configurer l'interface réseau, rien de plus simple :

sudo nano /etc/network/interfaces
allow hotplug eth1
iface eth1 inet dhcp

Voici tous les modes disponibles trouvés :

  • 12d1:1f01 : Accès à la carte mémoire
  • 12d1:14dc : Adaptateur Ethernet
  • 12d1:1001 : Modem PPP USB classique

La configuration ressemble à celle évoquée précédemment : modem TP-LINK MA260

Voici une autre possibilité : le fichier de configuration d'usb-modeswitch. Il y a un exemple dans la documentation :

cd /usr/share/usb_modeswitch/
sudo tar xvzf configPack.tar.gz
sudo cp /usr/share/usb_modeswitch/12d1\:1f01 /etc/usb_modeswitch.d/

Remplacez le contenu du fichier de configuration en fonction de votre besoin.

Adaptateur Ethernet :

# Huawei E353 (3.se) Ethernet Adapter
TargetVendor=  0x12d1
TargetProduct= 0x14db
MessageContent="55534243123456780000000000000a11062000000000000100000000000000"
NoDriverLoading=1

Modem USB :

# Huawei E353 (3.se) PPP Modem
TargetVendor= 0x12d1
TargetProduct= 0x1001
MessageContent="55534243123456780000000000000011063000000100010000000000000000"
NoDriverLoading=0

Sources :

mardi 10 février 2015

Transformer une Debian en kiosque internet (Raspberry Pi et/ou MIPS Creator CI20)

Installation du nécessaire :

  • i3 : Gestionnaire de fenêtres
  • feh : Lecteur d'image (pour le fond d'écran)
  • surf : navigateur internet "simple" basé sur webkit
  • x11-xserver-utils : Outils pour le serveur X parfois bien pratique
  • ttf-mscorefonts-installer : les polices de caractères répandues sur internet (il faudra activer les dépôts "contrib")
  • xwit, unclutter : cacher le curseur (méthodes alternatives)

On commence par configurer le clavier, la langue et l'heure du système :

# Clavier classique PC en français :
setxkbmap fr
# De manière persistante :
sudo dpkg-reconfigure keyboard-configuration
# Choisir "PC générique 105 touches (intl)
# Français (variante)
# Disposition par défaut
# Pas de touche Compose
# Système en français :
sudo dpkg-reconfigure locales
# Fr_fr.UTF8
# Heure française :
sudo dpkg-reconfigure tzdata
# Europe / Paris

La version actuelle du navigateur Surf dans les dépôts est la version 0.4.1 et ne supporte pas le mode kiosque. Nous allons devoir compiler la version 0.6 :

sudo apt-get install build-essential git libgtk2.0-dev libwebkit-dev libglib2.0-dev zlib1g-dev
git clone http://git.suckless.org/surf
cd surf
git checkout 0.6
make
sudo make install

Configuration d'i3

i3-config-wizard
<Enter> Yes, generate ~/.i3/config
<Win> Win as default modifier
<Enter> to write ~/.i3/config

Personnellement, je rajoute toujours la possibilité d'éteindre et de redémarrer car le Pi n'a pas de bouton (par défaut) :

# reload the *C*onfiguration file
bindsym $mod+Shift+C reload
# restart i3 *I*nplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+I restart
# *E*xit i3 (logs you out of your X session)
bindsym $mod+Shift+E exit
# *P*oweroff - shut down system with systemd/polkit
bindsym $mod+Shift+P exec /usr/bin/systemctl poweroff
# *R*eboot
bindsym $mod+Shift+R exec /usr/bin/systemctl reboot

Pour cacher la barre d'i3 :

# Start and hide i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command  i3status
mode            hide
}

Finalement, on indique à i3 de n'afficher Surf qu'en plein écran :

# make surf start in fullscreen
for_window [class="Surf"] fullscreen
# execute surf
exec /usr/bin/surf -b -f -K "http://blog.erwan.me"

Configuration du serveur X :

nano .xinitrc
# Disable the screensaver :
xset s off
# disable DPMS (Energy Star) features :
xset -dpms
# Don't blank the video device :
xset s noblank
# Nice wallpaper (surf loading)  :
xsetroot -solid "#FFFFFF"
feh --bg-max /usr/share/raspberrypi-artwork/raspberry-pi-logo.png
# And finally start our window manager :
i3 & wmpid=$!
# Wait a second :
sleep 1
# kills all the other programs on exit of you window manager :
wait $wmpid

Pour cacher le pointeur de souris, vous avez plusieurs solutions :

sudo nano /etc/X11/xinit/xserverrc
#!/bin/sh
exec /usr/bin/X -nocursor -nolisten tcp "$@"

Ou bien rajoutez dans votre .xinitrc, avant le fond d'écran :

# Hide the cursor
unclutter -display :0 -noevents -grab &
# Hide the cursor (move it to the bottom-right)
xwit -root -warp $( cat /sys/module/*fb*/parameters/fbwidth ) $( cat /sys/module/*fb*/parameters/fbheight )

Au démarrage, on lance X avec l'utilisateur de votre choix (ici erwan) :

sudo nano /etc/rc.local
#!/bin/sh -e
su -l erwan -c startx
exit 0

Maintenant que tout est prêt, il ne nous reste plus qu'à configurer le gestionnaire de connexion et lui dire d'utiliser i3 :

sudo nano /etc/lightdm/lightdm.conf
# user-session=default
user-session=i3
nano .dmrc
[Desktop]
Session=i3
sudo update-alternatives --config x-window-manager
# Choisir i3

Redémarrez et profitez !

Si tout ne se passe pas comme prévu (vous pensiez vous ennuyer ?) :

  • Vous pouvez vous connecter depuis un autre ordinateur via SSH, et lancer des commandes graphiques :
env DISPLAY=:0 surf -k 'http://blog.erwan.me'
  • N'oubliez pas les raccourcis clavier définis dans la configuration d'i3 :
Super (Windows) + MAJ + C pour recharger la configuration d'i3
Super (Windows) + MAJ + I pour relancer i3
Super (Windows) + MAJ + E pour quitter i3
Super (Windows) + MAJ + R pour redémarrer
Super (Windows) + Enter pour avoir un terminal

Sources :

vendredi 6 février 2015

Utiliser Unbound avec les serveurs racines d'internet

Certains fournisseurs d'accès internet ont des serveurs DNS menteurs, pour bloquer certains sites ou encore sur une faute de frappe pour vous proposer de "solutions". Pour éviter ce genre de désagrément, on peut utiliser son propre serveur (cache) de noms :

sudo apt-get install unbound

Sous Ubuntu 14.04, Unbound est directement configuré pour utiliser les serveurs racines avec DNSSEC : on va juste les mettre à jour :

wget ftp://ftp.internic.net/domain/named.cache -O /etc/unbound/root.hints

Vous pouvez automatiser la mise à jour avec cron. Par exemple :

sudo crontab -e
@monthly wget ftp://ftp.internic.net/domain/named.cache -O /etc/unbound/root.hints >/dev/null 2>&1

Network-manager utilise lui dnsmask. Pour le désactiver, éditer le fichier de configuration et commenter ce comportement :

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
sudo restart network-manager

Pour vérifier qu'Unbound est bien utilisé :

sudo netstat -ulnp | grep ":53 "
udp        0      0 127.0.0.1:53            0.0.0.0:*                           2799/unbound    
udp6       0      0 ::1:53                  :::*                                2799/unbound

Deux petits dig pour tester le tout :

dig erwan.me
; <<>> DiG 9.9.5-3ubuntu0.1-Ubuntu <<>> erwan.me
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5806
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;erwan.me.                      IN      A

;; ANSWER SECTION:
erwan.me.               10800   IN      A       217.70.184.38

;; AUTHORITY SECTION:
erwan.me.               10800   IN      NS      c.dns.gandi.net.
erwan.me.               10800   IN      NS      a.dns.gandi.net.
erwan.me.               10800   IN      NS      b.dns.gandi.net.

;; Query time: 238 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Feb 06 20:32:08 CET 2015
;; MSG SIZE  rcvd: 114
dig erwan.me
; <<>> DiG 9.9.5-3ubuntu0.1-Ubuntu <<>> erwan.me
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1850
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;erwan.me.                      IN      A

;; ANSWER SECTION:
erwan.me.               10776   IN      A       217.70.184.38

;; AUTHORITY SECTION:
erwan.me.               10775   IN      NS      c.dns.gandi.net.
erwan.me.               10775   IN      NS      a.dns.gandi.net.
erwan.me.               10775   IN      NS      b.dns.gandi.net.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Feb 06 20:32:32 CET 2015
;; MSG SIZE  rcvd: 114

Le second se fait bien sur notre cache ^_^

MPLABX (NetBeans) sous Ubuntu 14.04 - intégration des menus

Les menus de MPLABX ne sont vraiment pas à mon goût, comme ceux de NetBeans. Logique, MPLABX est basé sur cet IDE.

Pour y remédier :

sudo add-apt-repository ppa:danjaredg/jayatana
sudo apt-get update
sudo apt-get install jayatana

Redémarrer Ubuntu (relancer la session ne suffit visiblement pas)

mplabx_ubuntu_14.04.png

Vous pouvez désactiver le PPA si vous le souhaitez (les PPAs peuvent être dangereux) :

sudo add-apt-repository -r ppa:danjaredg/jayatana

Sinon, vous avez toujours la possibilité d'utiliser un autre thème Java.

Sources :
https://danjared.wordpress.com/2014/03/27/java-ayatana-2-x/
https://code.google.com/p/java-swing-ayatana/
http://plugins.netbeans.org/plugin/41822

vendredi 9 janvier 2015

Réordonner les indicateurs

Pour commencer, on a besoin de connaitre le nom des indicateurs :

dbus-send --type=method_call --print-reply \
--dest=com.canonical.indicator.application \
/com/canonical/indicator/application/service \
com.canonical.indicator.application.service.GetApplications | grep "object path"

Vous devriez obtenir des lignes qui ressemble à ça :

         object path "/org/ayatana/NotificationItem/netspeed/Menu"
         object path "/org/ayatana/NotificationItem/indicator_git/Menu"
         object path "/org/ayatana/NotificationItem/dropbox_client_4814/Menu"
         object path "/org/ayatana/NotificationItem/Diodon/Menu"
         object path "/org/kde/statusnotifieritem/1/Menu"
         object path "/org/ayatana/NotificationItem/multiload/Menu"
         object path "/org/ayatana/NotificationItem/Shutter/Menu"
         object path "/org/ayatana/NotificationItem/nm_applet/Menu"
         object path "/org/ayatana/NotificationItem/indicator_cpufreq/Menu"

Le nom de l'indicateur est en général avant /Menu. Il faut remplacer les "soulignés du 8" avec des "tirets du 6".
Ensuite, éditez le fichier ~/.local/share/indicators/application/ordering-override.keyfile. Si le fichier n'existe pas, il faudra le créer.

Voici un exemple :

[Ordering Index Overrides]
gnome-power-manager=1
nm-applet=2
indicator-cpufreq=3
multiload=4
Shutter=5
Diodon=6
indicator-git=7
netspeed=8
cloud-ui=9
dropbox-client=10

Pour visualiser le changement sans redémarrer ni se déconnecter :

restart unity-panel-service

Remarques :

  • Par défaut, ils sont dans l'ordre d'installation, du premier lancement
  • Vous devez tous les numéroter sans en oublier, sous peine de retourner sur l'ordre par défaut
  • Il faut numéroter dans l'ordre, impossible de coller l'infini à celui que vous vouliez à gauche, c'eût été trop facile !
  • Dropbox à la superbe idée de coller son PID à son nom, ce qui lui permet d'être en général bien visible à gauche (intelligent et énervant) !

Source:
http://www.webupd8.org/2011/06/how-to-change-application-indicators.html

- page 1 de 31