
Instalé Fedora (3.17.2-200.fc20.x86_64) en mi nueva computadora portátil (Lenovo Yoga Pad) y quería agregar este script para que se active cada vez que volteo la pantalla. El script desencadenado con el evento está ubicado /etc/acpi/actions
y es propiedad de root.
El problema: cuando volteé la pantalla no pasó nada excepto SELinux diciéndome diferentes advertencias (como acceso denegado, algunas cosas sobre ioctl y read, etc. que no puedo recordar correctamente). De todos modos, me dijo que ejecutara grep tablet_mode.ori /var/log/audit/audit.log | audit2allow -M mypol
y semodule -i mypol.pp
solucionara el problema. Hice eso, pero después de reiniciar no pasó nada cuando volteé la pantalla. Ahora, eliminé los archivos mypol en mi directorio de inicio porque pensé que podría ver la salida de SELinux nuevamente.
Estoy atascado ahora y tengo miedo de abrir agujeros de seguridad en mi SELinux, ¿cuál es la solución adecuada para esto? Lo curioso es que cuando reinicio acpid con sudo killall acpid && sudo acpid
el evento se activa y funciona, lo único que no funciona en este caso es el comando gsettings, no muestra ningún error, pero no cambia la configuración de mi usuario (toor).
Este es el script que se activa con el evento:
#!/bin/bash
su toor -c "/home/toor/backup/scripts/toggle_keyboard.sh"
touchpad=$(xinput list-props "SynPS/2 Synaptics TouchPad" | grep "Device Enabled" | awk -F ":" '{print $2}')
if [ $touchpad -eq 1 ]; then
/home/toor/backup/scripts/rotate.sh inverted
xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 0
else
/home/toor/backup/scripts/rotate.sh normal
xinput --set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" 1
fi
Este es el rotar.sh:
#!/bin/bash
current_orientation(){
xrandr|grep " connected" |awk '{print $4}'
}
rotate_left(){
xrandr -o left
xsetwacom set "Wacom ISDv4 EC Pen stylus" rotate ccw
xsetwacom set "Wacom ISDv4 EC Pen eraser" rotate ccw
xinput set-prop "ELAN Touchscreen" "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1
}
rotate_right(){
xrandr -o right
xsetwacom set "Wacom ISDv4 EC Pen stylus" rotate cw
xsetwacom set "Wacom ISDv4 EC Pen eraser" rotate cw
xinput set-prop "ELAN Touchscreen" "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1
}
rotate_inverted(){
xrandr -o inverted
xsetwacom set "Wacom ISDv4 EC Pen stylus" rotate half
xsetwacom set "Wacom ISDv4 EC Pen eraser" rotate half
xinput set-prop "ELAN Touchscreen" "Coordinate Transformation Matrix" -1 0 1 0 -1 1 0 0 1
}
rotate_normal(){
xrandr -o normal
xsetwacom set "Wacom ISDv4 EC Pen stylus" rotate none
xsetwacom set "Wacom ISDv4 EC Pen eraser" rotate none
xinput set-prop "ELAN Touchscreen" "Coordinate Transformation Matrix" 1 0 0 0 1 0 0 0 1
}
orientation=$(current_orientation)
# if the orientation argument was given to this script, sets orientation variable
# according to the way we want to rotate in next loop.
if [ -n "$1" ]; then
if [ "$1" == "normal" ]; then
orientation="right"
fi
if [ "$1" == "left" ]; then
orientation="(normal"
fi
if [ "$1" == "right" ]; then
orientation="inverted"
fi
if [ "$1" == "inverted" ]; then
orientation="left"
fi
fi
# turns 90° counter-clockwise
case $orientation in
"(normal" )
rotate_left
;;
"inverted" )
rotate_right
;;
"right" )
rotate_normal
;;
"left" )
rotate_inverted
;;
* )
echo "it fucked up"
exit 1
;;
esac
exit 0
y este sería el toggle_keyboard.sh
#!/bin/bash
# toggle onboard keyboard
obk=$(gsettings get org.gnome.desktop.a11y.applications screen-keyboard-enabled)
if [ $obk == 'false' ]; then
gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true
else
gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled false
fi
Ojalá puedas ayudarme con esto, agradezco cualquier ayuda.