LINUX.ORG.RU

Сообщения Athor

 

Направления разработки Vala-panel

Форум — Development

Скоро отпуск, а значит я займусь доработкой vala-panel и надеюсь зарелизить 0.4 до момента окончания отпуска. Какие фичи планируются в 0.4:

  • Переписать основные модули (lib и app) на C
  • Убрать динамическую выгрузку модулей, заменить одноапплетные модули на движки, которые возвращают нужный модуль
  • Добавить platform (модуль, который оборачивает все платформозависимые функции)
  • Выделить Layout отдельно от окна (сейчас окно и размещает апплеты, и размещается само)

В связи с этим возникает несколько вопросов к аудитории ЛОР:

  • Какие фичи из данного списка для вас приоритетны?
  • Как вы предпочитаете хранить настройки - в конфигах или в dconf?
  • Как вы относитесь к тому, что панель начнет требовать композит для работы?

 

Athor
()

Медведев сделал гадство.

Форум — Talks

Медведев отложил введение электронных паспортов

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

  • NFC с возможностью прочтения паспортных данных с фото и записи по шифрованному протоколу
  • Вменяемого приложения госуслуг на Android, с функционалом «Приложи по NFC паспорт - получи услугу онлайн или забери документ у курьера».
  • Уведомительных процедур прописки и брака с новым паспортом. Переехал - введи адрес и приложи карту.
  • Минимизация нахождения гражданина без карты в формате «Срок действия завершен - оставь тикет онлайн, обменяй паспорт досрочно». При этом до активации нового действителен старый паспорт.
  • Идентификация по паспорту в банках (Хотя б в Сбербанке первое время). Забыл дома банковскую карту - получи деньги в любом банкомате, приложив паспорт к NFC кругу и введя секретный код + 3dsec.

А чего вы бы хотели от электронных паспортов?

 , ,

Athor
()

Настройка Atom

Форум — Desktop

Как настроить сабж для совместной разработки C и Vala? Находил гайды - не работают. Требуется нормальный автокомплит (на уровне QtCreator) и возможность билдить при помощи CMake (без крэшей). Для питона все работает.

 ,

Athor
()

Linux без GNU

Форум — Talks

Предлагаю создать свой болгенос без GNU на базе LFS:

  • Ядро - LLVMLinux
  • Компилятор - Clang
  • Libc - musl
  • Libcxx - libc++abi
  • Вместо GNU окружения - Busybox + BSD окружение
  • Формат пакетов - RPM
  • Десктоп - только Wayland.

 , , ,

Athor
()

Снова я

Галерея — Скриншоты

Что здесь есть:

  • vala-panel (из Git);
  • глобальное меню;
  • Status Notifier;
  • диалог запуска (специально для демонстрации новых возможностей vala-panel).

Openbox в качестве WM, Chromium просто так (обычно используется Firefox). И да, опять реклама vala-panel и ее плагинов :) )

>>> Просмотр (1366x768, 602 Kb)

 

Athor
()

Приглашаю помочь мне в разработке vala-panel

Форум — Development

Мне зело лень переписывать её на C (ну и заодно производить разделение классов). Если кто-то хочет поучаствовать - милости прошу. И ещё - моя панель заслуживает на ЛОР хотя бы мини-новостей?

 , , ,

Athor
()

TQ Anniversary фризится с GL_OUT_OF_MEMORY

Форум — Games

Собственно сабж. Фризится регулярно, где-то раз в 5-10 минут. Игра c GOG, последний Wine с ArchLinux.
Видеокарта - Intel IvyBridge HD,
MESA 12.0.2-1
Wine 1.9.18
64-битный WINEPREFIX


Под фризом я понимаю полный фриз игры, когда помогает только killall -9 Tq.exe

 , ,

Athor
()

Пришлите XML с DBus интерфейса старого UPower (0.9.23)

Форум — General

Гентушники с OpenRC, сабж:)

 , ,

Athor
()

Обновление моего GlobalMenu для крыски и не только.

Форум — Desktop

Мои программы обновились. Я пофиксил в них много утечек памяти, которые были связаны с кривизной рук. Что входит в мои программы:

  • GTK3-замена LXPanel
  • Плагин для показа StatusNotifierItem (это трей в KDE5) для моей панели и для крысы
  • Глобальное меню для моей панели и для крысы на технологиях Unity (но можно на стоковый GTK поставить)
  • Несколько юзабельных дополнений для StatusNotifierItem-трея, а именно:
    • Плагин громкости
    • Плагин батареи
    • Плагин раскладки
    • Плагин погоды
    • Плагин загрузки сети

Брать:

 , ,

