LINUX.ORG.RU

не работает скрипт

 , ,


0

1

драсть!

чтот не выполняется как задумано - через горячие клавиши в openbox.

В терминале выполняется, через dmenu выполняется… как надо.

и самое главное: на двух других ноутбуках всё работает.

по задумке должно включать и выключать тачпад:

id=11;
x=$(xinput list-props $id|grep -ci "enabled.*1$");
if ((x=="0"));
	then xinput  enable $id;
	else xinput disable $id;
fi;

ID - тачпада

если зачем то нужен кусок текста из rc.xml:

  <keybind key="W-u">
    <action name="Execute">
      <command>lcktch</command>
    </action>
  </keybind>

эта же команда - lcktch - нормально выполняется в терминале и через dmenu



Последнее исправление: TPPPbIHDELj (всего исправлений: 1)

Можно вопрос?
Зачем ты для этого делаешь скрипт, если обычно для отключения тачпада есть сочетание с Fn клавишей для этого? Или речь не о встроенном в ноутбук тачпаде, а о чем-то другом?

xmikex ★★★★
()
Ответ на: комментарий от xmikex

есть сочетание с Fn клавишей

два ноута HP, с разницей в возрасте пять лет, ни на одном нет такого сочетания. На всех остальных есть, да.

ну и WIN+U удобнее чем fn+F7, кмк =)

anonymous
()
Ответ на: комментарий от xmikex

А ты перезапускал

само собой.

Скрипт (по хоткею) либо включает, либо выключает тачпад. Но не переключает между состояниями. Нипанимат, почему так происходит.

в терминале переключает. Думал может зависит от юзера запустившего скрипт, но он бы тогда и на половину не работал бы…

anonymous
()
Ответ на: комментарий от anonymous

Попробуй что-то другое забайндить на W-u и посмотри работает ли все без проблем, сравни переменные окружения интерактивной оболочки с теми, или прописаны в настройках dmenu с теми, которые инициализированы без оболочки и dmenu.

xmikex ★★★★
()

Может это сочетание клавиш уже чем-то занято? Лорчую совет попробовать другую комбинацию.

ololoid ★★★★
()
Ответ на: комментарий от ololoid

чем-то занято?

не, на других кнопках аналогично не работает.

TPPPbIHDELj
() автор топика
Ответ на: комментарий от xmikex

сравни переменные окружения интерактивной оболочки с теми, или прописаны в настройках dmenu с теми, которые инициализированы без оболочки и dmenu

хм, как это сделать?

Попробуй что-то другое забайндить на W-u

всё ок. и в самом скрипте всё срабатывает как надо, кроме if\then\else

вот полный текст:

#/bin/bash

id=$(xinput|sed -ne '/Synaptic/!d;s/.*id=\([^\[]*\).*/\1/p');
x=$(xinput list-props $id|grep -ci "enabled.*1$");

if ((x=="0"));
	then xinput enable $id; 
	else xinput disable $id;
fi;

xdotool mousemove 1366 768
say "$x"_"$id"& 
#say == aosd_cat

#exit 0;

TPPPbIHDELj
() автор топика

попробуй вывести все промежуточные значения в какой нибудь файл через echo "" > /file, подебажить короче

TDrive ★★★★★
()

Не пробовал искать способ узнать текущее состояние устройства? Вот ключи из мануала xinput.

--query-state device
    Query the device state. 
--list-props device [device [...]]
    Lists properties that can be set for the given device(s). 
--enable device
    Enable the device. This call is equivalent to xinput --set-prop device "Device Enabled" 1 
--disable device
    Disable the device. This call is equivalent to xinput --set-prop device "Device Enabled" 0
Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Он же пишет все работает нормально, когда в терминале запускает. Запуск в терминале может отличаться наличием каких-то переменных или алиасов, которых нет, при запуске через горячие клавиши.

xmikex ★★★★
()
Ответ на: комментарий от xmikex

может отличаться наличием каких-то переменных

Обычно PATH не хватает.

Radjah ★★★★★
()
Ответ на: комментарий от xmikex

Он может в терминале запускать с указанием шелла, вроде sh ./script.sh, а в конфиге опенбокса указание на шелл нет, а шебанг в скрипте написан с ошибкой.

Padomay
()
Ответ на: комментарий от Padomay

Но тогда бы вообще ничего не выполнялось, а у него какой-то эффект был, по его словам. Да и в dmenu он писал, что работает. А что происходит при неправильном shebang? По идее вообще не запускается или может выполниться вместо bash другой Шелл?

xmikex ★★★★
()
Ответ на: комментарий от xmikex

Запускается sh. Если он не линк на bash или еще какой шелл, то он в его случае захлебнется, потому что синтаксис не посиксовый.

Padomay
()

У тебя шебанг неправильно написан.

#!/usr/bin/env bash

ок, поправил.

подебажить короче

say "$x"_"$id"& 

вот это вот выводит на экран все две переменные.

вроде sh ./script.sh

да, .sh не запускаются там. Поэтому линк в /home/user/bin и всё работало на других буках.

Из dmenu lcktch запускается и работает,

из терминала lcktch запускается и работает.

По хоткею lcktch запускается, курсор переводится в правый нижний угол, на экран выводятся ID и $x. Но не срабатывает if\then\else если строки поменять местами он выключить тачпад, если еще раз поменять то включит. Но не переключает между состояниями.

Обычно PATH не хватает.

где, что посмотреть?

поэтому и обрезал скрипт в посте,

потому что: "не правильный sed, не правильный шебанг,

точку с запятой не своим почерком поставил…" ¯_(ツ)_/¯

TPPPbIHDELj
() автор топика
Ответ на: комментарий от Radjah

xinput –enable device

таки да Оо поменял enable на –enable и заработало.

Но тогда почему раньше работало без – и почему сейчас не работало без – ?

и почему из терминала и dmenu работало без –

TPPPbIHDELj
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.