LINUX.ORG.RU

Форкаю pcmanfm

 


0

9

Вчера я таки дозрел до решения форкнуть pcmanfm и сделать файловый менеджер мечты.

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

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

Вопрос: есть желающие принять участие в проекте? И как обычно на ЛОРе, есть только желающие поскулить в толксах о том, как всё плохо? :}

Ну офигеть теперь.

Gpicview заброшен, а ведь только в твоем форке есть годная фича усредненного цвета бекграундом. А ведь есть что пилить - предобработку следующей имаги, например. А то оно покажет, а потом перерисует вторым проходом. Опциональную панельку аля mirage ведь добавить хотел. Ну и всякие другие мелочи, к примеру ругань на automake, а ведь в арче уже 1.13.1. Вместо этого будет еще один фм на устаревающем (скорбно рыдаю) гтк2. Да, гтк3 говно, я в курсе. Стоило бы наверное сначала причесать имеющиеся проекты?

anonymous
()
Ответ на: Ну офигеть теперь. от anonymous

Стоило бы наверное сначала причесать имеющиеся проекты?

gpicview я тоже под эту же гребенку причешу в рамках работы над stuurman.

Вот возьми всё, что ты здесь изложил про gpicview, и оформи отдельными багрепортами у меня на гитхабе. Потому что тут оно потеряется, а там оно будет висеть и мозолить глаза, и вероятность, что я всё исправлю, возрастает на порядок.

Вместо этого будет еще один фм на устаревающем (скорбно рыдаю) гтк2.

Он вроде как вполне собирается с gtk3, судя по сорцам. Впрочем, не проверял, насколько он при этом работает.

gpicview тоже собирается с gtk3, но не пашет. Я тогда сходу не смог найти причину, а потом забил.

А вот перенос lxpanelx на gtk3 — это уже трудоемкая задача, да. Там куча gtk2-специфичных хаков в коде оставлена прошлыми разработчиками.

geekless ★★
() автор топика

Для желающих помочь и спрашивавших, над чем можно поработать:

Вот тут запилил больше дюжины фичреквестов на мелкие улучшения, которых требует интерфейс однопанельника: https://github.com/geekless/stuurman/issues

Для libfm и stuurman-desktop списки фич также воспоследуют в ближайшее время.

geekless ★★
() автор топика
Последнее исправление: geekless (всего исправлений: 1)
Ответ на: комментарий от blackst0ne

Разумеется.

Вон в багтрекере я как раз пару реквестов добавил на улучшение этой фичи.

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

если ты видеш принципиальную разницу в чтении дерева файлов с «real"fc и архивом ( тем более в записи)

то ты видимо? видиш разницу принципиальную с работой между „real"fc

и тем же ftp ( ну ты понял)

и тем же http(случай где страница это каталог где линки это папки а текст это содержимое :) ) ?

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

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

Всё еще не видишь никакой разницы?

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

Не собирается libsmfm

