L'une des choses les plus difficiles pour les malvoyants est de localiser la souris en regardant l'écran.
Par conséquent, l'activation de locate mouse
ou locate pointer
donne une attention visuelle supplémentaire (cercle orange clignotant/vagues) après avoir appuyé sur CTRL. (difficile à attraper en capture d'écran: à gauche)
Xubuntu ne dispose pas de cet outil inestimable et Ubuntu est trop lourd pour le vieux matériel bicœur de 1 Go. Gnome l'a, Unity l'a, Compiz l'a, Mint l'a. Xubuntu/XFCE ne l'a pas.
Il ne s'agit pas d'une souris plus grosse, ça aide un peu. Une certaine attention est nécessaire.
Utiliser un thème à contraste élevé.
Si Lubuntu l’a, j’envisage de passer de Xu à Lu.
Dans Xubuntu , accédez à Gestionnaire de paramètres - Souris et pavé tactile - Thème . Là, vous pouvez agrandir la taille du curseur de la souris.
Vous pouvez également télécharger des thèmes supplémentaires pour votre souris, ce qui facilite sa visualisation. Voir xfce-look.org . Vous pouvez choisir le thème par vos goûts.
Je pense que celui-ci répond le mieux à vos besoins: DMZ avec fond jaune Multisized .
En ce qui concerne Lubuntu : Selon son site wiki, PCManFM et LxPanel n'utilisent pas le thème du curseur, vous devrez le modifier manuellement. Voir ici pour plus de détails: https://wiki.archlinux.org/index.php/LXDE#Cursors
Et encore une option: Installez MATE environment sur votre Ubuntu, il est léger sous 512 Mo RAM machine et a l'option flash de la souris que vous recherchez.
Sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
Sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
Sudo apt-get update && Sudo apt-get upgrade
Sudo apt-get install ubuntu-mate-core ubuntu-mate-desktop
Si vous voulez avoir un seul environnement, vous pouvez même télécharger et installer la version d'Ubuntu Mate en tant que système d'exploitation unique (mais notez que ce n'est pas officiellement pris en charge par Canonical).
https://ubuntu-mate.org/longterm/
Après avoir installé l'environnement MATE, vous pouvez définir le clignotement de la souris:
Voir le lien pour plus de détails: localiser rapidement le pointeur de la souris dans Linux Mint/Ubuntu | J'ai un PC .
Télécharger localiser-pointeur.c
wget https://Gist.githubusercontent.com/sneetsher/d6d35b6181aa70c27a85/raw/dd874ac535d511c675724fa30d9e12ba5b810c37/locate-pointer.c
Installer les conditions de construction
Sudo apt-get install build-essential libx11-dev libcairo2-dev
Construit le
gcc `pkg-config --cflags x11 cairo` locate-pointer.c -o locate-pointer `pkg-config --libs x11 cairo` -lm
Copiez-le sur le système bin/
Sudo cp locate-pointer /usr/local/bin/
Créer un raccourci pour le lancer
Activer Composite
Installer un gestionnaire composite
Sudo apt-get install xcompmgr
Ajouter une ligne pour cela dans
~/.config/lxsession/Lubuntu/autostart
xfwm4-tweaks-settings
→ Compositeur → Activer la composition d'affichagecompton
, cairo-compmgr
.Voici le code complet de locate-pointer.c
, juste au cas où le lien serait rompu.
/*
* locate-pointer.c
* Some windows manager missing option to locate mouse pointer as accessibity feature.
* To get transparent window need to activate `composite` service for wm.
* Coded in c / xlib so it can work in most wm's.
*
* Coded by: Abdellah Chelli
* Date: January 2015
*
* Original code by: Bernhard R. Fischer <[email protected]>
* Cairo graphics and X11/Xlib motion example.
* https://www.cypherpunk.at/2014/11/cairo-graphics-and-x11xlib/
*
* gcc `pkg-config --cflags x11 cairo` locate-pointer.c -o locate-pointer `pkg-config --libs x11 cairo` -lm
*/
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
#include <cairo.h>
#include <cairo-xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int cairo_check_event(cairo_surface_t *sfc, int block, double *mx, double *my)
{
char keybuf[8];
KeySym key;
XEvent e;
XSync(cairo_xlib_surface_get_display(sfc),False);
for (;;)
{
if (block || XPending(cairo_xlib_surface_get_display(sfc)))
XNextEvent(cairo_xlib_surface_get_display(sfc), &e);
else
return 0;
switch (e.type)
{
case ButtonPress:
return -e.xbutton.button;
case KeyPress:
XLookupString(&e.xkey, keybuf, sizeof(keybuf), &key, NULL);
return key;
case MotionNotify:
*mx = e.xmotion.x;
*my = e.xmotion.y;
default:
//fprintf(stderr, "Dropping unhandled XEevent.type = %d.\n", e.type);
return 0;
}
}
}
static void fullscreen(Display* dpy, Window win)
{
Atom atoms[2] = { XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False), None };
XChangeProperty(dpy, win, XInternAtom(dpy, "_NET_WM_STATE", False),
XA_ATOM, 32, PropModeReplace, (unsigned char*) atoms, 1);
}
cairo_surface_t *cairo_create_x11_surface(int *x, int *y, double* mx, double *my)
{
Display *dsp;
Drawable da;
Screen *scr;
int screen;
cairo_surface_t *sfc;
XVisualInfo vinfo;
XSetWindowAttributes win_attr;
int mousex, mousey;
if ((dsp = XOpenDisplay(NULL)) == NULL)
exit(1);
//XSynchronize(dsp,True);
screen = DefaultScreen(dsp);
scr = DefaultScreenOfDisplay(dsp);
XMatchVisualInfo(dsp, screen, 32, TrueColor, &vinfo);
win_attr.colormap = XCreateColormap(dsp, DefaultRootWindow(dsp), vinfo.visual, AllocNone);
win_attr.background_pixel = 0;
win_attr.border_pixel = 0;
*x = WidthOfScreen(scr), *y = HeightOfScreen(scr);
da = XCreateWindow(dsp, DefaultRootWindow(dsp),
0, 0, *x, *y, 0, vinfo.depth, InputOutput,
vinfo.visual,
CWColormap | CWBorderPixel | CWBackPixel, &win_attr);
fullscreen (dsp, da);
XSelectInput(dsp, da, PointerMotionMask | ButtonPressMask | KeyPressMask);
XMapWindow(dsp, da);
sfc = cairo_xlib_surface_create(dsp, da, vinfo.visual, *x, *y);
cairo_xlib_surface_set_size(sfc, *x, *y);
Window rw=DefaultRootWindow(dsp);
Window cw=da;
int rx, ry;
unsigned int mr;
XQueryPointer(dsp, da, &rw, &cw, &rx , &ry, &mousex, &mousey, &mr);
*mx = mousex;
*my = mousey;
return sfc;
}
void cairo_close_x11_surface(cairo_surface_t *sfc)
{
Display *dsp = cairo_xlib_surface_get_display(sfc);
cairo_surface_destroy(sfc);
XCloseDisplay(dsp);
}
int main(int argc, char **argv)
{
cairo_surface_t *sfc;
cairo_t *ctx;
int x, y;
struct timespec ts = {0, 5000000};
double mx, my;
int c = 0;
double dr0, dr1, dr2, a;
int running;
x = y = 0;
sfc = cairo_create_x11_surface(&x, &y, &mx, &my);
ctx = cairo_create(sfc);
for (running = 1; running;)
{
dr0 = 20 * sin(c*M_PI/180.0);
dr1 = 20 * sin((c+45)*M_PI/180.0);
dr2 = 20 * sin((c+90)*M_PI/180.0);
a = c*M_PI/720.0;
cairo_save (ctx);
//cairo_set_source_rgba (ctx, 0, 0, 0, 1);
//cairo_set_operator (ctx, CAIRO_OPERATOR_SOURCE);
cairo_set_operator (ctx, CAIRO_OPERATOR_CLEAR);
cairo_Paint (ctx);
cairo_restore (ctx);
cairo_Push_group(ctx);
cairo_translate(ctx, mx, my);
cairo_rotate(ctx,a);
cairo_translate(ctx, -mx, -my);
cairo_set_source_rgba(ctx, 0, 0, 0, 0.1);
cairo_Paint(ctx);
cairo_set_line_join (ctx, CAIRO_LINE_JOIN_MITER);
cairo_set_source_rgba(ctx, 1, 0, 0, 1);
cairo_set_line_width (ctx, 30);
cairo_move_to (ctx, mx-50, my-100-dr0);
cairo_rel_line_to (ctx, 50, 30);
cairo_rel_line_to (ctx, 50, -30);
cairo_move_to (ctx, mx+100+dr0, my-50);
cairo_rel_line_to (ctx, -30, 50);
cairo_rel_line_to (ctx, 30, 50);
cairo_move_to (ctx, mx+50, my+100+dr0);
cairo_rel_line_to (ctx, -50, -30);
cairo_rel_line_to (ctx, -50, 30);
cairo_move_to (ctx, mx-100-dr0, my+50);
cairo_rel_line_to (ctx, 30, -50);
cairo_rel_line_to (ctx, -30, -50);
cairo_stroke(ctx);
cairo_set_source_rgba(ctx, 1, 0, 0, 0.5);
cairo_move_to (ctx, mx-50, my-150-dr1);
cairo_rel_line_to (ctx, 50, 30);
cairo_rel_line_to (ctx, 50, -30);
cairo_move_to (ctx, mx+150+dr1, my-50);
cairo_rel_line_to (ctx, -30, 50);
cairo_rel_line_to (ctx, 30, 50);
cairo_move_to (ctx, mx+50, my+150+dr1);
cairo_rel_line_to (ctx, -50, -30);
cairo_rel_line_to (ctx, -50, 30);
cairo_move_to (ctx, mx-150-dr1, my+50);
cairo_rel_line_to (ctx, 30, -50);
cairo_rel_line_to (ctx, -30, -50);
cairo_stroke(ctx);
cairo_set_source_rgba(ctx, 1, 0, 0, 0.3);
cairo_move_to (ctx, mx-50, my-200-dr2);
cairo_rel_line_to (ctx, 50, 30);
cairo_rel_line_to (ctx, 50, -30);
cairo_move_to (ctx, mx+200+dr2, my-50);
cairo_rel_line_to (ctx, -30, 50);
cairo_rel_line_to (ctx, 30, 50);
cairo_move_to (ctx, mx+50, my+200+dr2);
cairo_rel_line_to (ctx, -50, -30);
cairo_rel_line_to (ctx, -50, 30);
cairo_move_to (ctx, mx-200-dr2, my+50);
cairo_rel_line_to (ctx, 30, -50);
cairo_rel_line_to (ctx, -30, -50);
cairo_stroke(ctx);
cairo_pop_group_to_source(ctx);
cairo_Paint(ctx);
cairo_surface_flush(sfc);
switch (cairo_check_event(sfc, 0, &mx, &my))
{
case 0xff1b: // Esc
case -1: // left mouse button
running = 0;
break;
}
c++;
nanosleep(&ts, NULL);
}
cairo_destroy(ctx);
cairo_close_x11_surface(sfc);
return 0;
}
Il existe un truc simple et sale en utilisant "yad", qui est un outil pour générer des fenêtres relativement simples. (C'est une fourchette de zenity)
Donc, si vous créez un script sur votre, disons $ HOME/bin, avec le contenu suivant:
yad --picture --width=68 --height=68 --no-buttons --size=fit --filename=ANY_PICTURE_YOU_LIKE --timeout=1 --mouse --undecorated --on-top > /dev/null 2>&1
La valeur de la largeur et de la hauteur doit être supérieure de 4 pixels à la taille réelle de l'image.
Il superposera l'image pendant une seconde, à la position de la souris, si l'image est un gif animé, vous obtenez quelque chose d'assez similaire à ce que vous demandez.
Il vous suffit de mapper un raccourci clavier vers votre nouvelle application.
Il y a quelques belles animations sur preloader.net (je n'ai pas vérifié les problèmes de copyright)
J'espère que ça aide.