LINUX.ORG.RU
ФорумJob

Написать небольшой скрипт для патчинга (универсальная раскладка).

 ,


0

2

Нужно написать скрипт для патчинга системных файлов. Оплачу 200₽ ( у кого не видятся деревянные, качайте Симболу). Размещение файлов: /usr/share/X11/xkb/rules : ⟨base.lst & evdev.lst⟩, ⟨base.xml & evdev.xml⟩ /usr/share/X11/xkb/symbols/ : ru,es,ua,by В листах — вставить содержимое файла после определённой строки В xml — перед строкой

В русской, английской, украинской, беларусской — после последней встречающейся строки с символами «};»

А также, по возможности, включить возможность назначать правый альт клавишей третьего уровня.

Проект бесплатный (для Линукса). Все файлы готовы, но скрипты писать не умею

О том, как выглядит раскладка, можно здесь узнать http://dreamject.org/dreamjects/unilayouts/

Задача проекта — ввод нужных в Различных сферах символов: доступность любого английского спец. символа в кириллической раскладке, математические, типографские и прочие символы.

Контактные данные: da@dreamject.org | skype: danillatech | vk.com/dreamject



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

скрипт для патчинга системных файлов

нельзя так делать, во-первых это нарушает пакетную систему (чексуммы, вот это всё), во-вторых, превращает систему в слаку, единственный более-менее нормальный способ это сделать - делать свою версию пакета xkb-data (не в deb-based возможно называется как-то по-своему).

А также, по возможности, включить возможность назначать правый альт клавишей третьего уровня.

 $grep lv3 /usr/share/X11/xkb/rules/base.lst | grep ralt                                                          

  lv3:ralt_switch      Right Alt
  lv3:ralt_switch_multikey Right Alt, Shift+Right Alt key is Compose
  lv3:ralt_alt         Right Alt key never chooses 3rd level
lazyklimm ★★★★★
()
Последнее исправление: lazyklimm (всего исправлений: 1)

Нужно написать скрипт для патчинга системных файлов

Легко. Только можно конкретнее описать, что скрипт должен делать? Из описания не очень понятно.

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

нельзя так делать, во-первых это нарушает пакетную систему (чексуммы, вот это всё), во-вторых, превращает систему в слаку

Технически всё можно. Если человек хочет, то почему бы и нет?

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

а, да, ещё нюанс, изменения затрутся обновлением пакета

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

Ты предлагаешь каждый раз пересобирать соответствующий пакет, который будет храниться в репе на сайте автора?

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

не вижу большой проблемы пересобрать пакет, от дефолтного он будет отличаться только файлом патча (xkb-data — вещь меняющаяся достаточно редко)

Интересно, кстати, что обо всём этом думает svu?

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

Есть ещё xml-ки В каталоге /xkb то, что должно получиться (пока раскладка «устанавливается» копированием с перезаписью)

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

Рассказывай)) создать пакет, репу, как быть с обновлениями и приоритетами? Расскажи, как оно по уму, то? :)

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

как быть с обновлениями и приоритетами? Расскажи, как оно по уму, то? :)

я только про дебиан/убунту могу рассказать. Подключаешь репоз, делаешь апт-пиннинг (соответствующий файл настроек для простоты аффтару можно даже в пакет-заместитель положить, даже вместе с файлом репозитория), профит.

Т.е. для пользователя всё можно сделать элементарным - на уровне тыкнуть в файл пакета, ввести пароль. Profit.

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

Много телодвижений. Я наверное слишком ленивый слакварщик, мне не нужны технологии ради самих технологий. Дело то, посуди - элементарное.

Deleted
()

Оплачу 200₽ ( у кого не видятся деревянные, качайте Симболу).

4 доллара?

Плачу $5 тому, кто согласится за эту сумму хотя бы почесать себе попу.

DELIRIUM ☆☆☆☆☆
()
Ответ на: Чем diff patch неторт? от Dreamject

Разве это патчит разные файлы (в раскладках может быть всё что угодно)?

Т.е. у тебя там вообще эльфы? А так да все текстовые вполне себе патчит. Даже для бинарных и то понаписано.

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

Плачу $5 тому, кто согласится за эту сумму хотя бы почесать себе попу.

Подобно мыслят также те, кто патологически не хочет работать уже много времени)

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

Нормальные цены в первую очередь выставляются нормальным/проверенным людям/опытным людям, но там и требования другие. Вот я, например, полный новичок в лине. Если бы я собирался зарабатывать на жизнь/увлечься им (или в какой-то любой сфере, к которой б не имел отношения), я б попытался принять участие в каких-то проектах, чтоб заработать немного опыта. Тут нужны, хоть и спецэфичные знания, но уровня хеллоуворлд.

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

я б попытался принять участие в каких-то проектах, чтоб заработать немного опыта. Тут нужны, хоть и спецэфичные знания, но уровня хеллоуворлд.

Ну тогда ставь цену в 0 рублей и вопросов не будет.

Не, реально. Бесплатно может кто и сделает, а за такую цену это себя не уважать.

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

За бесплатно самому интереснее). Тоже опыт.

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

сделай патчи и собери пакеты. Делов то...

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

Первое вроде бы можно и просто cat'ом сделать в хвост файла.
Второе:
sed -e '/\! variant/r template' /usr/share/X11/xkb/rules/base.lst
где template - файл, который нужно вставить после строчки ! variant.
Третье:
sed -e '/</layoutList>/r template' -e 's/</layoutList>//' /usr/share/X11/xkb/rules/base.xml

Совсем так не получилось, почему-то на 〈/</layoutList>〉 выводил „extra characters after command“ Но 〈/\</layoutList>〉 воспринимает нормально...

В итоге, скрипт выглядит так:

sudo sed -e '/\! variant/r ./patch/rules/baev.lst' /usr/share/X11/xkb/rules/base.lst > ./tmp/base.lst
sudo sed -e '/\! variant/r ./patch/rules/baev.lst' /usr/share/X11/xkb/rules/evdev.lst > ./tmp/evdev.lst
sudo sed -e '/<\/layoutList>/r ./patch/rules/baev.xml' -e 's/<\/layoutList>//' /usr/share/X11/xkb/rules/base.xml > ./tmp/base.xml
sudo sed -e '/<\/layoutList>/r ./patch/rules/baev.xml' -e 's/<\/layoutList>//' /usr/share/X11/xkb/rules/evdev.xml > ./tmp/evdev.xml
cat /usr/share/X11/xkb/symbols/ru ./patch/symbols/ru >> ./tmp/ru
cat /usr/share/X11/xkb/symbols/us ./patch/symbols/us >> ./tmp/us
cat /usr/share/X11/xkb/symbols/ua ./patch/symbols/ua >> ./tmp/ua
cat /usr/share/X11/xkb/symbols/by ./patch/symbols/by >> ./tmp/by

Может у кого-то будут замечания...

Сейчас понял, что постоянная дозапись без учёта того, что было, не гуд...

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

Да, я там слеш забыл заэкранировать. Можно и просто поменять символы разделителя у sed, скажем, так:

sed -e 's|</layoutList>||'

Сейчас понял, что постоянная дозапись без учёта того, что было, не гуд...

Во-во.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Dreamject

0) читаете man patch, man diff
1) подготовка:

# mkdir -p /tmp/a/{rules,symbols}
# cd /tmp
# cp /usr/share/X11/xkb/rules/{base,evdev}.lst a/rules/
# cp /usr/share/X11/xkb/symbols/{us,ru,ua,by} a/symbols/
# cp -r a b
2) правите дерево в /tmp/b до нужного состояния, хоть теми же sed
3) оформляете разницу:
# diff -ru a b > /tmp/isakov.patch
4) на целевой системе:
# CWD=$(pwd)
# cd /usr/share/X11/xkb
# patch -p1 --verbose < $CWD/isakov.patch

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

Диффы — это хорошо, но в итоге не совсем открыто/сложнее модификация под себя и обновление...

Хотя я сейчас и не понимаю значительную часть инфы, которую пишут, могу ошибаться)

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

Диффы — это ... в итоге не совсем открыто/сложнее модификация под себя и обновление

Извините, но вас совершенно непонятно.

Что не открыто, можно пример?
В чем сложность модификации, можно пример?
В чем сложность обновления, можно пример?

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

Написать небольшой скрипт для патчинга
для патчинга
патчинга

Диффы — это хорошо, но в итоге не совсем открыто/сложнее

https://en.wikipedia.org/wiki/Patch_(computing)

For the Unix program, see patch (Unix). For the file format, see diff.

Данила, кончай уже херней маяться.
следующий топик будет «Поменятор - улучшенная версия patch»

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

следующий топик будет «Поменятор - улучшенная версия patch»

Ну и зачем ты это сказал? Теперь же точно будет.

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

Бета уже готова, скоро альфа

верните машину времени на место...

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

Мне просто патч CYB3R в таком виде сделал:)