Making all in actions
make[4]: Вход в каталог `/usr/src/GIT/libsmfm/src/actions'
/usr/bin/valac --thread --vapidir=./../vapi --pkg gio-2.0 --pkg posix --pkg libsmfm --vapi ./../vapi/fm-actions.vapi --header fm-actions.h   -C action.vala condition.vala profile.vala parameters.vala utils.vala 
error: Package `libsmfm' not found in specified Vala API directories or GObject-Introspection GIR directories
Compilation failed: 1 error(s), 0 warning(s)
make[4]: *** [libsmfmactions_la_vala.stamp] Ошибка 1
make[4]: Выход из каталога `/usr/src/GIT/libsmfm/src/actions'
make[3]: *** [all-recursive] Ошибка 1
make[3]: Выход из каталога `/usr/src/GIT/libsmfm/src'
make[2]: *** [all] Ошибка 2
make[2]: Выход из каталога `/usr/src/GIT/libsmfm/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/usr/src/GIT/libsmfm'
make: *** [all] Ошибка 2
anonymous
()
Ответ на: комментарий от anonymous

Да, в оригинале тот же баг. Собирай с --disable-actions.

Я не стал пока это трогать, потому что во-первых в этой vala черт ногу сломит, а во-вторых данный код всё равно надо будет переделывать, т.к. его грамотнее будет вынести в отдельную *.so.

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

Насколько критична установка конфигов в /etc? А то я пытаюсь ставить в /opt/ и он матерится:

Warning: sysconfdir is not /etc.
Please consider passing --sysconfdir=/etc to configure.
Otherwise default config files will be installed to wrong place.
anonymous
()
Ответ на: комментарий от anonymous

Насколько критична установка конфигов в /etc?

Совсем не критична.

И вообще я там накосячил с инклудами, когда библиотеку переименовывал. stuurman-desktop не собирается, да и stuurman наверное не соберется. Сейчас исправлю.

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

Ещё ошибка. Собираю ./configure --prefix=/opt/stuurman --enable-demo --enable-udisks --disable-actions

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I. -I./base -I./actions -I./job -I./gtk -I./demo -DPACKAGE_DATA_DIR=\«/opt/stuurman/share/libsmfm\» -DPACKAGE_UI_DIR=\«/opt/stuurman/share/libsmfm/ui\» -DPACKAGE_LIB_DIR=\«/opt/stuurman/lib/libsmfm\» -DPACKAGE_LOCALE_DIR=\«/opt/stuurman/share/locale\» -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/pango-1.0 -I/usr/include/menu-cache -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -Werror-implicit-function-declaration -g -O2 -MT libsmfm_la-fm-file-info-deferred-load-worker.lo -MD -MP -MF .deps/libsmfm_la-fm-file-info-deferred-load-worker.Tpo -c base/fm-file-info-deferred-load-worker.c  -fPIC -DPIC -o .libs/libsmfm_la-fm-file-info-deferred-load-worker.o
base/fm-file-info-deferred-load-worker.c:35:8: error: storage size of 'incomming_list_mutex' isn't known
base/fm-file-info-deferred-load-worker.c:42:14: error: storage size of 'worker_wake_up_condition' isn't known
make[4]: *** [libsmfm_la-fm-file-info-deferred-load-worker.lo] Ошибка 1
make[4]: Выход из каталога `/usr/src/GIT/libsmfm/src'
make[3]: *** [all-recursive] Ошибка 1
make[3]: Выход из каталога `/usr/src/GIT/libsmfm/src'
make[2]: *** [all] Ошибка 2
make[2]: Выход из каталога `/usr/src/GIT/libsmfm/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/usr/src/GIT/libsmfm'
make: *** [all] Ошибка 2
anonymous
()
Ответ на: комментарий от geekless

И вообще я там накосячил с инклудами

Исправил.

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

base/fm-file-info-deferred-load-worker.c:35:8: error: storage size of 'incomming_list_mutex' isn't known

Проверь. Попробовал починить совместимость с glib <= 2.32 вслепую. Нет сейчас системы с подходящей версией чтобы проверить.

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

Какая версия glib?

>rpm -q glib2
glib2-2.28.8-90.fc14.i386

configure не материться ни на одну версию. Если нужны более новые версии - нужно исправлять configure.

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

ага, браузер, векторный редактор, плеер, и почту.

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

Обновился через git pull. Всё равно не собирается. Теперь в другом месте.