Athor
()

Каким вы бы хотели видеть меню в приложениях?

Голосования — Голосования
  1. Локальное (как в Gnome2 из коробки) 384 (36%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Меню в заголовке (как в KDE или в Unity с LIM) 248 (23%)

    **************************************************************************************************************************************************************************************************************

  3. Глобальное (как в Unity) 190 (18%)

    **************************************************************************************************************************************************************

  4. Вообще без меню (Тулбары или как в Firefox) 79 (7%)

    *****************************************************************

  5. Как в третьегноме (Только Appmenu) 78 (7%)

    *****************************************************************

  6. Нафиг меню! Ribbons must have! 49 (5%)

    ****************************************

  7. Иное (в комментариях) 48 (4%)

    ****************************************

Всего голосов: 1076

 , ,

Athor
()

Ебилды для всех.

Форум — Desktop

Я веду оверлей lxde-gtk3 и сообщаю вам о том, что теперь там также есть firefox с USE=«gtk3» (собирается, работает, сам с него сижу)

Ну и lxde c gtk3, конечно. А также глобалменю для крыски. Если кто хочет, могу и для корицы заебилдить.

Кому надо?

 , ,

Athor
()

Что может течь в этих функциях?

Форум — Development
    [Compact,CCode (ref_function = "menu_maker_drag_data_ref", unref_function = "menu_maker_drag_data_unref")]
    private class DragData
    {
        internal unowned MenuModel section;
        internal unowned Gtk.MenuItem menuitem;
        internal int item_pos;
        internal Volatile ref_count;
        internal static void destroy (Widget w, DragData data)
        {
            SignalHandler.disconnect_by_data(data.menuitem,data);
            Gtk.drag_source_unset(data.menuitem);
            data.ref_count = 1;
            data.unref();
        }
        internal DragData(Gtk.MenuItem item, MenuModel section, int model_item)
        {
            this.section = section;
            this.menuitem = item;
            item_pos = model_item;
            this.ref_count = 1;
        }
        internal void @get (Gdk.DragContext context, SelectionData data, uint info, uint time_)
        {
            string[]? uri_list = null;
            string action,target;
            section.get_item_attribute(item_pos,GLib.Menu.ATTRIBUTE_ACTION,"s",out action);
            section.get_item_attribute(item_pos,GLib.Menu.ATTRIBUTE_TARGET,"s",out target);
            if (action == "app.launch-id")
            {
                try
                {
                    var appinfo = new DesktopAppInfo(target);
                    target = Filename.to_uri(appinfo.get_filename());
                } catch (GLib.Error e){}
            }
            uri_list = new string[1];
            uri_list[0] = target;
            data.set_uris(uri_list);
        }
        internal void begin(Gdk.DragContext context)
        {
            var val = section.get_item_attribute_value(item_pos,GLib.Menu.ATTRIBUTE_ICON,null);
            var icon = Icon.deserialize(val);
            if (icon != null)
                Gtk.drag_source_set_icon_gicon(menuitem,icon);
            else
                Gtk.drag_source_set_icon_name(menuitem,"system-run-symbolic");
        }
        internal unowned DragData @ref ()
        {
            GLib.AtomicInt.inc (ref this.ref_count);
            return this;
        }
        internal void unref ()
        {
            if (GLib.AtomicInt.dec_and_test (ref this.ref_count))
                this.free ();
        }
        private extern void free ();
    }

    private static void apply_menu_dnd(Gtk.MenuItem item, MenuModel section, int model_item)
    {
        // Make the this widget a DnD source.
        Gtk.drag_source_set (
                item,                      // widget will be drag-able
                Gdk.ModifierType.BUTTON1_MASK, // modifier that will start a drag
                MENU_TARGETS,               // lists of target to support
                Gdk.DragAction.COPY            // what to do with data after dropped
            );
        var data = new DragData(item,section,model_item);
        data.ref();
        item.drag_begin.connect(data.begin);
        item.drag_data_get.connect(data.get);
        Signal.connect(item,"destroy",(GLib.Callback)DragData.destroy,data);
    }
    public static void apply_menu_properties(List<unowned Widget> w, MenuModel menu)
    {
        unowned List<unowned Widget> l = w;
        for(var i = 0; i < menu.get_n_items(); i++)
        {
            var jumplen = 1;
            if (l.data is SeparatorMenuItem) l = l.next;
            unowned Gtk.MenuItem shell = l.data as Gtk.MenuItem;
            unowned string? str = null;
            var has_section = false;
            var has_submenu = false;
            unowned MenuShell menuw = shell.submenu;
            MenuLinkIter iter = menu.iterate_item_links(i);
            MenuModel? link_menu;
            while (iter.get_next(out str, out link_menu))
            {
                has_section = has_section || (str == GLib.Menu.LINK_SECTION);
                has_submenu = has_submenu || (str == GLib.Menu.LINK_SUBMENU);
                if (menuw != null && has_submenu)
                    apply_menu_properties(menuw.get_children(),link_menu);
                else if (has_section)
                {
                    jumplen += (link_menu.get_n_items() - 1);
                    apply_menu_properties(l,link_menu);
                }
            }
            Variant? val = null;
            MenuAttributeIter attr_iter = menu.iterate_item_attributes(i);
            while(attr_iter.get_next(out str,out val))
            {
                if (str == GLib.Menu.ATTRIBUTE_ICON && (has_submenu || has_section))
                {
                    var icon = Icon.deserialize(val);
                    shell.set("icon",icon);
                }
                if (str == ATTRIBUTE_TOOLTIP)
                    shell.set_tooltip_text(val.get_string());
                if (str == ATTRIBUTE_DND_SOURCE && val.get_boolean())
                    apply_menu_dnd(l.data as Gtk.MenuItem, menu, i);
            }
            l = l.nth(jumplen);
            if (l == null) break;
        }
    }

 , , ,

Athor
()

Продолжение эпопеи поиска memleaks

Форум — Development

Как понимать и фиксить вот такой выхлоп Valgrind?

==28104== 36,480 (15,360 direct, 21,120 indirect) bytes in 60 blocks are definitely lost in loss record 25,222 of 25,306
==28104==    at 0x4C2C080: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==28104==    by 0x782C6F1: g_malloc0 (in /usr/lib/libglib-2.0.so.0.4400.0)
==28104==    by 0x78155A7: g_hash_table_resize (in /usr/lib/libglib-2.0.so.0.4400.0)
==28104==    by 0x7815C8E: g_hash_table_insert_node (in /usr/lib/libglib-2.0.so.0.4400.0)
==28104==    by 0x7815DC5: g_hash_table_insert_internal (in /usr/lib/libglib-2.0.so.0.4400.0)
==28104==    by 0x7B0AC7F: dbus_menu_property_store_new (dbusmenu.vala:81)
==28104==    by 0x7B0B109: dbus_menu_item_construct (dbusmenu.vala:139)
==28104==    by 0x7B0CDF0: dbus_menu_client_parse_layout (dbusmenu.vala:349)
==28104==    by 0x7B0CD63: dbus_menu_client_parse_layout (dbusmenu.vala:313)
==28104==    by 0x7B0D520: dbus_menu_client_layout_update_co (dbusmenu.vala:293)
==28104==    by 0x7B0DA90: dbus_menu_client_construct (dbusmenu.vala:243)
==28104==    by 0x7B11632: dbus_menu_gtk_client_construct (dbusmenu.vala:1036)
==28104==    by 0x16F03E02: status_notifier_item_setup_inner_menu (snitem.vala:233)
==28104==    by 0x16F03E02: status_notifier_item_init_proxy_co (snitem.vala:115)
==28104==    by 0x4EA95C6: g_simple_async_result_complete (in /usr/lib/libgio-2.0.so.0.4400.0)
==28104==    by 0x4EA9628: complete_in_idle_cb (in /usr/lib/libgio-2.0.so.0.4400.0)
==28104==    by 0x7826C0C: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.4400.0)
==28104==    by 0x7826FA7: g_main_context_iterate.isra.29 (in /usr/lib/libglib-2.0.so.0.4400.0)
==28104==    by 0x782704B: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.4400.0)
==28104==    by 0x4EDC99B: g_application_run (in /usr/lib/libgio-2.0.so.0.4400.0)
==28104==    by 0x407365: vala_panel_main (application.vala:38)
==28104==    by 0x80597FF: (below main) (in /usr/lib/libc-2.21.so)
==28104== 
То есть, я понимаю, где оно создается, но там есть чертов деструктор и он вызывается, однако (проверено добавлением в него printf)

 , , ,

