LINUX.ORG.RU

Xfce4. Ищутся добровольцы на полезное дело

 , , , ,


2

4

Всем известно что Xfce4 перешла на GTK3.
Но мало кто знает, что в GTK3 из виджета GtkTreeView удалили функционал который использовался в Thunar(и не только) и который раньше позволял по разному раскрашивать чётные и нечётные строки с помощью тем оформления.
Автор сего слома отказывается исправлять ситуацию за просто так? :)

Из-за этого теперь Thunar стал менее удобен, см. скриншот сравнения.

Есть простая и, не побоюсь этого слова, гениальная идея - начистить рожу | задонатить чтобы вернул как было (нужное подчеркнуть :) сделать галочку затенения чётных строк в Thunar (учитывая цвет из темы оформления gtk3).
Но, для этого требуются не балаболы, а более-менее опытные сталкеры знающие GTK3.

Кто желает оставить свой след в опенсорсе?

★★★★☆

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

Ответ на: комментарий от popov-aa

Ну, раз ты говоришь о правах, то у разработчика GTK есть право удалить зебру и он им воспользовался. У тебя есть право прислать патч в Тунар, у разработчика Тунара есть право отказаться его принимать. Чего у тебя никто не отнимет - так это право накатить патч локально.

Я, например, поддерживаю для личных целей форки qbittorrent и bomi и могу однозначно утверждать, что поддерживать третью прогу мне будет просто некогда (а так хочется в dolphin сделать full row select для режима таблицы). Отсюда и совет всем здешним страдальцам искать способы жить с готовеньким, а не тратить время на патчи. (Ну, или хотя бы начали бы с того, что договорились бы с представителями апстрима, что патч не расходится с их видением и они готовы его принять.)

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

Тот, кому не нравится существующее, должен сам форкнуться, а не приходить в существующие проекты и гадить.

Погоди. Они уже форкнули. И делают со своим форком, что хотят. Оригинальный проект загнулся, им никто не занимается. Остался только форк от разработчиков гнома. Ты им пользуешься, потому что не хочешь тянуть свою версию кода. В чём претензия-то? Что за тебя не делают бесплатно то, что тебе хочется? Но ведь странно такое ожидать.

i-rinat ★★★★★
()
Ответ на: комментарий от Novator

Если вчера у меня был системный трей, то и сегодня мне нужен систрей и иконки в нём.

Сиди на старой «нормальной» версии.

Тот, кому не нравится существующее, должен сам форкнуться, а не приходить в существующие проекты и гадить.

Разработчик тебя халявщика «партнёра» забыл спросить, что ему делать, послал и правильно сделал.

MaxPower ★★
()

начистить рожу | задонатить чтобы вернул как было

Какое совпадение, ничего из перечисленного ты сделать не можешь. Ведь

для этого требуются не балаболы

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

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

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

Патча ему видите ли недостаточно! А выпилить рабочий функционал из Gtk2 и делать морду кирпичом достаточно, бастард сраный?!

А ты, да и все прочие болтуны готовы сделать форк GTK и продвинуть его хотябы в два или три основных дистра?

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

Всмысле? Пересобрать GTK с имеющимся патчем? Это не интересно.
Интересно посмотреть как i-rinat сделал, в образовательных целях.

superuser ★★★★☆
() автор топика
Ответ на: комментарий от superuser
diff -ur thunar-1.8.14.orig/thunar/thunar-details-view.c thunar-1.8.14/thunar/thunar-details-view.c
--- thunar-1.8.14.orig/thunar/thunar-details-view.c	2020-03-25 18:15:16.000000000 +0300
+++ thunar-1.8.14/thunar/thunar-details-view.c	2020-06-02 00:43:31.632098436 +0300
@@ -188,6 +188,17 @@
 }
 
 