gcc -DHAVE_CONFIG_H -I. -I..  -I. -I./base -I./actions -I./job -I./gtk -I./demo -DPACKAGE_DATA_DIR=\«»/opt/stuurman/share/libsmfm"\" -DPACKAGE_UI_DIR=\«»/opt/stuurman/share/libsmfm/ui"\" -DPACKAGE_LIB_DIR=\«»/opt/stuurman/lib/libsmfm"\" -DPACKAGE_LOCALE_DIR=\«»/opt/stuurman/share/locale"\"  -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/pango-1.0 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12   -Werror-implicit-function-declaration  -g -O2 -MT libsmfm_demo-gtk-compat.o -MD -MP -MF .deps/libsmfm_demo-gtk-compat.Tpo -c -o libsmfm_demo-gtk-compat.o `test -f 'gtk-compat.c' || echo './'`gtk-compat.c
mv -f .deps/libsmfm_demo-gtk-compat.Tpo .deps/libsmfm_demo-gtk-compat.Po
make[4]: *** Нет правила для сборки цели `demo/libsmfm-demo.c', требуемой для `libsmfm_demo-libsmfm-demo.o'.  Останов.
make[4]: Выход из каталога `/usr/src/GIT/libsmfm/src'
make[3]: *** [all-recursive] Ошибка 1
make[3]: Выход из каталога `/usr/src/GIT/libsmfm/src'
make[2]: *** [all] Ошибка 2
make[2]: Выход из каталога `/usr/src/GIT/libsmfm/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/usr/src/GIT/libsmfm'
make: *** [all] Ошибка 2
anonymous
()
Ответ на: комментарий от geekless

Наконец-то собрал libsmfm. Переходим к водным процедурам stuurman. Кстати, почему две u в слове штурман? Моё эстетическое чувство страдает от такого.

anonymous
()

создать настолько модульный и конфигурируемый файловый менеджер

Я бы был пользователем этого. Может, даже коммитил бы что-нибудь (если оно на сях).
А панель оно будет уметь делать? (модулем, разумеется)
Будет модуль эмулятора терминала?
Мне эта идея нравится.

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

Я как сделаю сайт под проект, оповещу общественность через ЛОР.

Ветку gh-pages, не? скоро грозятся GitHub Pages перевести на Jekyll 1.0, вот будет хорошо)))

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

Разместил сорцы:

Ну хоть кто-то не использует русские комментарии в коде, и на том спасибо!

iVS ★★★★★
()

Первый патч (сделан через git format-patch)

>cat 0001-about.ui-change.patch 
From 03f00c4b87675780cee03dbf033aa90e141cfa3d Mon Sep 17 00:00:00 2001
From: anonymous <anonymous@linux.org.ru>
Date: Tue, 7 May 2013 17:48:47 +0400
Subject: [PATCH] about.ui change

---
 data/ui/about.glade.in |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/data/ui/about.glade.in b/data/ui/about.glade.in
index e0149fe..0061824 100644
--- a/data/ui/about.glade.in
+++ b/data/ui/about.glade.in
@@ -7,16 +7,16 @@
     <property name=«window_position»>center-on-parent</property>
     <property name=«type_hint»>dialog</property>
     <property name=«has_separator»>False</property>
-    <property name=«program_name»>PCManFM</property>
+    <property name=«program_name»>Stuurman</property>
     <property name=«version»>@VERSION@</property>
-    <property name=«copyright» translatable=«yes»>Copyright (C) 2009 - 2012</property>
+    <property name=«copyright» translatable=«yes»>Copyright (C) 2013</property>
     <property name=«comments» translatable=«yes»>Lightweight file manager
 
-Developed by Hon Jen Yee (PCMan)</property>
-    <property name=«website»>http://sourceforge.net/projects/pcmanfm</property>
-    <property name=«license»>PCMan File Manager
+Developed by geekless anonymous</property>
+    <property name=«website»>https://github.com/geekless/stuurman.git</property>
+    <property name=«license»>Stuurman File Manager
 
-Copyright (C) 2009 - 2012 &#x6D2A;&#x4EFB;&#x8AED; (Hong Jen Yee)
+Copyright (C) 2013 geekless anonymous
 
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License

@@ -31,8 +31,8 @@ GNU General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.</property>
-    <property name=«authors»>&#x6D2A;&#x4EFB;&#x8AED; Hong Jen Yee <pcman.tw@gmail.com>
- * Desktop icons use code from Brian Tarricone</property>
+    <property name=«authors»>geekless@linux.org.ru
+anonymous@linux.org.ru</property>
     <property name=«translator_credits» translatable=«yes» comments=«Please replace this line with your own names, one name per line. »>translator-credits</property>
     <property name=«artists»></property>
     <property name=«logo_icon_name»>system-file-manager</property>
-- 
1.7.4.4
anonymous
()
Ответ на: комментарий от geekless

Замечательно - теперь будут кеды на гэтэка2 )
Назови ManDE - сделай легкий терминал с табами, сделай простой текстовый редактор, но с подсветкой синтаксиса, как Notepad2 под оффтопиком(GPL OPen Source - можешь портануть) и форкни Gnome-Panel 2(Mate-Panel :D) - пускай будет поддержка апплетов Unity )
В качестве WM - урезаный Flux (без панельки типа)

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

Это опенсурс детка, какие копирайты? Вот как попов делал - токо под GPL и в начале каждого *.c должно будет быть GPL )

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

Какое отношение &#x6D2A;&#x4EFB;&#x8AED; имеет к разрабатываемому сейчас штурману? Ссылку на оригинальный проект можно где-то в уголке прилепить. А в about перечислять только причастных к текущему проекту.

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

Какое отношение &#x6D2A;&#x4EFB;&#x8AED; имеет к разрабатываемому сейчас штурману?

Тебе объяснять, надеюсь, не нужно, что такое форк? Либо писать с нуля, либо форкать и оставлять копирайты.

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

Автор, ты слыхал про NEPOMUK? Это что-то стандартного набора онтологий, описывающих метаданные для различных типов данных. Например, nfo описывает файлы, nao позволяет присваивать файлам теги, а nco описывает контакты и связи между ними. Для работы с данными используется язык SPARQL. При этом:

у нас выделяются некоторые группы свойств, каждая из которых требует собственной логики. Например:

Превьюшки. Контекстные меню файла. mp3- и exif- и т.п. тэги.

соответствует антологиям, а

отвечать на вопросы типа «что ты знаешь про этот файл насчёт таких-то его свойств?»

превращается в sparql-запрос. Что интересно, изменение данных тоже превращается в sparql-запрос.

весь код, которые выполняет _действия_ над файлами, и оформлен в виде отдельных агентов (исполняемых файлов). libfm не будет заниматься копированием файлов, удалением файлов, показом диалога свойств файлов и т.п. всё это будет делегировано внешним приложениям.

можно изобразить в виде обработчиков событий в базе. При изменении пути у файла запуск mv, при создании обределённого объекта создание копии, при отмечании файла, как удалённого - удаление его, диалогов свойств может быть сколько угодно, в зависимости от выборки (параметры этих диалогов можно хранить там же, в базе).

Реализаций sparql сейчас много. Есть, например tracker, который совсем не жирный, KDE-шный nepomuk. Сделан на glib, общается через dbus. Или сделай свою реализацию, чо уж там.

Воще ружьё!

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

FAM сейчас действительно мало где используется. И Бог с ним, что код поддержки есть в Glib.

Для мониторинга ФС в реальной жизни Glib юзает inotify и kqueue.

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

При этом:

При этом в реализации от кде это какой-то монстр. Нет, спасибо.

Есть, например tracker, который совсем не жирный

tracker, да. Не жирный. Можно прикрутить в качестве одного из вариантов плагинов.

можно изобразить в виде обработчиков событий в базе

Можно, но не нужно. Система должна быть устроена при сохранении своих функциональных качеств настолько просто, насколько это возможно. Всю конфигурацию обработчиков можно хранить в виде текстовых файлов, значит надо её так и хранить. Кроме того, у меня будет возможность генерировать конфигурацию on the fly при обращении к скрипту (аналогично динамическим меню опенбокса), а это в базу не засунешь.

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

Реализаций sparql сейчас много.

sparql можно рассматривать как один из вариантов поставщиков метаданных, но завязываться на него полностью нельзя. У приложения должна быть собственная архитектура, допускающая расширение плагинами и внешними обработчиками. (Это основы разработки софта. Нельзя жестко завязываться на какое-либо стороннее API, если есть возможность на него не завязываться.)

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

Какое отношение &#x6D2A;&#x4EFB;&#x8AED; имеет к разрабатываемому сейчас штурману? Ссылку на оригинальный проект можно где-то в уголке прилепить. А в about перечислять только причастных к текущему проекту.

Это нарушение лицензии.

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

сделай простой текстовый редактор, но с подсветкой синтаксиса, как Notepad2 под оффтопиком

Есть medit.

и форкни Gnome-Panel 2(Mate-Panel :D) - пускай будет поддержка апплетов Unity )

У меня уже есть панель.

В качестве WM - урезаный Flux (без панельки типа)

Openbox же. Ну или xfwm для любителей простоты настройки. Впрочем, мои планы по захвату мира включают в себя форк openbox когда-нибудь в будущем.

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

При этом в реализации от кде это какой-то монстр

4.2

лёгкий и быстрый (правда, он стал таким только с версии 4.10)

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

Автор обидится и свалит на мак?

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

Тебе объяснять, надеюсь, не нужно, что такое форк?

Нет уж, потрудись, пожалуйста. У меня, как видишь, своё представление об этом. Повторюсь, можно в уголке где-нибудь прилепить ссылку на оригинальный проект, там все копирайты, за которые все тут бьются.

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

Это нарушение лицензии.

Можно больше конкретики? Какие лицензии? Какие пункты конкретных лицензий?

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

Можно больше конкретики?

1. Вы можете копировать и распространять дословные копии исходного кода Программы по его получении на любом носителе, при условии что вы соответствующим образом помещаете на видном месте в каждой копии соответствующее уведомление об авторских правах и отказ от гарантий; оставляете нетронутыми все уведомления, относящиеся к данной Лицензии и к отсутствию каких-либо гарантий; и передаете всем другим получателям Программы копию данной Лицензии вместе с Программой.

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

2. Вы можете изменять свою копию или копии Программы или любой ее части, создавая таким образом произведение, основанное на Программе, и копировать и распространять эти модификации или произведение в соответствии с Разделом 1, приведенным выше, при условии, что вы выполните все нижеследующие условия:

a) Вы обязаны снабдить модифицированные файлы заметными уведомлениями, содержащими указания на то, что вы изменили файлы, и дату каждого изменения.

b) Вы обязаны предоставить всем третьим лицам лицензию на бесплатное использование каждого произведения, которое вы распространяете или публикуете, целиком, и которое полностью или частично содержит Программу или какую-либо ее часть, на условиях, оговоренных в данной Лицензии.

c) Если модифицированная программа обычно читает команды в интерактивном режиме работы, вы должны сделать так, чтобы при запуске для работы в таком интерактивном режиме обычным для нее способом она печатала или выводила на экран объявление, содержащее соответствующее уведомление об авторских правах и уведомление о том, что гарантий нет (или, наоборот, сообщающее о том, что вы обеспечиваете гарантии), и что пользователи могут повторно распространять программу при этих условиях, и указывающее пользователю, как просмотреть копию данной Лицензии. (Исключение: если сама Программа работает в интерактивном режиме, но обычно не выводит подобное объявление, то ваше произведение, основанное на Программе, не обязано выводить объявление.)

geekless ★★
() автор топика

Запилил overall navigation history, сохраняющуюся между перезапусками программы.

Кстати, cast queen3. Помнится, он когда-то возмущался выпилу этой фичи из наутилуса.

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