Перейти к содержимому


Фотография

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

WinOS

  • Закрытая тема Тема закрыта
Сообщений в теме: 142

#31 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 03 Сентябрь 2017 - 15:31

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


Сообщение отредактировал RccHD: 03 Сентябрь 2017 - 15:31

  • Alex и Totoro это нравится

#32 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 437
  • Уровень сигнала: 0,13%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 03 Сентябрь 2017 - 16:12

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

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

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



#33 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 03 Сентябрь 2017 - 16:43

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

 



#34 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 03 Сентябрь 2017 - 17:18

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

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



#35 Онлайн   LeshaInc

LeshaInc
  • Пользователи
  • Сообщений: 1 212
  • Уровень сигнала: 14,55%
  • В игре: 117 час. 41 мин.
  • ГородЛуна

Награды

                       

Отправлено 03 Сентябрь 2017 - 19:43

@RccHD, делай конфиг на Lua и переключение кнопками. 



#36 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 03 Сентябрь 2017 - 22:24

@RccHD, делай конфиг на Lua и переключение кнопками.


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

#37 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 03 Сентябрь 2017 - 22:34

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

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

#38 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 740
  • Уровень сигнала: 0,27%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 03 Сентябрь 2017 - 23:40

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


  • qwertyMAN это нравится

#39 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 04 Сентябрь 2017 - 00:06

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

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


  • qwertyMAN это нравится

#40 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 04 Сентябрь 2017 - 00:08

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

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

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



#41 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 910
  • Уровень сигнала: 6,17%
  • В игре: 49 час. 56 мин.

Награды

                          

Отправлено 04 Сентябрь 2017 - 00:33

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

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

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

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

#42 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 763
  • Уровень сигнала: 48,69%
  • В игре: 393 час. 44 мин.

Награды

                 

Отправлено 04 Сентябрь 2017 - 01:04

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

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

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


  • qwertyMAN это нравится

#43 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 759
  • Уровень сигнала: 4,5%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 04 Сентябрь 2017 - 01:13

....

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


  • qwertyMAN это нравится

#44 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 763
  • Уровень сигнала: 48,69%
  • В игре: 393 час. 44 мин.

Награды

                 

Отправлено 04 Сентябрь 2017 - 01:23

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

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


  • Totoro, eu_tomat и RccHD это нравится

#45 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 04 Сентябрь 2017 - 13:36

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

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

#46 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 04 Сентябрь 2017 - 20:35

Вот исходники.
https://github.com/R...ca278f0402/home
Скопировать в таком виде в папку /home. Реализовано примерно 50% необходимого функционала.
Все оптимизировать буду после того, как будет готов хоть немного доработанный вариант.

Рабочий скрипт: test1.lua(змейка, матрица и проч.)
Нерабочий -- test.lua(использует term, tty)
Чтобы закрыть программу нужно нажать backspace. Помогает не всегда

Сообщение отредактировал RccHD: 04 Сентябрь 2017 - 23:56

  • eu_tomat это нравится

#47 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 437
  • Уровень сигнала: 0,13%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 04 Сентябрь 2017 - 21:46

Вот исходники.
https://github.com/R...ca278f0402/home
Скопировать в таком виде в папку /home. Реализовано примерно 50% необходимого функционала.
Все оптимизировать буду после того, как будет готов хоть немного доработанный вариант.

Рабочий скрипт: test1.lua(змейка, матрица и проч.)
Нерабочий -- test.lua(использует term, tty)
Чтобы закрыть программу нужно нажать Q. Помогает не всегда

 

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

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

 

 

 

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

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

 

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


Сообщение отредактировал qwertyMAN: 04 Сентябрь 2017 - 21:47


#48 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 910
  • Уровень сигнала: 6,17%
  • В игре: 49 час. 56 мин.

Награды

                          

Отправлено 05 Сентябрь 2017 - 14:18

Вот исходники.
https://github.com/R...ca278f0402/home
Скопировать в таком виде в папку /home. Реализовано примерно 50% необходимого функционала.
Все оптимизировать буду после того, как будет готов хоть немного доработанный вариант.

Рабочий скрипт: test1.lua(змейка, матрица и проч.)
Нерабочий -- test.lua(использует term, tty)
Чтобы закрыть программу нужно нажать backspace. Помогает не всегда

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

#49 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 05 Сентябрь 2017 - 20:35

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



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

#50 Онлайн   LeshaInc

LeshaInc
  • Пользователи
  • Сообщений: 1 212
  • Уровень сигнала: 14,55%
  • В игре: 117 час. 41 мин.
  • ГородЛуна

Награды

                       

Отправлено 05 Сентябрь 2017 - 22:49

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



#51 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 05 Сентябрь 2017 - 23:23

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

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



#52 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 05 Сентябрь 2017 - 23:39

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

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



#53 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 06 Сентябрь 2017 - 00:59

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

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

Вот например если есть такой код, то придется перезапустить приложение, чтобы переменные соответствовали размеру окна:
local w, h = require("component").getPrimary("gpu").getResolution()

Сообщение отредактировал RccHD: 06 Сентябрь 2017 - 21:22


#54 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 740
  • Уровень сигнала: 0,27%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 06 Сентябрь 2017 - 01:04

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

 

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

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



#55 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 06 Сентябрь 2017 - 01:08

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

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

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

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



#56 Оффлайн   Seryoga

Seryoga
  • Пользователи
  • Сообщений: 108
  • Уровень сигнала: 0,32%
  • В игре: 2 час. 33 мин.
  • ГородSaint-Petersburg

Награды

        

Отправлено 07 Сентябрь 2017 - 09:17

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

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

#57 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 740
  • Уровень сигнала: 0,27%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 07 Сентябрь 2017 - 10:29

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

 

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

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


  • ECS это нравится

#58 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 07 Сентябрь 2017 - 10:52

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


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

#59 Оффлайн   ECS

ECS
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,52%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 07 Сентябрь 2017 - 13:11

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

 

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

void MyMainWindow::resizeEvent(QResizeEvent* event)
{
   QMainWindow::resizeEvent(event);
   // Do something
}

Сообщение отредактировал ECS: 07 Сентябрь 2017 - 13:15


#60 Оффлайн   RccHD

RccHD
  • Автор темы
  • Пользователи
  • Сообщений: 169
  • Уровень сигнала: 16,04%
  • В игре: 129 час. 42 мин.

Награды

           

Отправлено 07 Сентябрь 2017 - 22:05

Нужно написать функции 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: 07 Сентябрь 2017 - 22:14






Темы с аналогичным тегами WinOS

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных