Size: a a a

2021 May 19

n

nod in pro.bash
Вот например простой "ебилд" для lighttpd
https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/http/lighttpd/default.nix
источник

зк

захар который... in pro.bash
А существует ли какая-нибудь системная переменная, которая хранит в себе значение fullscreen, состояние которой можно было бы проверить?

Мне требуется изменить поведение программы в зависимости от того, является ли она развёрнута на весь экран или нет
источник

n

nod in pro.bash
Нет, не совсем. На каком языке программа?
Если из шелла, то можно использовать xprop или xwininfo и спотреть на _NET_WM_STATE(ATOM), а конкретно на _NET_WM_STATE_FULLSCREEN
Если, например, из C, то можно юзать XGetWindowProperty() из xlib
Это не переменные окружения, а свойства иксового окна
источник

n

nod in pro.bash
Вот спецификация для всех свойств окна
https://specifications.freedesktop.org/wm-spec/1.3/ar01s05.html
источник

зк

захар который... in pro.bash
Программа сишная (sxiv)
Да, пробую как раз с _NET_WM_STATE, но не пойму как её использовать.  Я и Си то не знаю
источник

зк

захар который... in pro.bash
Пробую так:
источник

зк

захар который... in pro.bash
bool cg_switch_mode_fs(arg_t _)
{

 if (mode == MODE_IMAGE) && (data[i] |= atoms[ATOM__NET_WM_STATE_FULLSCREEN]) {
   if (tns.thumbs == NULL)
     tns_init(&tns, files, &filecnt, &fileidx, &win);
   img_close(&img, false);
   reset_timeout(reset_cursor);
   if (img.ss.on) {
     img.ss.on = false;
     reset_timeout(slideshow);
   }
   tns.dirty = true;
   mode = MODE_THUMB;
   win_toggle_fullscreen(&win);

 if (mode == MODE_IMAGE) && (data[i] == atoms[ATOM__NET_WM_STATE_FULLSCREEN]) {
   if (tns.thumbs == NULL)
     tns_init(&tns, files, &filecnt, &fileidx, &win);
   img_close(&img, false);
   reset_timeout(reset_cursor);
   if (img.ss.on) {
     img.ss.on = false;
     reset_timeout(slideshow);
   }
   tns.dirty = true;
   mode = MODE_THUMB;

 if (mode == MODE_THUMB) (data[i] |= atoms[ATOM__NET_WM_STATE_FULLSCREEN]) {
   load_image(fileidx);
   mode = MODE_IMAGE;
   win_toggle_fullscreen(&win);

 } else {
   load_image(fileidx);
   mode = MODE_IMAGE;
 }
 return true;
}
источник

зк

захар который... in pro.bash
Интуитивно понятно, но может быть я в синтаксисе ошибку допускаю, или ATOM__NET_WM_STATE_FULLSCREEN использую неправильно
источник

зк

захар который... in pro.bash
но компилятор ругается, как ни пытаюсь
источник

Мл

Мастер ломастер... in pro.bash
почему после ATOM два нижних подчеркивания?
источник

зк

захар который... in pro.bash
Там в других функциях этой программы встречал и там именно так записывалось
источник

Мл

Мастер ломастер... in pro.bash
логически как то не укладывается в голове. Попробуйте с одним подчеркиванием
источник

зк

захар который... in pro.bash
Пробовал.  Но не прокатывает.  Ругается на скобочки.  Убираю их.  Тогда ругается на data[i]
источник

Мл

Мастер ломастер... in pro.bash
в каком месте изначально ругается?
источник

зк

захар который... in pro.bash
Скобки
(data[i] |= atoms[ATOM__NET_WM_STATE_FULLSCREEN])
источник

зк

захар который... in pro.bash
убираю, ругается на квадратную скобку в data[i]
источник

n

nod in pro.bash
Вот с чем, а с сишкой вообще ничем не помогу. Кроме доки на функцию:
https://tronche.com/gui/x/xlib/window-information/XGetWindowProperty.html
источник

VP

Vadim "Oxyd&quo... in pro.bash
Ну в арчеподобных можно с лёгкостью получить как список явно установленных пакетов, так и список пакетов установленных как зависимости. Как список пакетов установленных из реп, так и установленных из AUR. А дальше списки скармливаешь пакетному менеджеру в нужной комбинации и получаешь состояние системы на момент сохранения списков. Единственное что, так как это роллинг, пакеты ты получишь последних версий. Для заморозки пакетов на определённой версии штатных средств нет. Точнее есть, но это небезопасно для консистентности системы. Нештатно, можно заюзать хоть тот-же systemd-nspawn + downgrade. Зато это не вещь в себе, как никсось.
источник

n

nod in pro.bash
Почему не в себе? Это работает только на арче. И пакеты из арч архива работают только на арче. Это первая проблема.
Вторая - нету какого-то простого способа это всё описать, чтобы запустить и всё само развернулось. И при этом чтобы оно не зависело от операционной системы и окружения пользователя.
Третья - ты не можешь просто взять и изменить пакет. То есть ты вынужден использовать то, что лежит в архиве.
источник

n

nod in pro.bash
Четвертая проблема немного глубже - она заключается в библиотеках. Если пакет А зависим от либы а-1, а пакет Б зависит от либы а-2, при этом в либе а-1 и а-2 несовместим ABI, то работать это не будет.
Один из примеров - glibc разных версий
источник