+static void
+cell_data_func(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell,
+               GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
+{
+    GtkTreePath *path = gtk_tree_model_get_path(tree_model, iter);
+    gint *indices = gtk_tree_path_get_indices(path);
+    g_object_set(G_OBJECT(cell), "cell-background",
+                 (indices[0] % 2) ? "white" : "#addbf8", NULL);
+    gtk_tree_path_free(path);
+}
+
 
 static void
 thunar_details_view_init (ThunarDetailsView *details_view)
@@ -266,6 +277,10 @@
           gtk_tree_view_column_set_attributes (details_view->columns[column], THUNAR_STANDARD_VIEW (details_view)->icon_renderer,
                                                "file", THUNAR_COLUMN_FILE,
                                                NULL);
+          gtk_tree_view_column_set_cell_data_func(
+              details_view->columns[column],
+              THUNAR_STANDARD_VIEW(details_view)->icon_renderer, cell_data_func,
+              NULL, NULL);
 
           /* add the name renderer */
           g_object_set (G_OBJECT (THUNAR_STANDARD_VIEW (details_view)->name_renderer),
@@ -274,6 +289,10 @@
           gtk_tree_view_column_set_attributes (details_view->columns[column], THUNAR_STANDARD_VIEW (details_view)->name_renderer,
                                                "text", THUNAR_COLUMN_NAME,
                                                NULL);
+          gtk_tree_view_column_set_cell_data_func(
+              details_view->columns[column],
+              THUNAR_STANDARD_VIEW(details_view)->name_renderer, cell_data_func,
+              NULL, NULL);
 
           /* add some spacing between the icon and the name */
           gtk_tree_view_column_set_spacing (details_view->columns[column], 2);
@@ -287,6 +306,9 @@
           /* add the renderer */
           gtk_tree_view_column_pack_start (details_view->columns[column], renderer, TRUE);
           gtk_tree_view_column_set_attributes (details_view->columns[column], renderer, "text", column, NULL);
+          gtk_tree_view_column_set_cell_data_func(details_view->columns[column],
+                                                  renderer, cell_data_func,
+                                                  NULL, NULL);
         }
 
       /* append the tree view column to the tree view */
i-rinat ★★★★★
()

А что, у gtk нет понимания такого?

GtkTreeView row {                                                                     
    background-color: @row_odd;                                                 
}

GtkTreeView row:nth-child(2n) {                                                                     
    background-color: @row_even;                                                
}                                                                                                                                                         

Если есть, то не мучайте себя.

EmgrtE ★★★★
()
Ответ на: комментарий от i-rinat

Вот это хардкод, оно же потом не стилизуется через темы. Или суть кода в том, чтобы показать, что это не сложно?

EmgrtE ★★★★
()
Ответ на: комментарий от i-rinat

Спасибо Ринат, показал ты хороший пример неопытным сталкерам

superuser ★★★★☆
() автор топика
Ответ на: комментарий от EmgrtE

Или суть кода в том, чтобы показать, что это не сложно?

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

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

Погоди. Они уже форкнули. И делают со своим форком, что хотят.

Нет это ты погоди.
При форке меняют название, а эти гадёныши захапали название (Gtk), да ещё и номер 3 присвоили, чтобы сбить людей с толку.

Оригинальный проект загнулся, им никто не занимается.

Оригинальный проект достиг совершенства и в «реформах» всяких смузихлёбов и корпорастов не нуждается.

Остался только форк от разработчиков гнома.

Форк выпускают под другим именем. Гномоящеры своровали оригинальное название и одурачили население.

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

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

Что за тебя не делают бесплатно то, что тебе хочется?

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

В чём претензия-то?

Претензия в том, что гадский форк (Gtk3) от гадёнышей заменил нормальную либу (Gtk2) в дистрибутивах и теперь единственный более менее нормальный десктоп в линуксе (LXDE) не работает как мне надо.

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

и в «реформах» всяких смузихлёбов и корпорастов не нуждается

Но тут уже не о реформах речь идёт, а о предоставлении базового на текущий момент функционала - поддержки дисплеев высокого разрешения, мониторов с разной плотностью точек. Старая версия, я так понимаю, этого не поддерживала.

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

Оригинальный проект достиг совершенства и в «реформах» всяких смузихлёбов и корпорастов не нуждается.

А чего ты тут ноешь? Пользуй оригинальный совершенный проект.

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

При форке меняют название

Так ведь поменяли. Был GIMP Toolkit, в форке стал GTK+.

да ещё и номер 3 присвоили, чтобы сбить людей с толку.

Ага, вероломно. После неявной 1 и явной 2. Запутать хотят, не иначе. Небось, дальше 4 будет использовать, чтобы уж совсем плохо стало.

гадский форк (Gtk3) от гадёнышей заменил нормальную либу (Gtk2)

… от «гадёнышей»? Ты же в курсе, что 2, 3 и 4 занимались и занимаются, в основном, те же люди?

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

2, 3 и 4 занимались и занимаются, в основном, те же люди

да..., хорошо что координаты не сказал, а то оставил бы нас без девелоперов тот Зверюга

superuser ★★★★☆
() автор топика
Последнее исправление: superuser (всего исправлений: 2)

Да ты должен его на руках носить за такие поломки, он просто взращивает новое поколение кодописак в опенсорс, подкидывая им несложные задачи такими поломками, уровня «я говорю тебе в каком виджете поломка, у тебя есть старый и новый код, вперед, ты можешь это исправить»

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

Без понятия. Нужно пробовать. Но в теории сработает.

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

Ну какие же вы всё-таки кровожадные! Ну нельзя же так сразу, дождались хотя-бы окончания карантина... Эх не зря у того кличка Тт_ была, не зря...

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

К сожалению убийство неугодного девелопера выглядит более реадистичным чем то, что несколько людей соберутся и таки сделает форк.

Лодыри в общем.

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

пока не вернут установи просто gtk 2 версию thunar

kronos2411
()
10 сентября 2020 г.
Ответ на: комментарий от te111011010

А тут он сломал обратную совместимость системной библиотеки в рамках минорной версии. За это надо сильно и больно бить.

XFCE сами хороши. Вместо того, чтобы бампнуть номер версии с 4 до 5 при переходе на gtk3, они остались на той же major ветке.

Так что туда и дорога.

Вкатили несовместимые по API файлы под старыми именами:

$ pacman -Qql xfce4-panel | grep \.so
/usr/lib/libxfce4panel-1.0.so
/usr/lib/libxfce4panel-1.0.so.4
/usr/lib/libxfce4panel-1.0.so.4.0.0
/usr/lib/libxfce4panel-2.0.so
/usr/lib/libxfce4panel-2.0.so.4
/usr/lib/libxfce4panel-2.0.so.4.0.0
/usr/lib/xfce4/panel/plugins/libactions.so
/usr/lib/xfce4/panel/plugins/libapplicationsmenu.so
/usr/lib/xfce4/panel/plugins/libclock.so
/usr/lib/xfce4/panel/plugins/libdirectorymenu.so
/usr/lib/xfce4/panel/plugins/liblauncher.so
/usr/lib/xfce4/panel/plugins/libpager.so
/usr/lib/xfce4/panel/plugins/libseparator.so
/usr/lib/xfce4/panel/plugins/libshowdesktop.so
/usr/lib/xfce4/panel/plugins/libsystray.so
/usr/lib/xfce4/panel/plugins/libtasklist.so
/usr/lib/xfce4/panel/plugins/libwindowmenu.so

XFCE на этом для меня закончился.

А по сабжу темы вопрос: ну что, починил фичу кто-нибудь?

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 2)

