Перейти к публикации
Форум - ComputerCraft
RccHD

Разработка новой операционной системы. WinOS.

Рекомендованные сообщения

Реализовал часть функций оконного менеджера. Реализовал переключение окон
vokoscreen-2017-09-03_14-28-08.gif

Изменено пользователем RccHD
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

vokoscreen-2017-09-03_14-28-08.gif

О боже, я ждал это джва года.

Удачи с разработкой! Надеюсь не забросишь проект.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как определить "графическую" ширину пикселя? Например "х" имеет ширину 1, а какой-нибудь иероглиф -- ширину 2

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я ждал это джва года.

А я взял и сделал за 3 дня :P

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
@@RccHD, делай конфиг на Lua и переключение кнопками.

Да!!! Ты написал именно то, чем я сейчас занимаюсь. Будет офигенный кастомизируемый оконный менеджер. Можно будет свои сочетания клавиш регистрировать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решил еще добавить возможность ставить приложения на паузу(coroutine позволяют и такое делать)

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

 

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

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот это мне нравится. Человек задумал - человек запилил. =)
А то наплодят 100500 тем, а толку - нуль. Ни одного завалящего скриншотика.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот это мне нравится. Человек задумал - человек запилил. =)

А то наплодят 100500 тем, а толку - нуль. Ни одного завалящего скриншотика.

Просто пока у меня есть этот энтузиазм я могу запилить что угодно хоть за пару дней. Постараюсь побыстрее закончить ОС пока не пропал настрой

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решил еще добавить возможность ставить приложения на паузу(coroutine позволяют и такое делать)

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

 

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

Какие могут быть подводные камни?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Решил еще добавить возможность ставить приложения на паузу(coroutine позволяют и такое делать) Кроме того, что любую программу можно поставить на паузу, можно будет еще 'выключать графику' этой программы

Какие могут быть подводные камни?

 

Если приостанавливать выполнение приложения, то подводные камни зависят от характера самого приложения. Может оказаться нежелательным в определенные интервалы времени прерывать управление технологическим процессом или обмен данными. Например, программа разогревает ядерный реактор, периодически проверяя его температуру и останавливая нагрев в нужный момент. Приостанов такой программы приведет к взрыву реактора.

 

Если речь идет о приостановке экранного вывода, то при условии аккуратной реализации виртуального gpu не должно возникать каких-либо проблем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот это мне нравится. Человек задумал - человек запилил. =)

А то наплодят 100500 тем, а толку - нуль. Ни одного завалящего скриншотика.

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

А -бах, и выложил программулину или библу эпическую :)

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

....

Ну так, есть мыслители, философы(а что если), а есть те кто реально делает что - то.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

Ну так, есть мыслители, философы(а что если), а есть те кто реально делает что - то.

ну это даа. Да и общение тоже нужно. Так интереснее что-то делать. Зачастую бывает пофлудить намного интереснее, чем какие-то буковки кодить в одиночестве. По большому счету - то все эти программки улетят в небытие с течением времени в нашей расширяющейся вселенной, да и они и не нужны никому по сути, особо, а вот обсудить что-то - это хлебом не корми :)

  • Like 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот же проблемка.

 

Стандартный term и tty реализованы так, что никакими усилиями не получается встиснуть их в gpu эмулированную через буффер

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот исходники.

https://github.com/RccHD/WinOS/tree/master/WinOS/dd243563-b2e6-4ba8-8c28-28ca278f0402/home

Скопировать в таком виде в папку /home. Реализовано примерно 50% необходимого функционала.

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

 

Рабочий скрипт: test1.lua(змейка, матрица и проч.)

Нерабочий -- test.lua(использует term, tty)

Чтобы закрыть программу нужно нажать backspace. Помогает не всегда

Изменено пользователем RccHD
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот исходники.

https://github.com/RccHD/WinOS/tree/master/WinOS/dd243563-b2e6-4ba8-8c28-28ca278f0402/home

Скопировать в таком виде в папку /home. Реализовано примерно 50% необходимого функционала.

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

 

Рабочий скрипт: test1.lua(змейка, матрица и проч.)

Нерабочий -- test.lua(использует term, tty)

Чтобы закрыть программу нужно нажать Q. Помогает не всегда

 

 

Лучше сразу оптимизировать, чем потом переписывать костыли.

А вообще шикарная прога.

 

 

 

Мне в этом плане Элит нравится))) Не флудит,  не предупреждает всех об опасности, что он там что-то кодить собрался, никого морально не подготавливает к этому и в ЖЖ-шке не постит тонны флуда, что он там что-то кодит, не требует людей, которые бы отдались в анальное рабство для создания крупного проекта и прочее. А -бах, и выложил программулину или библу эпическую

А как же его вк, где он пишет свои планы по написанию новых крутых прог?

 

Эх, мне бы так. Не философствовать, а писать проги задуманные. 

Изменено пользователем qwertyMAN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот исходники.

https://github.com/RccHD/WinOS/tree/master/WinOS/dd243563-b2e6-4ba8-8c28-28ca278f0402/home

Скопировать в таком виде в папку /home. Реализовано примерно 50% необходимого функционала.

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

 

Рабочий скрипт: test1.lua(змейка, матрица и проч.)

Нерабочий -- test.lua(использует term, tty)

Чтобы закрыть программу нужно нажать backspace. Помогает не всегда

Какие файлы OpenOS были изменены? Я не понял, как извлечь эту информацию из репозитория, а просматривать все файлы в поисках изменений выше моих сил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Какие файлы OpenOS были изменены? Я не понял, как извлечь эту информацию из репозитория, а просматривать все файлы в поисках изменений выше моих сил.

 

Никакие файлы не были изменены. Мои версии некоторых системных компонент лежат в папке lib/proxy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Запусти шелл в одном своих окон.

Я уже писал, что это проблематично...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пока что решил взять перерыв в кодинге. Пару дней не буду ничего программировать и т.д.

Так что давайте пока обсудим идеи новых фич в эту ОС
Пишите свои предложения

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот например интересно, давать ли возможность юзеру изменять размер окна?

 

При каждом изменении окна придется перерисовывать графику приложения. А в некоторых случаях придется перезапускать приложение, которое запущено в этом окне.

 

Вот например если есть такой код, то придется перезапустить приложение, чтобы переменные соответствовали размеру окна:

local w, h = require("component").getPrimary("gpu").getResolution()
Изменено пользователем RccHD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот например интересно, давай ли возможность юзеру изменять размер окна?

 

В классических тайловых менеджерах разрешают.

Да и вообще, если какая-то программа закрывается - то остальные автоматом ресайзятся, чтобы занять экран полностью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В классических тайловых менеджерах разрешают.

Да и вообще, если какая-то программа закрывается - то остальные автоматом ресайзятся, чтобы занять экран полностью.

Да, но такие программы должны слушать событие "screen_resized", чтобы сразу обновить свои переменные в соответствии с новым размером окна. 

 

Поэтому я добавлю возможность ручного перезапуска (ctrl + R) для таких программ, которые не адаптированы под изменяющийся размер окна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

Да, но такие программы должны слушать событие "screen_resized", чтобы сразу обновить свои переменные в соответствии с новым размером окна. 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Ну, всё таки не все программы перерисовывают весь свой контент 20 раз в секунду.

А значит надо как-то уловить момент, когда перерисовать экран таки стоит.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Если некоторые программы не будут перерисовываться, их можно будет вручную рестартнуть нажав Ctrl+R

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Да, но такие программы должны слушать событие "screen_resized", чтобы сразу обновить свои переменные в соответствии с новым размером окна. 

 

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

 

К примеру, в QT это реализовывается так:

void MyMainWindow::resizeEvent(QResizeEvent* event)
{
   QMainWindow::resizeEvent(event);
   // Do something
}
Изменено пользователем ECS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нужно написать функции getComponent и freeComponent, которые будут разрешать коллизии компонент. ( когда два окна требуют одну и ту же компоненту )
Функции должны распределять компоненты одинакового типа между окнами. Например если есть 2 редстоун-адаптера и 2 окна потребовали компонент "redstone", то каждое окно должно получить свой редстоун-адаптер
 

local getComponent = function(window, componentType, componentAddress)
    --[[
window - это окно, которое потребовало компоненту
componentType - тип компоненты ( игнорировать GPU )
componentAddress - адрес требуемой компоненты
    ]]

    return componentProxy
end

local freeComponent = function(componentAddress)
    -- пометить компонент <componentAddress> как незанятый
    return nil
end
Изменено пользователем RccHD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

×