LINUX.ORG.RU

Концепт: пул gui-приложений

 , , ,


1

2

Вот есть в Гайке из коробки возможность собирать окна приложений в единое окно с возможностью вкладок.Есть ещё какая-то прога глючная не помню как звать, написанная на electron js вроде только под маздай работает, которая делает нечто подобное. Наверняка есть такое и в гнутом мире. А если пойти ещё дальше? Сохранить такое объединение в файл и потом в том файле сделать связку между приложениями? Есть, допустим типа проводник слева компактно и есть текстовый редактор. Перехватывать системный вызовов проводника открыть текстовый файл чтобы этот файл открывался в новой вкладке основной части. Это ж маленькая IDE. Вообще есть же принцип unix-философии, что одна программа должна решать одну задачу, но всеобъемлюще, а комплексные задачи решать через конвейер программ. Но это консольный мир. А в гуевом мире программы превратились в жутких монстров.

Перехватывать системный вызовов проводника открыть текстовый файл чтобы этот файл открывался в новой вкладке основной части. Это ж маленькая IDE.

Как же некоторым людям от жизни мало надо. Херак-херак, и вот уже IDE!

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

Наверняка есть такое и в гнутом мире

Такое когда-то было в KDE: https://arstechnica.com/information-technology/2009/12/hands-on-window-management-gets-better-in-kde-sc-44-beta-1/ (смотреть после «Window grouping features can be accessed by right-clicking on the titlebar of a window.»). Но к сожалению видимо не смогли портировать при переходе на следующую версию.

X512 ★★★★★
()

Вообще есть же принцип unix-философии, что одна программа должна решать одну задачу, но всеобъемлюще

Я одну тему сейчас искал, но пока искал нашел вот эту ссылку. Будем считать этот лулзом на тему модульности: Новый диалог открытия файлов GNOME

А нужную тему щас найду всё-таки….

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

Это вполне может работать как полноценное IDE если процессы редактора кода, менеждера проекта, отладчика будут обмениваться сообщениями друг с другом. IDE – это не обязательно огромная монолитная программа. Для примера можно посмотреть на BeIDE в BeOS.

X512 ★★★★★
()

А если пойти ещё дальше?

Во, нашел нужную ссылку.

Если пойти дальше, то эти костыли нафиг не нужны были бы, если бы можно было получать расширенную информацию от приложений на уровне обвязки рабочего стола (WM/DE/или что там у вас).

Вот такую штуку я пытался сделать: О пользе хоткеев и межпрограммном взаимодействии

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

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

Также еще по теме: О развитии GUI

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

Это не будет работать как целое, это будет гора глюков, костылей и подпорок.

Это работало бы только при условии, что существуют отдельные, независящие от политики использования протоколы доступа к данным, и эти протоколы доступны с уровня DE. И политиками рулит DE.

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

От DE там не много надо. Протокол группировки окон в Haiku уже есть. Аналогичний протокол можно и в Wayland добавить. А протоколы обмена данными между редактором кода, менеджером проекта и т.д. можно стандартизировать в рамках одного комплекса. Так что не всякий редактор кода будет подходить, а только тот, который поддерживает комплекс протоколов.

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

если процессы редактора кода, менеждера проекта, отладчика будут обмениваться сообщениями друг с другом

Если всё это вместе грамотно соединить, чтобы оно реально работало, то это перестанет быть быть «набором приложений» и станет отдельным самостоятельным приложением. Со своей репой, багтрекером и собственными вопросами юзабилити.

wandrien ★★
()

Это ж маленькая IDE. Вообще есть же принцип unix-философии, что одна программа должна решать одну задачу, но всеобъемлюще, а комплексные задачи решать через конвейер программ.

Да, в своё время пользовался Haiku и там есть «приложения-оркестраторы», которые объединяют стандартные системные компоненты по типу Terminal’а, файлового менеджера и продвинутого кодерского текстового редактора «Pe» в сущности подобные IDE:

Было довольно удобно собирать из этих окошек «фокус-группу», чтобы быстро решать какие-то задачи. Конечно это не «серебряная пуля», но иногда объединить пару-тройку окон и создать себе единое «рабочее пространство» вполне практично.

Меня больше интересует то, что в UNIX-like окружениях, особенно всяких коммерческих по типу CDE, разработчики которых вечно преисполнялись снобизмом и UNIX-Way напыщенностью, так вот, они рождали неюзабельный и убогий кал или копировали винду, тогда как чисто десктопная Haiku смогла немного вобрать в себя принцип UNIX-философии «пишите программы, которые бы работали вместе» причём именно в GUI.

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

Своя репа там нужна в первую очередь для описания протоколов по типу wayland-protocols, а конкретные приложения уже могут заявлять о поддержке этих протоколов и ролей.

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

Слушай, я вот смотрел на твой скриншот и внезапно родил мысль…

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

Собственно мысль появилась глядя на выхлоп cmake на скриншоте)

wandrien ★★
()

