xorg-server 1.17.1 est maintenant disponible

La nouvelle version est livrée avec les modifications suivantes:

  • suivant upstream, xf86-video-modesetting est maintenant fourni avec le paquet xorg-server.
  • Ces paquets sont obsolètes et déplacés sur AUR, certains sont remplacés par le pilote modesetting: xf86-video-ast, xf86-video-cirrus, xf86-video-geode, xf86-video-mga, xf86-video-sisimedia, xf86-video-v4l.

Article original

Transition de la suite KDE à KDE Frameworks and Qt 5

La suite de logiciels KDE a été mise à jour pour les applications KDE 14.12.

Les développeurs de KDE ont commencé à porter leurs logiciels pour KDE frameworks et Qt 5. Pour une liste des logiciels qui a été portée voir l’annonce.

Lorsqu’un port d’une application KDE pour le frameworks KDE est considéré comme stable, il est distribué avec les applications KDE et le développement et les corrections de bugs ne sont plus appliqués à la version Qt 4/KDE 4. Cela signifie que dès que les versions d’applications portées sont publiées, nous basculerons à la nouvelle version. Dans le même temps, nous nous débarrassons des préfixes des modules KDE (par exemple kdebase-konsole -> konsole).

Le résultat de cette transition est que certains paquets utiliseront QT5 et d’autres Qt4. Nous (NdT: les développeurs et TUs d’Arch) travaillons dur pour faire la transition en douceur pour les utilisateurs de KDE4, mais les choses peuvent sembler différentes en fonction de votre configuration. Veuillez ajuster thèmes et couleurs comme souhaité pour les deux boîtes à outils. Voir le wiki (Note: le wiki francophone devrait être ajusté dans les jours à venir au fil de cette évolution…) pour de l’aide. Nous vous recommandons également de passer à plasma 5.2 qui sera publié cette semaine.

Veuillez rapporter les bugs upstream sur le bugzilla de KDE. N’hésitez pas à me (NdT: Andrea Scarpino) CC.

Article original

Changements d’empaquetage de lirc 0.9.2

Par souci de cohérence avec le nommage upstream, le paquet lirc-utils a été renommé en lirc. Les pilotes wpc8769l du noyau ont été abandonnés et peuvent être obtenus en installant lirc-wpc8769l depuis AUR.

Notez que la 0.9.2 est une version majeure et vient avec plusieurs changements d’empaquetage upstream . En particulier, l’unité systemd irexec.service a été supprimée. Veuillez copier et modifier le template /usr/share/lirc/contrib/irexec.service si vous souhaitez continuer à utiliser ce service.

Article original

Mise à jour de pacman 4.2

La mise à jour de pacman en version 4.2 requiert une opération manuelle.

Suite à la mise à jour, pacman ne voudra plus fonctionner et indiquera ceci :

erreur : l’initialisation de la bibliothèque alpm a échoué
(la version de la base de donnée n’est pas la bonne : /var/lib/pacman/)
erreur :   essayez de lancer pacman-db-upgrade

Il est donc bien nécessaire de lancer pacman-db-upgrade après la mise à jour de pacman en version 4.2

De plus si vous utilisez package-query, par exemple via yaourt, et que vous n’utilisez pas le dépôt archlinuxfr, il est fort probable que la mise à jour du système n’ait pas pu être faite suite à un problème de dépendance. La façon la plus simple pour résoudre le souci est d’utiliser le dépôt archlinuxfr. Sinon il sera nécessaire de désinstaller package-query avant de faire la mise à jour, puis une fois la mise à jour faite, il faudra le réinstaller via AUR. Fort heureusement ces étapes seront simplifiées suite aux évolutions apportées dans cette version 4.2.

Pacman 4.2 provoque une rupture de compatibilité sur les points suivants :

  • Lors de la création d’un PKGBUILD, la fonction « package » est nécessaire. Ce qui implique que tous les paquets sur AUR ne possédant qu’une fonction « build » ne pourront plus être compilés sans être modifiés.
  • makepkg ne peut plus être lancé en root : l’option –asroot a été supprimée.

Les nombreux autres changements sont détaillés dans l’article suivant http://allanmcrae.com/2014/12/pacman-4-2-released

J'ai essayé Firefox Hello

Une des bonnes nouvelles de l'actualité récente est bien l'arrivée de Hello de Firefox : enfin une alternative libre et crédible à Skype. Pas seulement d'un point de vue technique, puisque semble-t-il Linphone est déjà parfaitement fonctionnel, mais aussi et surtout parce que pour qu'un logiciel de communication fonctionne il faut surtout... des correspondants. Et l'argument mille fois entendu quand on parle d'utiliser une solution libre est que "puisque mes amis sont sur [ msn | skype | facebook ] c'est là que je suis".