Athor
()

Не знаю, как поймать утечки памяти.

Форум — General

Уже все перепробовал - и Valgrind, и просто в htop смотреть, но утечки все равно поймать не могу, а они меня очень смущают. Как их точно выловить досконально?

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

 , ,

Athor
()

От чего может течь 4 мб?

Форум — Development

Код:

    public bool show_menu()
    {
        if (GLib.MainContext.current_source().is_destroyed()) return false;
        Gtk.Menu menuw = new Gtk.Menu.from_model(menu);
        MenuMaker.apply_menu_properties(menuw.get_children(),menu);
        menuw.attach_to_widget(this,null);
        menuw.popup(null,null,menu_position_func,
                    0, Gdk.CURRENT_TIME);
        menuw.focus_out_event.connect((event)=>{menuw.destroy();return false;});
        show_system_menu_idle = 0;
        return false;
    }

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

 , ,

Athor
()

Это GTK решето что ли? Или я криворукий зело?

Форум — General
==29320== 4,176 (512 direct, 3,664 indirect) bytes in 1 blocks are definitely lost in loss record 21,097 of 21,732
==29320==    at 0x4C2C29E: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==29320==    by 0x9B8FCFA: ??? (in /usr/lib/libfontconfig.so.1.9.0)
==29320==    by 0x9B904C9: ??? (in /usr/lib/libfontconfig.so.1.9.0)
==29320==    by 0x9B907EF: FcPatternAddInteger (in /usr/lib/libfontconfig.so.1.9.0)
==29320==    by 0x6D85281: ??? (in /usr/lib/libcairo.so.2.11400.2)
==29320==    by 0x643844F: ??? (in /usr/lib/libpangocairo-1.0.so.0.3600.8)
==29320==    by 0x9967871: ??? (in /usr/lib/libpangoft2-1.0.so.0.3600.8)
==29320==    by 0x996646C: ??? (in /usr/lib/libpangoft2-1.0.so.0.3600.8)
==29320==    by 0x665915E: ??? (in /usr/lib/libpango-1.0.so.0.3600.8)
==29320==    by 0x665C9CE: pango_layout_line_get_extents (in /usr/lib/libpango-1.0.so.0.3600.8)
==29320==    by 0x665EBEE: ??? (in /usr/lib/libpango-1.0.so.0.3600.8)
==29320==    by 0x665EE99: ??? (in /usr/lib/libpango-1.0.so.0.3600.8)
==29320==    by 0x5A75B33: gtk_label_get_preferred_layout_size (gtklabel.c:3661)
==29320==    by 0x5A75B33: gtk_label_get_preferred_size (gtklabel.c:3718)
==29320==    by 0x5A76084: gtk_label_get_preferred_height_and_baseline_for_width (gtklabel.c:3923)
==29320==    by 0x5B14013: gtk_widget_query_size_for_orientation (gtksizerequest.c:214)
==29320==    by 0x5B1426E: gtk_widget_compute_size_for_orientation (gtksizerequest.c:390)
==29320==    by 0x5B1454D: gtk_widget_get_preferred_height_and_baseline_for_width (gtksizerequest.c:639)
==29320==    by 0x59314C0: gtk_alignment_get_preferred_size (gtkalignment.c:662)
==29320==    by 0x59314FA: gtk_alignment_get_preferred_height_and_baseline_for_width (gtkalignment.c:737)
==29320==    by 0x5B14013: gtk_widget_query_size_for_orientation (gtksizerequest.c:214)

