1

Тема: C під Linux: як краще завантажити вміст .Xresources?

Вітаю.
Я використовую термінал sakura, але в ньому немає можливості створювати свою палітру, є лише декілька заготовлених.
Свою палітру можна додати змінивши вже існуючи в сирцях, та перекомпілювати, але кожного разу перекомпільовувати якось не круто.

То я думаю записати кольори терміналу в .Xresources, а сирці sakura змінити таким чином, аби вони читали вміст .Xresources, парсили його, та додавали вказану там палітру кольорів до вже існуючих.

Яким чином краще це зробити?

Я от поки що думаю про команду

xrdb -query

, і воно мені повинно видати вміст .Xresources, ну а потім вже треба то розпарсити, і витягнути потрібні значення.
Що думаєте?

2

Re: C під Linux: як краще завантажити вміст .Xresources?

загуглив, мені треба popen, здається

3

Re: C під Linux: як краще завантажити вміст .Xresources?

Спробував тако

#include <stdio.h>
#include <string.h>

int main() {
    char result[256];
    FILE *fp = popen("xrdb -query", "R");
    int i = 0;

    for (i = 0; i < 10; i++) {
      fprintf(fp, "Count = %d\n", i);
    }

    pclose(fp);

    return 0;
}

але воно ось таку помилку видає

1705 segmentation fault  sudo ./hello

4

Re: C під Linux: як краще завантажити вміст .Xresources?

FakiNyan написав:

Спробував тако

    FILE *fp = popen("xrdb -query", "R");

По перше, "r" (хоча я не розумію, чого воно хряпається від великої літери, це явно дурна бага бібліотеки).

      fprintf(fp, "Count = %d\n", i);

По друге (хоч до цього просто не доходить) popen відкривається на читання для отримання запиту, а тут йде спроба запису (воно має просто ігноруватися з поверненням помилки функцією printf.

Подякували: FakiNyan1

5

Re: C під Linux: як краще завантажити вміст .Xresources?

це я просто переробив приклад з записом, то замінив W на R, і все, через то й так
але я вже забив на це все, бо ця sakura якось поганенько хендлить прозорість, то є, то нема, і потрібно заново перевстановити її.
І якщо для своїх змін мені треба буде перекомпілювати то все, то я вже краще буду використовувати st. Там теж перекомпілювати треба, але воно так і було задумано, і воно suckless!

6

Re: C під Linux: як краще завантажити вміст .Xresources?

ReAl написав:
FakiNyan написав:

Спробував тако

    FILE *fp = popen("xrdb -query", "R");

По перше, "r" (хоча я не розумію, чого воно хряпається від великої літери, це явно дурна бага бібліотеки).

Тю!

Якщо не "w" і не "r", то popen повертає NULL.
Треба ж перевіряти результат.
Ну а виклик fprintf з NULL вже й дає segfault.

Подякували: FakiNyan, leofun012