Сохранить такое объединение в файл и потом в том файле сделать связку между приложениями

sfm.

Это ж маленькая IDE

Нет, тут просто из программы вызывается другая программа. Например в surf нет своего собственного обработчика вкладок, для этого используется tabbed. Также тут нет своего собственного загрузчика, используется aria2. И в некоторых ситуациях это показывает лучше чем огромные программы, где есть все сразу.

vbcnthfkmnth123 ★★★★★
()

Всё это было сделано без костылей в Plan 9.

Буквально: открываешь окно, в котором работает новый инстанс WM. В нём программы работают изолированно от родительского гуя.

Сами программы про это вообще ничего не знают.

kaldeon
()
Последнее исправление: kaldeon (всего исправлений: 4)

Вот есть в Гайке из коробки возможность собирать окна приложений в единое окно с возможностью вкладок.

Это так везде можно, и в иксах, и даже в оффтопике.

Есть ещё какая-то прога глючная не помню как звать, написанная на electron js вроде только под маздай работает, которая делает нечто подобное

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

firkax ★★★★★
()

Группировка и прикрепление

Пользовательский интерфейс Haiku имеет уникальную особенность, использующую наличие у окон желтого заголовка вместо соответствующей панели на всю ширину окна. Она называется «Группировка и прикрепление». Пример ниже демонстрирует окно Tracker с закладками, прикрепленное к окну WebPositive, которое, в свою очередь, сгруппировано с другим окном Tracker, отображающим содержимое папки с исходным кодом haiku. В этой анимации пользователь кликает по заголовкам, чтобы вывести то или иное окно на передний план.

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

Расположить окна нужным образом легко: перемещая окно за заголовок, зажмите клавишу OPT, поднесите его к границе или заголовку другого окна, пока оно не подсветится, и отпустите кнопку мыши.

«Группировка и прикрепление» состоит из двух связанных опций.

«Группировка» - накладывание окон одно на другое с автоматическим изменением расположения их заголовков. Если зажать клавиши OPT, заголовки изменяют свой цвет при накладывании одного на другой. Отпустите удерживаемое окно на размещенное под ним для группировки.

«Прикрепление» означает «склеивание» окон друг с другом горизонтально или вертикально. Опять же, при удержании нажатой клавиши OPT рамки окон, которые служат местом прикрепления, меняют свой цвет, когда их границы почти соприкасаются.

Разделение работает аналогичным образом: при зажатой клавише OPT заголовок захватывается курсором и вместе с окном отделяется от группы.

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

А как в нем размер таба рассчитывается? Зависимость от содержимого /текста/ есть? В Haiku сделано ровно для всех приложений - Qt5 Qt6 java GTK3 и тд.

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

А есть возможность такие связки сохранять в файл чтобы потом запускать? А ещё круче скриптягу типа

$fileman=exe('tracker')
$etabs =[]
$etabs.add(exe('pe').attach($fileman,$__horizontal))
fileman.listen(handler($e){
	If($e.query eq "exec $file"){
		If($etabs.len==1)
			$etabs.replace(0,exe('pe --src '.$file))
		Else
			$etabs.append(exe('pe --src '.$file).attach($etabs.last(),$__tab))
}
})
dwarfadelic
() автор топика

Пользуясь случаем, поскольку в теме упоминается Хайка, хочу спросить; нет ли в Линуксах чего-то подобного. Подробный пример
Что-то вроде возможности добавлять к произвольным файлам свои «метки», чтобы потом найти их по этим «меткам».

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

Такого конечно нету, это ж надо тегировать вывод, что вот этот символ - часть вот этой сущности. Зачатки наверное есть в powershell и новых утилитах, позволяющих вывод в json.

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

это ж надо тегировать вывод, что вот этот символ - часть вот этой сущности

Это не проблема. Терминал управляется esc-последовательностями. Добавить выдачу пары нужных последовательностей в приложение или скрипт – легко.

А вот что никто не написал эмулятор терминала с такой фичей – это уже сложнее. Самому браться за патчинг какого-нибуль эмулятора я сейчас не хочу.

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

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

А есть такой протокол, чтобы сказать терминалу «вот от сих до сих буковки - это имя файла, так что когда пользователь щелкает сюда, запускай программу

Ага. Имеется. Называется «машинное обучение». Это когда у кого-то от бабла лопаются карманы, он выдумывает хрень, обзывает её ИИ, нанимает народ, который «обучает этот ИИ» - суть набивалки соответствий. По результатам всех этих действий должно произойти такое событие: пользлватель выделяет в терминале слово «срака», а в третьем окне справа от текущего терминала появляется картинка сраки. В других окнах появляются толкования слова, варианты использования слова, варианты применения объекта, описываемого словом, ссылки там всякие на всевозможные видосики по теме. Разумеется, весь этот ИИ работает хорошо, и пользователю грустить не приходится. И всё это не ограничивается только одним словом. Протокол машинного обучения допускает обработку и текстов. Лишь бы бабла хватило на этот протокол.

anonymous
()