Хотя я нигде не переопределял gtk_widget_get_preferred_*...

 , , ,

Athor
()

После закрытия меню перестает тащиться иконка

Форум — Development

В-общем, настроил я по мануалу таскающиеся иконки на меню, но вот незадача - пока меню на экране, иконка тащится, а как меню пропало - иконка не тащится. Как победить?

 ,

Athor
()

g_desktop_app_info_launch_uris_as_manager и nohup.

Форум — Development

Как можно подружить эти сущности? Хочу, чтоб порожденные процессы не умирали, когда умирает родитель.

g_desktop_app_info_launch_uris_as_manager внутри вызывает g_spawn_async.

 , ,

Athor
()

Сколько памяти должна есть панелька?

Форум — Talks

Сабж. На данный момент моя ест 14 мб чистыми + 30 мб SHR. Система: Gentoo x86_64. Для сравнения - PCManFM на такой же системе ест 14 мб чистыми + 22 мб SHR

Много ли это? Если да, то почему? Если нет, то почему переписыванием LXDE на GTK3 занимаюсь я, а не разрабы LXDE?

И сколько памяти вы, ЛОРовцы, готовы отдать на своем компе обычной десктопной панели?

 , , ,

Athor
()

Не было печали, купил мышу.

Форум — Linux-hardware

История такая - купил себе BT мышу, чтоб погамать в Civ5 или в 5 героев под Wine. Сама мышь - китайская NONAME (BTC какая-то)

Но bluez хочет от меня пароль, а на мыше не написан сей. Как победить? 0000 и 1234 пробовал - без толку.

ArchLinux, bluez5 (5.30.1).

модель мыши

 , , ,

Athor
()

RSS подписка на новые темы