Dans le cas présent pour les utilisateurs de Firefox il n'y a rien à installer, même pas de greffon ni d'extension, il suffit d'avoir la dernière version à ce jour, la 34. Enfin presque car la fonctionnalité est pour l'instant masquée à 90% des utilisateurs afin de ne pas surcharger le service pendant la phase béta, mais nous verrons ci-dessous comment la faire apparaître le cas échéant.

Mise en œuvre

La première chose à faire est de rechercher l'icône de Hello. Pour cela cliquez sur l'icône de menu de Firefox puis, en bas de celui-ci, sur "Personnaliser" (Capture 1).

S'ouvre alors un nouvel onglet avec à droite les options du menu et à gauche un ensemble d'outils et fonctionnalités supplémentaires disponibles (Capture 2). Si vous n'y voyez pas l'icône de Hello fermez l'onglet de personnalisation, tapez about:config dans la zone d'adresses, acceptez l'invitation à faire attention à ce que vous faites, recherchez la chaîne "loop.throttled", passez sa valeur de true à false par un double clic et recommencez l'opération. Vous pouvez alors tirer-déposer l'icône soit dans votre menu soir dans votre barre d'outils.

un clic sur celle-ci vous invite soit à commencer directement une conversation avec un correspondant en lui communiquant un lien (par mail, chat, téléphone...) soit à vous inscrire / connecter au serveur de Firefox (Capture 3). Notons que si cette dernière option est facultative elle simplifie grandement la gestion des contacts via un carnet d'adresses et évite ainsi l'échange de lien si votre correspondant est lui aussi enregistré et connecté.

Menu-Firefox.png Personnaliser-Firefox.png Connexion-Hello.png capture_hello.jpg
Capture 1
Capture 2
Capture 3
Avec mon fils

Et ensuite ?

Et bien si vous disposez d'une webcam et d'un microphone en état de marche tout fonctionne "out of the box". L'image est fluide, même en plein écran, et le son est clair. Tout au moins en a-t-il été ainsi lors de mon premier essai avec ma fille Alison. Notons encore que selon Mozilla (voir cette page en anglais) Hello peut contacter n'importe quel navigateur compatible WebRTC, tels que Firefox, Chrome ou Opera. Vraiment, vous n'avez plus guère de raisons d'utiliser un logiciel privateur tel que Skype.

Plus d'info, notamment sur les fonctionnalités à venir, sur le blog de Mozilla (en anglais)

Mise à jour de ca-certificates