# list of packed files
LSTDIFF="
H4sIAInyWlUCA43PQQrCMBCF4b2nmBNIoTv3XQtKDzDBoEPjRJJOIZ5esI60GhPf/uPnAVDEwU+W
2waes7yDnmmyIaKDjs+O4gUcJi8jtNtmA2/iX6ZI/G2kK93t6QNHO+siPnZfao5W1H7Fgui5IEt2
kBgJOXcuiJ4rkvw5Qe0JLnE/BCT+URTUYgXlmyZp06S/myZps4LWzQeq+UgiNQIAAA=="
XMLDIFF="
H4sIAF/vWVUCA81X0WrbMBR9z1doH5C5EBgMTB5G+xDo00Y/QK5VV8SRimUFvKdlhb50sJex9X0/
4JaVlKTbfkH6o13JabQ2zubUBjtgZB3da+VcnSPZPf9Fv4+OGJ2SROAYxTjjMhUoIBFlqN8f9npo
9fOLseEK8I85O6HRKCWToYtheEKGifQ9e7PGXYA45Um6T8RxQs9SypkN3gBdfPgX+lYKQTHzvbA0
NMYskjgih1SkDoYBKvirwetRCHMJ31v3XKZXlup7mwz9KU7gH6SPp3hAH01aVh5XIirwmE8TOdh7
WqoN1uq7+qnu1I261R/0TOVqqT8BkuvPCIBzPQNwsepCYzpLiPphQKS+wK1JX+pLpK5s/kL9gqfl
aPByb0spy8kb9CnTGtR5m9yh+a0/wtg9XHN1B+l2AOKLxzdQnDXg1GKUVpjoGbYKsh1sZYIr2uoN
iTE4o5azAhJ3yllBVlFd+muputS1ujVSKlT2P43BQ6zGLlYay9v3V5Dx9isADbhMX6p7GJ8XYHf9
JfEO/pLjyv46GieYslr2kuOkU/aSuIa4kD5XC6ukbxAwA9DoyO7A8y0buOlcdOfwkpi3zd8dYNZa
D4dX3kljiR2MRVh1Y61fWw9YFFNx6l5fM7SPGY0xGtkFe77zCIs65TzCKihvW2E26tKujQjjjZLh
kDCh70nYCK06vARplNi7g7YXShDeNKNGV+vfW9aWj1zCwuIT9w9z675sBg8AAA=="
BYDIFF="
H4sIAMnvWVUCA+2WS2/TQBSF9/kVVjdsgM7LdqICksd2eLRAoZRXqcBFkYiaJlVCERHiv2M8x5lz
F0iwY+Furqzmm7lz55w797pZf503i6RZXH9pljdXs/X888fL2XYz+n558XGzvbpYLTbJ3nzTXK6+
XWyt2kt+jJL2b9lczc4erlc31/r8frJ3upx/m6037Up+tlitbzabebNMFs12dfM1udgmVbOcL5rk
cbfO3kG3RLtNcu/VUVU/SH6ctd+nyqU6uf07qhBVprpolWr/f/7zINnfTz5FuKiV3sHKAjKIeR1i
oSOsBWwINoARXdhZ+SrCRsCWYPv7x0brDIvgO7URtgJ2BLsAWQ8Y376MsBNwSnAKqIumrRTO7CKc
CjgjGOnaIsS0RrVNhDMB5wTngKfIAIv5aYRzAY8JHgPqdjZGY+eS7nks4AnBE8BYJO8KZ6yZRHjC
sFYEo0AGi+QV4CLCSsCkMFOhUNNQbe0Q6Z7vCJgVBtiEdE3WK4zkeZ/girTtcGanQ7QTh6vKIvxC
wHFn58LVuHBFRk86g5hck0jeCNgSbAEHTaui7GKm0gjXAnaUdoG0obCiVxhV+6WAU4JTwEHbOljT
KEMieSXgjOAKMGKGY2Sk7XcCzgnGj7WFPCHT9up28KmAx1SwMQrWy7METGk/FvCEGmCNBoiYI5Oc
0n7OMGnbwZJO52gGKJgleR4LmBTmUG2DjpIGmWYZXdWZgHcKaw3QWxJNIa0AU8HOI+wPT46iMdIS
8PTPBfuQ0NYlO8M55O0gbhUMrceRLgTMzvCAPWALneYRPhEwOQNPhtMGcIjisaoEzM5QgPuGjZ09
wVMBszOmgNGHPFqLp27wUMDkDLxszig0LzyTUzrzIwGzM6DLALUw7q4i+ImAyRl44Zz2gCvYi8R9
KGByBp5Jt+u54wA7uucjhoUz0AHDA73Tq1UEHwiYFYYW0nf/IHKTZ9Q+bxHshTxxVb24PXY2VLD3
AmZ5wtC9rXxQWFrSG/tWwNy4MUv145DvtU3VLgXM8ixRMNxv0ReMhpLXAiZ5pqi2wkhQdWfX9aSO
sBcwyxOu6gexwmNnamLPBEzydEjbIG0PpRk681MBszxRMI2CWfQhvufbAiZ5OhjDwE3BKC1Mz+Rd
hnko6aGQtulnKatoNNiP8MlxWRPcTzR9J4GvFY1DJ8dFWY9+HoxG1/828K/+buJvhol/mPiHiX+Y
+IeJf5j4h4l/mPiHiX+Y+IeJ/7+Y+H8BCDTrT+MXAAA="
RUDIFF="
H4sIAPnvWVUCA+2WTWvcMBCG7/kVZs89SCPZWtO0YNneHppDaZpTCMFpF2qyX6x3Q7eh/72O9SqZ
4LnkVopDYDCrxyPPvPOxa/aHtlklzWr3s9kc18t9+/32fnnqzn7d3912p/XddtUls7Zr7rcP+6NR
s+TxLOn/Ns16ef1pvz3u9M2H2dWmfVjuu/5FX49d1zabZNWctsfD7P1wuH9hcv7toqo/Jo/X/fOV
sqlO3j1ZFazK1GCNUv3vN38YV9RKP3PK4DzBujrYQgscMY7AwdrgT/lK4AzjzNM50joDj+fUCJxl
nA3njQeHZ18KXMq4FOcHS31A8H1W4DLG4X6mCDatEU8SOMc4B24Bv3iPXwjcnHFznB/8EWn4K6X8
5YzLwYF3Q3zIUD7mtGIc4kDgXQWuEDimF6oQj0WIp7awQv401ws4CvejLOplrLOK6dPi+6wO1uQW
ecgE7sWftSHuNsSfdD7om5y2AmcYZ8AFXaqiHGymUoGz7J4F7gm9FFEvhcCljEvBBX3qUE+kSAlc
xrgKHGyGe2ckcI5xOKcNdAa99XkZc3MWlzniApsivmIecsYhf9CZdfDvhHsyfVrUkdUOdYu4GCNw
TC8W8STUfRr0lmVCHjTXC/JHsd4rcKO4+M+XFy+6TkvoGvXuSsRznL+S69pa+LPQpwr1p+cCx+/p
wXlwBnpzAsd0jX5tNYELVpoP5StdK3Cxb8Kflziu6wU49AmP+veZwDFdY45YUugrmEcL6fu4rmv4
q8EhL5XEMV1jnljtwVWoCxI4pmvMI/vc/+aBs0L+XukadRPmX8+hrymJ43pBncf+S6EuXDbuZ/6V
zpCHqE8Pf+QEjusM9UeYZz7oJS0XAsf7J/aQuE/4qE8SOK6zEnFB3ooYl1LguM7QjzTmXzV8p67z
WuC4zlAPcX8pPPwZgWM6s7gn4Z4euiHp+7jOEBeNuBj0CTF/vH9C14Q6CDrvufE88ny+x/PhnhT3
EKNG8/byS1kzLu4Fsd5RhyruE/3/2e5tW+72rWtust0d2nX7e/ljWninhXdaeKeFd1p4/5WFNy4S
cfGdFt5p4Z0W3mnh/a8X3r+VXI1B1xUAAA=="
Но всё совсем не так, как я сначала подумал. А вообще, скрипт интересно сделан, кто хочет одним файлом и 9-мбайтных пнгшек (скачать можно

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

Насколько понимаю, нужен не патч, а отдельный пакет. То есть в /usr/share/X11/ будут доп файлы. Единственная проблема с xml. Возможно svu подскажет как это правильно сделать.

Насколько понимаю зависимость будет только от xkb-data

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

Денис Попов — мастер пакетов

Как оказалось, Денис сделал раскладку «Рукби». Может кому интересно. Инсталятор хороший (единственное — не патчит языковые файлы, а новыми следит — в итоге прозрачные иконки вместо флагов), есть пакет, не но сама раскладка странновата.

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

Любой пакет рано или поздно обновляется. Патчить системные файлы это не правильно. Кстати, спасибо за раскладку!

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

в таком виде

А вы его, ежели токмо угодно имеющим право на то, ударьте, чтоб он стал фиолетовым в крапинку... Впрочем, вам виднее, зачем и почему где.

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

Любой пакет рано или поздно обновляется. Патчить системные файлы это не правильно.

Если „правильно“ делать, тогда надо ещё иконки добавлять для ДЕ где они используются (и не добавлять, где не используются), иначе в Синнамоне, например, будет пусто, что сводит на нет адекватность использования „правильных“ раскладок... Столько геморра)

Смотрел бегло на гитхабе, там этим не заморачиваются особо.

спасибо за раскладку!

Пожалуйста!

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

Нужен патч. Отдельным пакетом не обойтись. Ибо база правил едина, и метаданные едины. Вот это вот все:

/usr/share/X11/xkb/rules/*

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

Спасибо. А есть какой-то авторский алгоритм не для создания, а для установки раскладок? Или каждый пишет инсталлятор в силу своих возможностей?

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

Если не ошибаюсь, в разных дистрибутивах(или ДЕ) юзаются разные раскладки (в Лубунте, насколько помню, их меньше)... Так что вряд ли сами разрабы дистрибутивов или ДЕ часто их обновляют.

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