Nous avons installé 10 autres distributions de Linux, et testé notre procédure d'installation sur chacune d'elles, ce qui porte à 16 le nombre de systèmes Linux différents sur lesquels l'installation a été validée. En plus des 6 validées avant-hier (pour PCLinuxOS 64 bits, un test spécifique dans l'installateur a permis de tout installer proprement), nous avons ajouté OpenSuse 13.2 32 bits (gnome), Mageia 4.1 32 bits (gnome), Ubuntu 14.04/14.10 en 32 et 64 bits, Mint 17.1 Cinnamon en 32 et 64 bits, Debian 7.8.0 en 32 et 64 bits, et enfin Puppy / Slacko 5.7 32 bits et Puppy / Lighthouse 5.15 64 bits. Seuls Gentoo et Arch ont eu raison de notre patience, une installation de ces systèmes avec un environnement graphique relevant de l'exploit. Maintenant que l'installateur est plutôt bien au point, nous avons commencé les corrections du programme lui-même : Correction d'une erreur dans l'export MusicXML pouvant conduire à des crashs ou instabilités (toutes plateformes) Correction d'une erreur dans la détermination de l'espace libre sur le disque lorsque celui-ci a plus de 2 To de libre (toutes plateformes) Correction d'un problème d'affichage des accentués dans la boîte de crash sous Linux Nous continuons à traiter les retours des alpha-testeurs Linux, dans l'ordre de réception. Bon week-end ! |
|
|
by Olivier Guillion | | | |
|
L'installation manuelle d'Harmony Assistant sur Linux s'avérant un peu trop compliquée, nous tentons de proposer un système d'installation automatique multi-architecture (32 ou 64 bits) et multi-distribution. Voici à quoi nous en sommes arrivés, après avoir bûché et trébuché sur le langage de script shell Linux : - L'archive installable serait un seul fichier .run ou .sh (donc sous la forme d'un script shell) - Après téléchargement, elle devrait être copiée par l'utilisateur dans un dossier facilement accessible (p.ex. le dossier "Documents") - Par défaut, les fichiers téléchargés n'ont pas la permission "Exécuter". Cela signifie qu'il n'est pas possible de lancer par double-clic un fichier qui vient d'être téléchargé, que ce soit un exécutable (ELF), un script shell (.sh ou .run), un script perl (.pl), ou tout autre format qui correspond à un programme. Ceci est apparemment mis en place pour des raisons de "sécurité" (vous savez, le truc qui vous pourrit la vie "pour votre bien") - Il faut donc que l'utilisateur force la permission "exécuter" du fichier .run qu'il a téléchargé. Ceci peut se faire généralement par "clic droit > Propriétés >Permissions" ou sous terminal par sudo (ou su) chmod 777 <nom du fichier.run> - Ensuite, l'utilisateur devrait pouvoir double-cliquer sur le fichier pour le lancer. Mais ce serait trop simple, ceci n'est pas autorisé avec certaines distributions (fedora par exemple), qui à la place le charge dans un éditeur de texte, toujours pour des raisons de "sécutité" (pour votre bien et toussa) Sur ces systèmes, il faut alors ouvrir un terminal, se positionner dans "Documents", et entrer le nom du fichier .run pour le lancer Et alors là, roulement de tambours, on obtient cette magnifique interface digne des plus fameux programmes des années 70 : Mais les scripts qui tournent derrière sont plus compliqués que ça en a l'air, car ils doivent mettre en place tout ce qui est nécessaire pour qu'Harmony Assistant puisse fonctionner correctement, et en particulier les bibliothèques 32 bits. Nous sommes en train de tester tout ça sur un maximum de systèmes Linux. En voici la liste jusqu'ici : PCLinuxOS 32 bits Aucun problème rencontré PCLinuxOS 64 bits Impossible d'installer les bibliothèques 32 bits nécessaires. Si quelqu'un connait un bon "repository", qu'il se signale. OpenSuse 64 bits Aucun problème rencontré Fedora 32 bits Aucun problème rencontré (pas possible de lancer l'archive par double-clic, on doit lancer un terminal) Fedora 64 bits Aucun problème rencontré (pas possible de lancer l'archive par double-clic, on doit lancer un terminal) Mageia 64 bits Fonctionne, mais le système est assez pourri, empêchant l'installation de bibliothèques lorsqu'un process de mise à jour des repository (urpmi.update) tourne en tâche de fond et on continue, il y en reste beaucoup... |
|
|
by Olivier Guillion | | | |
|
Une nouvelle version alpha pour Linux (9.6.4 alpha-4) a été mise à disposition. Elle intègre toutes les améliorations décrites sur ce blog, et devrait donc être plus stable et plus fonctionnelle. En attendant les retours des alpha-testeurs, nous essayons d'automatiser la procédure d'installation en peaufinant un ensemble de scripts shell. L'utilisation d'un système de paquetage nous paraît assez compromise étant donné le manque d'uniformisation de ces derniers. Nous voudrions ne conserver qu'une seule archive de l'application, qui s'installe sur toutes les distributions, au lieu des 3 versions (.deb 32, .deb 64, .rpm) que nous avions précédemment et qui nous apportaient principalement des ennuis plutôt que des avantages. |
|
|
by Olivier Guillion | | | |
|
Une jolie petite boîte a été créée sur Acam Winter. Elle permettra à nos applications de proposer un sélecteur de couleur standard, sur tous les systèmes. En voici un aperçu : Elle présente la palette de couleur au format HSL pour Hue (teinte) - Saturation - Luminance. En haut de la boîte, la double flèche permet de choisir la représentation : Teinte et saturation dans le grand cadre, luminance dans la barre de droite Teinte et luminance dans le grand cadre, saturation dans la barre de droite Saturation et luminance dans le grand cadre, teinte dans la barre de droite Au-dessous, des palettes de couleur permettent de choisir rapidement une couleur : - Soit dans une palette spécifique à l'application - Soit dans une liste des couleurs précédemment sélectionnées - Soit dans une palette de 256 couleurs - Soit dans une palette de 256 gris. Enfin, il est possible d'entrer les valeurs numériques, en RVB, HSL ou en code couleur HTML. Un cadre de prévisualisation, en bas à droite, permet de comparer la couleur actuellement choisie avec la précédente. Cette boîte pourra être testée dans la prochaine version Alpha pour Linux, dans le choix de la couleur du thème graphique. |
|
|
by Olivier Guillion | | | |
|
Les points suivants ont été corrigés ou améliorés, sur Acam Winter Linux: Une icône réseau est apparue dans la barre de raccourcis du sélecteur de fichier. Elle permet d'accéder aux dossiers partagés qui ont été montés dans le système. Cependant, l'emplacement de ces dossiers partagés semble changer selon la distribution (et parfois sa version). Il se peut donc que cela ne fonctionne pas partout. La case de fermeture dans la barre de titre du sélecteur de fichiers est maintenant opérationnelle Les effets d'apparition/disparition progrssives des fenêtres (glissement/fondu, etc) ont été remis en place. Cependant cela semble assez lent et nécessiterait un calibrage, mais peut-être est-ce dû au fait que nous faisons tourner Linux sur des machines virtuelles? Les options de la boîte d'impression sont maintenant sélectionnables La boîte de sélection de police a été mise en place, et est totalement fonctionnelle. Il nous faut maintenant la tester en profondeur Il ne nous reste que très peu de points à corriger/améliorer. Une nouvelle version alpha devrait donc arriver bientôt, même si nous n'avons eu que très peu de retours sur celle-ci. |
|
|
by Olivier Guillion | | | |
|
Les fonctions X11 de gestion de la forme du pointeur souris nous ont posé pas mal de problèmes. Notre objectif était le suivant : A partir d'une image de dimension donnée, chaque pixel de l'image étant connu et constitué de 32 bits (8 bits de rouge, 8 bits de vert, 8 bits de bleu et 8 bits de transparence), nous voulions obtenir un pointeur souris correspondant. Très rapidement, on s'aperçoit qu'on quitte le champ de la documentation pour entrer dans celui de l'expérimentation. Les pointeurs monochromes La fonction XCreatePixmapCursor notamment, reçoit en entrée un Pixmap, qui théoriquement peut être monochrome ou RVB. Mais pour une raison indéterminée, seuls les Pixmap monochromes sont acceptés par cette fonction. Cette fonction reçoit donc une image bitmap (1 bit par pixel) correspondant au masque du pointeur, ainsi qu'une autre image bitmap correspondant au dessin du pointeur. Les deux couleurs (fond et dessin) du deuxième bitmap étant réglables, chaque pixel du pointeur peut donc soit être transparent, soit de la couleur de fond, soit de la couleur de tracé. Ceci permet de dessiner des pointeurs en deux couleurs. Pour simplifier, nous passerons sur les fonctions qui réduisent le nombre de couleurs de dessin à deux et créent une zone de données monochromes (1 bit par pixel) pour le masque (dataMask) et pour le dessin (dataImg). Les opérations sont donc les suivantes, avec width et height étant les dimensions en pixel de l'image - et du masque - source : Code://Création du "pixmap" (en fait, bitmap) du masque Pixmap pixmapMask=XCreateBitmapFromData(display,window,dataMask,width,height); //Création du "pixmap" (en fait, bitmap) de l'image Pixmap pixmapImg = XCreateBitmapFromData(display,window,dataImg,img->width,img->height); // Creation du XCursor // foreground et background sont les couleurs de dessin et de fond (XColor) calculées précédemment lors de la réduction de profondeur de l'image // hotX et hotY sont la position du "point chaud" du pointeur, c'est-à-dire l'endroit dans le dessin qui correspond à la position de clic XCursor cursor = XCreatePixmapCursor(display,pixmapImg,pixmapMask,&foreground,&background ,hotX,hotY); // Liberations XFreePixmap(display, pixmapImg); free(dataImg); XFreePixmap(display,pixmapMask); free(dataMask); |
| On peur ensuite utiliser "cursor" avec Code:XDefineCursor(display, window, cursor); |
| Les pointeurs couleur On aurait pu se dire qu'il suffisait aux développeurs de X11 de faire en sorte que la fonction XCreatePixmapCursor accepte, comme son nom semble l'indiquer, des Pixmap (couleur) au lieu de Bitmap (monochrome) pour instantanément permettre les pointeurs en couleur, mais ç'eût été trop simple. Il faut donc installer une autre bibliothèque, Xrender, qui gère également les polices de caractères antialiasées, les tracés de forme graphiques et la température des frites pour que cela puisse fonctionner. Cette bibliothèque est extrêmement mal documentée, et les exemples rares. Après plusieurs journées de recherche, voici à quoi nous en sommes arrivé. Notons que pour obtenir un object utilisable pour un pointeur X11 (XCursor), on doit passer par un empilage de concepts inutiles et redondants tels que Picture, Image, Pixmap ou GC. Solution la plus simple: Dans "data", nous avons déjà les données graphiques au format RGBA ATTENTION, c'est là que le bât blesse ! Ce n'est pas expliqué, mais les données graphiques doivent être PRÉMULTIPLIÉES ! Cela signifie que la couleur d'image des parties transparentes du pointeur doivent impérativement être noires (RVB 0,0,0). A défaut, on obtient un carré blanc autour du pointeur. Code:// Cree le pixmap 32 bits Pixmap pixmap=XCreatePixmap(display,window,width,height,32); // Crée le graphic context (gc) pour pouvoir y tracer dessus gc = XCreateGC(display,pixmap,0,NULL); // Cree l'XImage contenant les donnees RGBA du curseur XImage image=XCreateImage(display,DefaultVisual(display,DefaultScreen(display)) ,32,ZPixmap,0,data,width,height,32,width*4); // Met l'image dans le pixmap XPutImage(display, pixmap, gc, image, 0, 0, 0, 0,width,height); // Convertit le pixmap en picture XRenderPictFormat *fmt=XRenderFindStandardFormat(display,PictStandardARGB32); Picture pict = XRenderCreatePicture(display,pixmap, fmt, 0, NULL); // Cree le pointeur XCursor = XRenderCreateCursor(display, pict, hotX, hotY); // Liberations XRenderFreePicture(display,pict); XFreeGC(display,gc); XFreePixmap(display,pixmap); image->data=0; XDestroyImage(image); free(data); |
| Autre solution: Elle consiste a créer un masque monochrome comme dans le premier paragraphe converti en "Picture", ainsi qu'un Pixmap 24 bits (RVB, sans masque). L'expérience montre que cette image 24 bits doit tout de même être stockée avec 32 bits par pixel (8 bits ne servent à rien) pour des raisons plus qu'obscures. Cela nous a également fait perdre une bonne demi-journée. Ensuite, on construit une "Image" en spécifiant que les données graphiques viennent du Pixmap, et le masque de la Picture monochrome, par: Code:XRenderPictureAttributes attr; attr.alpha_map = pictMask; Picture pict = XRenderCreatePicture(display,pixmapImg, fmt, CPAlphaMap, &attr); |
| Puis cette "picture" est utilisée pour créer le pointeur. Mais ceci est seulement de la théorie. En pratique, cela ne fonctionne pas toujours. Même avec une même version de Xrender (1.3.0), cela va fonctionner sur certains systèmes, et pas d'autres. Sur certains, la transparence ne fonctionne pas et le pointeur apparaît dans un cadre blanc. Il est très probable qu'il s'agisse d'un bug quelque part dans la bibliothèque. Un masque monochrome devrait être suffisant pour gérer la transparence, quelles que soient les données graphiques. Mais il est probable que la bibliothèque considère que les pixels de l'image qui se trouvent dans une zone transparente du pointeur doivent être noires. Nous n'avons cependant pas testé cela, c'est juste une supposition qui se base sur les résultats de la méthode précédente. Voila, c'est tout pour aujourd'hui. Bon week-end ! |
|
|
by Olivier Guillion | | | |
|
Encore un lot de corrections sur Acam-Winter Linux: Saisie d'accentués dans les noms de fichiers (boîte de sélection) Gestion de l'affichage des caractères Unicode grecs, cyrilliques, hébreux, arabes, etc avec des polices ne les possédant pas Correction d'un problème de téléchargement de fichiers depuis Harmony. Cela affecte et simplifie la version Windows également Dans le sélecteur de fichier, les alertes et la saisie de nom de dossier apparaissaient derrière la boîte de sélection L'ouverture d'un script par "Scripts > Ouvrir ..." plantait L'entrée de caractères spéciaux avec Alt+chiffre ne fonctionnait pas. Maintenant on peut utiliser Alt+<décimal unicode> ou Alt+0+<hexadécimal unicode> |
|
|
by Olivier Guillion | | | |
|
Nous corrigeons les problèmes signalés, ou déjà connus, de la version Linux, afin d'obtenir rapidement une version assez stable pour contenter les utilisateurs qui rencontrent des problèmes en attendant la version publique. Nous avons donc corrigé : Un problème de rendu sonore (notes qui vibrent et crachotent) en base GMSE L'activation de l'instance de l'application déjà en fonction lorsqu'on tente de démarrer le programme deux fois Les droits sur les fichiers et dossiers de préférences sont maintenant automatiquement fixés. Sinon, un lancement de l'application en mode "sudo" lui faisait créer des fichiers impossibles à modifier ultérieurement La hauteur de la barre de menu était prise en compte deux fois dans le calcul de magnétisme des palettes La boîte signalant que la session précédente n'avait pas été terminée convenablement s'affichait à tort Une erreur de mémoire dans la gestion des chaînes Unicode pouvait faire planter l'application au lancement. Ceci pouvait également impacter la version Windows |
|
|
by Olivier Guillion | | | |
|
Ce coup-ci, c'est enfin parti. Nous avons installé pas moins de 7 distributions Linux différentes, puis rédigé les instructions d'installation de la version alpha d'Harmony Assistant. Celle-ci devrait donc être disponible sous quelques minutes et nous permettra de savoir si Acam-Winter fonctionne sur les différentes distributions du système. Elle sera annoncée sur le forum, ainsi que par e-mail aux utilisateurs qui en ont fait la demande. Un fichier Lisez-moi au format HTML est fourni dans l'archive, et doit être lu et appliqué pour installer correctement cette version. N'oublions pas qu'on est sur Linux, ou la ligne de commande et le clavier remplacent (trop) souvent les icônes et les double-clics. |
|
|
by Olivier Guillion | | | |
|
La version alpha pour Linux approche à grand pas. Une version du programme suffisamment fonctionnelle a été générée. Une archive installable a été créée, et nous sommes en train de la tester sur un maximum de distributions. Pour l'instant, elle s'installe sur Ubuntu 32 bits 12.04 et Mint 64 bits Cinnamon 17.1. Il y a quelques problèmes dans la recopie des thèmes graphiques, mais qui sont en passe d'être résolus. Sur Ubuntu 14.04 64 bits, l'application ne fonctionne que si elle est lancée en mode super-utilisateur, par un sudo depuis la console. Apparemment, un problème de permission sur certains fichiers. Dès que nous aurons quelque chose qui fonctionne sur suffisamment de distributions, nous le mettrons à disposition des utilisateurs désireux de le tester. Cela devrait être fait sous quelques jours. |
|
|
by Olivier Guillion | | | |
|
|