La manière dont les certificats des autorités de certification (CA) locaux sont traités a changé. Si vous avez ajouté des certificats de confiance au niveau local:

  1. Déplacez /usr/local/share/ca-certificates/*.crt vers  /etc/ca-certificates/trust-source/anchors/
  2. Faites de même avec tous les fichiers /etc/ssl/certs/*.pem ajoutés manuellement et renommez-les en *.crt
  3. Au lieu d’update-ca-certificates, lancez trust extract-compat

Voir aussi man 8 update-ca-trust et trust --help.

Article original

GnuPG-2.1 et le trousseau de clés de pacman

La mise à niveau vers gnupg-2.1 a porté le trousseau de clés de pacman vers un nouveau format upstream mais a rendu dans le processus la clé principale locale incapable de signer d’autres clés. C’est seulement un problème si vous avez jamais eu l’intention de personnaliser votre trousseau de clés de pacman. Nous (NdT: développeurs d’Arch) recommandons néanmoins à tous les utilisateurs de résoudre ce problème en générant un nouveau trousseau de clés.

En outre, nous vous recommandons d’installer haveged, un démon qui génère l’entropie du système; ceci accélère les opérations critiques dans les programmes cryptographiques tels que GnuPG (y compris la génération de nouveaux trousseaux de clés).

Pour faire tout ce qui précède, lancez en tant que root:

 pacman -Syu haveged
 systemctl start haveged
 systemctl enable haveged

 rm -fr /etc/pacman.d/gnupg
 pacman-key --init
 pacman-key --populate archlinux

Article original

LockKeys 0.2

J'ai évoqué récemment mon besoin d'avoir une applet indicateur d'état du clavier (capslock et numlock) indépendante de l'environnement de bureau. Ne trouvant rien qui me satisfasse j'ai alors bidouillé un script en bash, mais avec dans un coin de ma tête l'idée que l'occasion était bien belle de me mettre enfin à Python. D'autant plus que j'utilise Battery Monitor (aka batterymon-clone) écrit en python2 et dont je me suis bien entendu largement inspiré.

Fonctionnement : une simple icône dans le systray avec un menu accessible par un clic droit

En option il est possible de jouer un son et/ou d'afficher une notification. Le jeux d'icônes et le fichier son doivent être installés pour l'instant dans /usr/local/share/lockkeys. Ils sont réunis dans cette archive.

Voici le code

#!/usr/bin/python2
# -*- coding: utf-8 -*-

#Todo mettre les messages sous forme de variable dans fichier à inclure <- internationalisation

import gtk
import glib
import os
import sys
import ConfigParser
import ctypes
try:
    import pynotify
    if not pynotify.init("LockKeys"):
        print("Il y a eu une erreur pendant l'initialisation du système de notification. Les notifications ne fonctionnerons pas.")
        pynotify = None
except:
    print("Il semble que python-notify ne soit pas installé. Les notifications ne fonctionnerons pas.")
    pynotify = None
NotifyAvailable = pynotify
 
class XKeyboardState(ctypes.Structure):
    _fields_ = [("key_click_percent", ctypes.c_int),
                ("bell_percent", ctypes.c_int),
                ("bell_pitch", ctypes.c_uint),
                ("bell_duration", ctypes.c_uint),
                ("led_mask", ctypes.c_ulong),
                ("global_auto_repeat", ctypes.c_int),
                ("auto_repeats", ctypes.c_char * 32)]
 
def initXGetKeyboardControl():
    global dpy, keyboardState, XGetKeyboardControl
   
    libX11 = ctypes.CDLL("libX11.so.6")
    XOpenDisplay = libX11.XOpenDisplay
    XOpenDisplay.restype = ctypes.c_void_p
    XOpenDisplay.argtypes = [ctypes.c_char_p]
    XGetKeyboardControl = libX11.XGetKeyboardControl
    XGetKeyboardControl.restype = ctypes.c_int
    XGetKeyboardControl.argtypes = [ctypes.c_void_p, ctypes.POINTER(XKeyboardState)]
   
    dpy = XOpenDisplay(None)
    keyboardState = XKeyboardState()
 
def runXGetKeyboardControl():
    global dpy, keyboardState, XGetKeyboardControl
    XGetKeyboardControl(dpy, ctypes.byref(keyboardState))
    return keyboardState.led_mask
 
#écrit dans le fichier de config    
def WriteConfig (Section, Key, Value):
    Config.set(Section,Key,Value)
    with open(ConfigFile, 'w') as myfile:
        Config.write(myfile)
 
#Notification (état du clavier) si pynotify != None
def notify(message,duration):
    if pynotify:
        n = pynotify.Notification('LockKeys', message)
        n.set_timeout(duration)
        n.set_icon_from_pixbuf(gtk.Label().render_icon(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_LARGE_TOOLBAR))
        n.show()
 
 
class Systray():
    def __init__(self):
        self.tray_object= gtk.StatusIcon()
        self.tray_object.connect("popup_menu", self.rightclick_menu)
        self.show_trayicon(1) ## fixed to one for now
        self._oldMask = -1 #int(runXGetKeyboardControl()) & 3
 
    def show_trayicon(self,value):
       self.tray_object.set_visible(True)
       return
 
    def property_modified(self):
        # utilse runXGetKeyboardControl() pour connaître l'état des touches capslock et numlock
        # 0 -> aucun, 1 -> capslock, 2-> numlock, 3 -> les 2
        mask=int(runXGetKeyboardControl()) & 3
        if mask != self._oldMask:
            if sound_status == True and self._oldMask != -1:
                os.system(Sound)
            notify(msg[mask],2000)
            self._oldMask = mask
            # Todo : essayer d'abord usr/share/lockkeys/ voire ~/.local/lockkeys
            icon_path = '/usr/local/share/lockkeys/' + str(mask) + '.png'
            self.tray_object.set_from_file(icon_path)
 
    # défini le menu clic droit sur l'icône
    def rightclick_menu(self, button, widget, event):
        menu = gtk.Menu()
        about_menu = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
        about_menu.connect('activate', self.about)
        exit_menu = gtk.ImageMenuItem(gtk.STOCK_CLOSE)
        exit_menu.connect('activate', self.close)
        menu.append(about_menu)
        menu.append(exit_menu)
        sep = gtk.SeparatorMenuItem()
        menu.append(sep)
        sound_menu = gtk.CheckMenuItem("Activer le son")
        sound_menu.set_active(sound_status)
        sound_menu.connect("activate", self.sound_toggle)
        menu.append(sound_menu)
        notify_menu = gtk.CheckMenuItem("Activer les notifications")
        notify_menu.set_active(notify_status)
        notify_menu.connect("activate", self.notify_toggle)
        menu.append(notify_menu)
        menu.show_all()
        menu.popup(None, None, None, 2, event)
       
    # activation / désactivation du son et enregistrement dans le fichier config
    def sound_toggle(self, widget):
        global sound_status
        if widget.active:
            sound_status=True
        else:
            sound_status=False
        WriteConfig ('helpers','sound',sound_status)
 
    # activation / désactivation des notifications et enregistrement dans le fichier config
    def notify_toggle(self, widget):
        global notify_status
        global pynotify
        if widget.active:
            notify_status=True
            pynotify=NotifyAvailable
        else:
            notify_status=False
            pynotify=None
        WriteConfig ('helpers','notification',notify_status)
 
    def close(self,button):
        sys.exit(0)
 
    def about(self, button):
        about_dg = gtk.AboutDialog()
        about_dg.set_name('Lockkeys')
        about_dg.set_version('0.2')
        about_dg.set_copyright('(C) 2014 Vincent Gay <vgay@vintherine.org>')
        about_dg.set_comments(("Simple icône dans la zone de notification pour indiquer l'état de CapsLock et NumLock"))
        about_dg.set_license('Ce script est distribuable sous licence gpl version 3 ou supérieure\nhttp://www.gnu.org/licenses/gpl-3.0.fr.html')
        about_dg.set_website('http://blog.vintherine.org')
        about_dg.run()
        about_dg.destroy()
 
class Manager:
    def __init__(self):
        self.listener = Systray()
       
    def __property_modified_handler(self):
        self.listener.property_modified()
 
    def update(self):
        self.__property_modified_handler()
        return True
 
def main():
    initXGetKeyboardControl()
    m = Manager()
    glib.timeout_add(200, m.update)
    gtk.main()
 
ConfigFile=os.path.expanduser('~/.config/lockkeys.cfg')
# aplay appartient au paquet alsa, est-ce la peine de vérifier ?
Sound = 'aplay /usr/local/share/lockkeys/ding.wav > /dev/null 2>1&'
sound_status=True
pynotify = None
Config = ConfigParser.ConfigParser()
msg=[]
msg.append('Capslock = off, Numlock = off')
msg.append('Capslock = on, Numlock = off')
msg.append('Capslock = off, Numlock = on')
msg.append('Capslock = on, Numlock = on')
 
#créer le fichier de config s'il n'existe pas
if os.path.isfile(ConfigFile) == False:
    ini = open(ConfigFile,'w')
    Config.add_section('helpers')
    Config.set('helpers','sound',True)
    Config.set('helpers','notification',False)
    Config.write(ini)
    ini.close()
 
# lire le fichier de configuration    
Config.read(ConfigFile)
try:
    sound_status = Config.getboolean("helpers", "sound")
except:
    WriteConfig ('helpers','sound',True)
try:
    notify_status = Config.getboolean("helpers", "notification")
except:
    WriteConfig ('helpers','notification',False)
    notify_status=False
if notify_status:
    pynotify=NotifyAvailable
   
main()

Si l'indentation n'est pas propre suite au copié collé merci de prendre le code sur pastebin

Dépendances :

  • python2
  • gtk2
  • pygtk
  • python2-notify (optionnel)
  • aplay (installé par alsa donc en principe présent)

Il me reste toutefois un point me chiffonne avec cette solution : le timeout qui gère l'appel à gtk. S'il est trop haut il y a un décalage entre l'appui sur les touches et le changement d'icône. S'il est trop bas la charge cpu, quoique supportable, excède 1%. Ce qui me paraît beaucoup pour une simple applet. Avec un compromis à 400 ms la charge ressort à 0,7% (Intel Pentium 2020M 2.4Ghz double cœur).

edit : problème résolu grâce aux conseils de Benjarobin. Le code ci-dessus a été modifié en conséquence.

Voilou, Il reste encore du boulot pour rendre l'application présentable mais c'est mon premier script python : ça s'arrose :-)

Chez moi ça fonctionne correctement mais si quelqu'un d'autre voulait bien tester ça serait sympa.