Решил оставить Thunar как есть, но на тему Greybird (модифицированную) наложил патч:

--- a/gtk-3.0/gtk-contained.css
+++ b/gtk-3.0/gtk-contained.css
@@ -2194,6 +2194,13 @@
       border-color: #cecece;
       background-image: none; }
 
+row:hover,
+row:hover:focus,
+.cell:hover {
+	color: @theme_fg_color;
+	background-color: #C6CDD5;
+}
+
 /*********
  * Menus *
  *********/

Результат - https://img11.lostpic.net/2020/09/10/19195ed7a1fd05b924caa82b346769f9.gif

superuser ★★★★☆
() автор топика
Ответ на: комментарий от X512

Пока нет. Но такими темпами скоро будет =)

А если серьёзно — то да, есть.

То, что не так хорошо выглядит, но менее требовательно к ресурсам. И поэтому ваш UI, скорее всего, будет отзывчив на какой-нибудь древней железке марки SGI, HP или DEC.

Собственный язык описания UI – UIL – вместо glade’овского XML.

X-ресурсы вместо CSS (по большому счёту, идея ровно та же, с точностью до временной разницы в 30 лет).

Более тесная интеграция с X11, потому что Motif никогда не предназначался для работы во фреймбуфере или на Windows.

Гораздо меньше сетевого трафика — в т. ч. за счёт использования серверных шрифтов (но с версии 2.3 можно и привычные клиентские). В частности, на старых X-серверах можно было исполнять (и отрисовывать) PostScript прямо на сервере, а не гонять по сети результат его растеризации на клиенте.

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

Нет.

Была попытка лет 15 назад, но не допилили.

В SGI IRIX (первом Unix с человеческим лицом) была своя тема и доп. графические компоненты (можешь глянуть на YouTube), но за счёт изменения кода самой библиотеки.

Сейчас тот же вид есть у MaXX Interactive Desktop, и ровно такими же средствами.

Я бы сказал, что Motif (как и X11) мёртв, в т. ч., из-за совершенно ужасного API и отсутствия поддержки других языков, кроме C. На то, что в GTK, Qt, FLTK ты сделаешь двумя строчками независимо от выбранного языка – от C++ до Java и Python – в Motif придётся потратить строчек 20. Ну и про вещи типа MVVM тогда никто не думал.

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