Icon - менеджер иконок рабочего стола

...
  • Sorcerer
    А если он упадет?
    Не страшно - просто не будет перерисовываться фон.
    Одна хотелка по теме, если вдруг будет желание ее реализовать: подписи под иконками сделать длиннее, чем они могут быть сейчас. Длинные имена система поддерживает, а длинные названия программ - пока что нет :)
    Это пожалуй самое простое из задуманного.
    Может быть, не всем нужны иконки на рабочем столе.
    А кто нам мешает запускать процесс-сервер занимающийся работой с параметром отключающим загрузку иконок или вообще в INI файле прописать.

    art_zh
    Еще раз проIMHUю, что менеджеру иконок - место в нулевом круге, а не в третьем.
    Вынос его в юзерспейс прорубит еще одну дыру в системной защите.

    Но если уж вы так решили, то надо по крайней мере

    1) повысить его в звании до десктоп-менеджера, и

    2) присвоить ему статус специального процесса (незакрываемого, неперезапускаемого и недуплицируемого).

    Иначе будет бардак.
    Фатального ничего нет, а то что ты предлагаешь требует значительной переделки ядра.
    Если готов взяться за такую работу - то никто не запрещает, но чужие идеи желающих реализовывать нет.
    А если его сдуру закроют? :shock:
    Абсолютно ничего - просто сервис отрисовки фона не будет работать и на фоне будут артефакты от других ранее нарисованных элементов.
    Или повесят второй (третий, десятый) ?
    Можно сделать проверку на наличие процесса в памяти использовав уникальное название.
  • art_zh

    Ну ладно, оконная система в монолитном ядре. Но менеджер иконок зачем в ring0 ? Правильно будет собрать @PANEL @ICON @RB в одно приложение и будет нам десктопный менеджер. И зачем ему в ядро ?
  • Serge wrote:Правильно будет собрать @PANEL @ICON @RB в одно приложение и будет нам десктопный менеджер.
    Зачем повторять путь Виндовс? :shock:
    Пусть каждая утилита занимается своим делом. Десктопный менеджер это монструозная вещь.
  • Есть простое решение проблемы с несколькими запусками или случайным закрытием десктопного менеджера. В ядре заводится строковая переменная с полным путём к менеджеру. Всё работает по принципу "кто первый встал, того и тапки". Приложение через set_background_thread() объявляет себя менеджером. Следующий вызов будут неудачным. Если менеджер упадёт или будет закрыт ядро его рестартует.
  • Mario

    Там функциональность близка, и вместе всё будет быстрее работать. Главное не превращать код в винегрет.
  • Serge
    Там функциональность близка, и вместе всё будет быстрее работать. Главное не превращать код в винегрет.
    В таком случае тебе придется реализовать вывод и для самого верхнего слоя и сразу встает вопрос с приложениями рисующими на весь экран. zSea например не сможет тогда выводить в полноэкранном режиме (вернее сможет но панель будет всегда поверх), скринсейверы также не смогут. Нужен сверхвысокий слой и тот который за ним (этот второй будет для панели), остальные рисуют в обычном оконном стеке.
  • Mario

    Но сейчас ведь всё работает ? На крайний случай запускать панели в отдельных потоках.
  • Serge wrote:Ну ладно, оконная система в монолитном ядре. Но менеджер иконок зачем в ring0 ?
    Ядро сможет определить и обработать нажатие иконки
    1)быстрее, 2)проще 3) безопаснее и 4)надежнее.
    Если делегировать это дело приложению, придется так или иначе реализовать разбор оконного стека, обработку нажатия и отрисовку фона.

    В принципе можно всё реализовать "в круге третьем" (sysfn09+полноэкранная графика это сделать позволяют), но это уже очевидный абсурд.
    Предложенные тобой два новых вызова делегируют эти действия системе.

    Грамотный и вполне резонный подход.
    Мне эти 2 вызова представляются двумя широченными шагами в направлении вноса всего иконного менеджера в ядро.
    Все что я предлагаю - сделать третий, маленький шажок (необходимость в добавлении новых сисфункций при этом, очевидно, отпадёт сама собой).
    А в третьем кольце оставить только редактор связей между иконкой, ее экранными координатами и строкой вызова соответствующей программы.
    Serge wrote:Правильно будет собрать @PANEL @ICON @RB в одно приложение и будет нам десктопный менеджер. И зачем ему в ядро ?
    Дык я и не звал его в ядро.
    Читай внимательней:
    art_zh wrote:Вынос его /иконного менеджера/ в юзерспейс прорубит еще одну дыру в системной защите.Но если уж вы так решили, то надо по крайней мере
    1) повысить его в звании до десктоп-менеджера...
    т.е. если уж зло неизбежно - тогда имеет смысл собрать @PANEL @ICON @RB в одно специальное приложение
    [color=#006000]Mario[/color] wrote:то что ты предлагаешь требует значительной переделки ядра.
    Если готов взяться за такую работу - то никто не запрещает, но чужие идеи желающих реализовывать нет.
    Будет время - займусь. Сейчас есть задачи поважнее этой ерунды.
    Евангелие от Иоанна: стих 1

    Code: Select all

    ; В начале было Слово:
    B32:        mov     ax, os_stack       ; Selector for os
    [/size]
  • art_zh
    На обсуждение "этой ерунды" потрачено тобой довольно много времени.
    Зачем вообще тогда теряешь время влезая в детские песочницы? :lol:
  • потому что мне небезразлично, какой будет система завтра.

    если замутил новую тему на пустом месте - постарайся хотя бы выслушать чужие аргументы.

    если они тебе по барабану - делай как знаешь и никого не спрашивай.

    (вариант: можешь не спрашивать только одного меня - принят к исполнению)
  • art_zh
    потому что мне небезразлично, какой будет система завтра.
    Веришь или нет - ты не одинок. :lol:
    если замутил новую тему на пустом месте
    Так ли пусто это место? Проблема есть и есть разные способы ее решения. Лично мой подход - максимальное удобство со стороны пользователя. Тебе как ты уже не раз заявлял - графическая система вообще по сути не нужна и в твоем случае это оправдано. Но ты ведь не один - у системы очень много обычных пользователей, которые хотят видеть обычную рабочую систему со всеми удобствами которые есть в других десктопных системах.
    постарайся хотя бы выслушать чужие аргументы.
    если они тебе по барабану - делай как знаешь и никого не спрашивай.
    1. Вообще-то я в своем посте первом вообще не спрашивал советов как мне делать - просил только с иконками помочь.
    2. Я был достаточно вежлив и выслушивал чужое мнение, при этом я ничье мнение "ерундой" не называл.
    3. При желании помочь мне с кодом я не отказываюсь от такой помощи, при желании исключительно покритиковать - мне такая помощь не сильно нужна. :)
    (вариант: можешь не спрашивать только одного меня - принят к исполнению)
    Из минусов твоей реализации я сразу вижу один существенный - отсутствует гибкость. Чтобы изменить код и его логику придется менять ядро - и все заявления об максимальной надежности не оправдывают такой жесткой реализации. Мы от этого как раз стремимся уходить, максимально упрощая ядро.

    З.Ы. Как однажды сказал один не последний человек в проекте "Мнение пишущего код всегда приоритетней мнения всех остальных".
  • Набросал пока такой патч. Подмена слота работает, но вылезла новая проблема: все функции рисования делают отсечение по границам окна, что правильно, но мешает рисовать фон. Видимо одним напильником не обойтись и надо влезать в оконный стек.
    Attachments
    bgr_patch1.txt (20.46 KiB)
    патч для svn
    Downloaded 213 times
  • Несколько не понял почему мешает? Есть же тип окна "Y=1 - только определить область окна, ничего не рисовать".

    А вообще похоже придется таки выделять кусок памяти размером с экранную область.
  • Mario

    Такое окно, если сделать его на весь экран, при первом клике вылезет не первый план. И назад его не вернёшь. Здесь надо править код работы с оконным стеком, чтобы оно всегда оставалось внизу. Но я пока совершенно не въехал в его логику. Чего только люди не придумают, лишь бы не делать двусвязные списки.
  • Who is online

    Users browsing this forum: No registered users and 4 guests