Представлен релиз Tcl/Tk 8.6.10, динамического языка программирования, распространяемого совместно с кроссплатформенной библиотекой базовых элементов графического интерфейса. Несмотря на то, что основное распространение Tcl получил для создания интерфейсов пользователя и как встраиваемый язык, Tcl также подходит для других задач, таких как web-разработка, создание сетевых приложений, администрирование систем и тестирование...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=51916
А новой версии Tkabber'a уж не предвещается?
нет
https://chiselapp.com/user/sgolovan/repository/tkabber/timeline
> нет
> https://chiselapp.com/user/sgolovan/repository/tkabber/timelineУх. Может стоит собрать ребят да подтянуть до, хотя бы, нового релиза
Любимая библиотека построения гуя, хоть и малофункциональная. Главный плюс — гуевое приложение не требует кучи отдельных файлов и компиляции, как в случае с Qt, а может быть хоть однострочной частью шелл-скрипта:
wish <(echo 'button .b -text "Hello world!" -command exit; pack .b')
> гуевое приложение не требует кучи отдельных файловСоберите Qt / GTK (любой другой тулкит) в static.
И да, интересно как TkTcl не требует кучи других либ? Через что он по вашему это все отрисовывает?
Я бы посмотрел на тебя как ты в статик пакуешь GTK для винды. Там как минимум 500 файлов значков Adwaita. Хуже наверное только приложения на PyGTK, к файлам значкам добавляется пару тысяч файлов дистрибутива пистон.
>Я бы посмотрел на тебя как ты в статик пакуешь GTK для винды. Там как минимум 500 файлов значков Adwaita. Хуже наверное только приложения на PyGTK, к файлам значкам добавляется пару тысяч файлов дистрибутива пистон.Куда уж другим фреймворкам до Electron с его ~1Gb барахла.
>Electron с его ~1Gb барахла.Брехня
70-150МБ. А ещё учти лёгкость переноса и упаковки приложений на электроне.
И пожирание памяти под 2 4 6 гб
А также пожирание процесора даже при простом клике мыши внутри окна
> Соберите Qt / GTK (любой другой тулкит) в static.Тогда получится огромный бинарный блоб, который невозможно ни посмотреть, ни отредактировать, и на котором придётся писать всё. Фу.
> И да, интересно как TkTcl не требует кучи других либ?
Они все ставятся из репозитория одной командой вроде
apt install tk
И да, прошу предъявить пример подобного однострочника на шелле с хелловорлдом средствами Qt / GTK.К выбору Tk на эту роль я не сразу пришёл, а сначала исследовал Qt с его новомодным QtQuick. Целью было найти средство построения гуя, которое позволяет запихнуть программу полностью в короткий человекочитаемый скрипт, для чего Qt не подошёл совсем, а Tk оказался практически идеален.
Вдобавок, написанное на Qt / GTK приложение придётся через 10 лет либо выкидывать, либо переписывать на новой версии фреймворка, в то время как Tk чуть ли не с 80-х совместимость не дропает.
> в то время как Tk чуть ли не с 80-х совместимость не дропает.За что и респект.
Мне Clojure поэтому зашел. 12 лет языку, а совместимость не сломали.
> огромный бинарный блобЕщё и для каждой платформы на каждой архитектуре свой, в то время как скрипт на Tcl/Tk кроссплатформен (в т.ч. на windows можно поставить интерпретатор, к нему привяжется расширение .wish и программы на нём станут исполнимы даблкликом).
>на windows можно поставить интерпретаторвот именно, бинарный блоб тем и хорош, что пользователю не надо лишних телодвижений.
DirectX ставили, Visual C++ Redistributable ставили, дотнет ставили, так же и Tk ставят. В этом куда меньше телодвижений, чем для огранизации кросс-компиляции под их платформу мне, да и поддерживать этот огромный статический бинарь с периодически вылезающими уязвимостями не надо — пользователь сам может обновить библиотеку.
На tcl/tk вполне себе можно сделать тот самый "бинарный блоб" со всем чем надо внутре, включая библиотеки и интерпретатор.
Наверное, просто достаточно запаковать прогамму в архив вместе с wish.exe (или что там у него) и маленьким эксешником (runme.exe). Всё кроме экзешника, и чего ещё там надо - спрятать по подподпапкам, чтобы не запускали wish и т.п.
Ну и runme.exe будет запускать .\runtime\tcl\wish.exe (или не wish) с параметром .\coll_program\runme.tcl
> Наверное, просто достаточно запаковать прогамму в архив вместе с wish.exe (или что
> там у него) и маленьким эксешником (runme.exe). Всё кроме экзешника, и
> чего ещё там надо - спрятать по подподпапкам, чтобы не запускали
> wish и т.п.
> Ну и runme.exe будет запускать .\runtime\tcl\wish.exe (или не wish) с параметром .\coll_program\runme.tclhttps://wiki.tcl-lang.org/page/How+to+compile+a+TCL+script+i...
> Они все ставятся из репозитория одной командой вродеА когда это Gtk / Qt начали ставится не одной командой? У Tk (FreeType, пачка X'овых либ, zlib и т.д.) тоже зависимости есть и у зависимостей есть зависимости.
А толку от установленных GTK/Qt? Устанавливай — не устанавливай, а возможности писать однострочники всё равно не будет.Для самых примитивных случаев, правда, есть zenity и kdialog, упомянутый выше хелловорлд они реализовать смогут, но накидать в окно произвольных виджетов с их помощью не получится.
>но накидать в окно произвольных виджетов с их помощью не получитсяДа легко: https://sanana.kiev.ua/index.php/yad
Это как надо упороться, что бы на баше писать такое. Нечитабельно от слова сосвем.
> yadСпасибо, эти ущербные zenity и kdialog теперь даже не вспомню. Но Tk оно не заменит, т.к. не позволяет программировать интерактив.
У вас требования растут по часам :)
Ну так я ищу инструменты для широкого круга задач, а не для рисования хелловордов из разных виджетов. Yad — штука полезная, но область её применения ограничена созданием отдельных диалоговых окон, действия с содержимым которых программа может произвести только по факту их закрытия, что несколько не дотягивает до указанного в первом посте ветки понятия «гуевое приложение».
> Да легко: https://sanana.kiev.ua/index.php/yadYAD, потому что слово AD было уже занято.
Как правило, гуевые приложения ставят между пользователем и программистом огромную стену, чаще всего непреодолимую: чтобы пользователь смог что-то изменить в гуевом приложении на распространённых фреймворках (будь то хоть GTK+, хоть Qt, хоть win32 api, хоть Electron), ему нужно где-то взять исходники, установить и настроить среду для сборки и зависимости и научиться всё это компилировать. Причём некоторые из этих шагов могут быть как неочевидны, так и вообще невозможны (закрытые исходники).Фреймворк Tk позволяет обойтись без этой стены. Программы на нём в готовом виде представляют из себя исходный код, нередко одним файлом, который пользователь может открыть текстовым редактором и поправить или дописать нужным ему образом, после чего без лишних телодвижений запустить.
жаль что он не знает tcl, поэтому на самом деле - из вашего списка может только первое - открыть.На то он и "пользователь".
А разработчики или админы, умеющие tcl, давно вымерли как мамонты.
Когда я был молодым и зелёным, то тоже не знал Tcl, но это не мешало мне править существующие и писать по аналогии новые скрипты на irc-бота eggdrop. Главное чтобы возможность была на поверхности, а пытливый ум, который её обнаружит и реализует, найдётся.«Пользователь» — это вообще ущербный оператор компьютера, недоученный. Полноценный оператор называется программистом, и мешать пользователю становиться программистом, предоставляя ему вместо софта лишь кучу бинарных блобов, особенно закрытых — преступление.
Да ладно? Самое странное место, где я встретил TCL, было редактор сейвов для котора. Вполне себе редактировался пользователем, то есть мной.
>Фреймворк Tk позволяет обойтись без этой стены. Программы на нём в готовом виде представляют из себя исходный кодQML
Спасибо, это именно то, что я тогда искал. Но теперь мне кажется, что это даже к лучшему, что тогда я его не нашёл и приспособил сабж.
У Столлмана, говорят, жутко бомбило с Tcl вообще и с господина Остераута в частности
"Значит хорошие сапоги. Надо брать".
Это когда Столлман топил за консольку? Столлман известный флюгер, только вращается в след за своими сектантами, а не общественным мнением.
Путь пользователей усеян злодеяниями проприетарщиков. Блажен тот, кто именем доброй воли показывает, как пастырь, несчастным и слабым путь к свободному ПО, ибо он и есть истинный пастырь.
Столлману не нравилось, что Tcl продвигали в качестве стандартного языка расширений, потому что расширения сами могут быть большими и сложными программами, и для их разработки нужен полноценный язык программирования (Столлман предложил Лисп), а не ограниченный скриптовый язык (Столлман указал на конкретные ограничения Tcl): https://groups.google.com/forum/#!msg/comp.lang.tcl/7JXGt-Ux...Не знаю, насколько Tcl развился с тех пор, и актуальны ли сегодня замечания Столлмана.
Вы этот срач читали? Там ОП наклали полную панамку уже в первом десятке ответов. Обоснованно.
Читал, и вы дальше этого десятка прочитайте.
Ричарду бы понять, что лисп -- это не всегда гвоздь от _этой_ стены...// если что, начинал с того финского двухтомника;
// Остерхута себе тоже на матричнике ещё распечатывал
У меня всегда лицо дергается, когда я вижу что-то на Tk.
Из-за отсутствия градиентов на кнопках?
Гуй изначально имитирует физические объекты (кнопки, вкладки), Tk тут не особо старается. Про градиенты - к кдешникам))
> Гуй изначально имитирует физические объектыА языки программирования имитируют человеческие языки. В той же мере. Вопрос: становятся ли языки программирования от более точной имитации человеческих удобнее и эффективнее, и есть ли вообще смысл в эту сторону стремиться?
Мой ответ на этот вопрос — однозначное нет. Удобнее всего языки, которые позволяют проще и эффективнее описывать задачи. Языки, заточенные под описание задач определённого класса, имеют преимущество перед неспециализированными, а задача передачи информации между людьми сильно отличается от задачи настройки (программирования) машины, по крайней мере на текущем этапе развития машин.
С гуем та же история. От того, что надпись "<DIR>" превратилась в изображение жёлтой папки, эффективность работы интерфейса не увеличилась, увеличилось только количество потраченных машинных ресурсов на его реализацию.
Смежный проект Androwish (http://www.androwish.org/) ставит целью запуск скриптов без изменений, либо с минимальными изменениями на android. Вполне рабочий вариант, если нет желания или возможности устанавливать интерпретатор с библиотеками, т.к. уже включает батарейки.
Помимо того, что tcl сам по себе весьма портабельный, так теперь сделать еще проще в том числе и для погремушек. Как для приложений может и под вопросом, а в качестве изоленты -- вполне себе.
Да, я прошерстил AndroWish. Замечательная штука. Даже бинарники позволяет запускать. Мой проект на Android с Androwish можно посмотреть здесь https://habr.com/ru/post/492110/
Как там с полноценной поддержкой hidpi, пилят аль нет?В 8.6.8 приложения в hidpi окружении выглядят так, что просто туши свет.
Замечу, даже gimp на древнем gtk2 (пусть и с пачкой хаков) абсолютно юзабелен в hidpi .
Я понимаю, что поддержка emoji, улучшать отрисовку на macOS и добавлять нескучные обои это весело, модно и молодежно, а hidpi это скучно и никто над этим работать не хочет (тем более что судя по https://wiki.tcl-lang.org/page/High+Resolution+Displays и предложениям добавлять хаки типа "установить шрифт в два раза крупнее" в конечные приложения, работы там вагон, а еще и конь не валялся). Но, может, если они хотят, чтобы этим кто-то продолжал пользоваться, они что-нибудь сделают насчет hidpi на линуксе? А не только темную тему для мак оси???
> Как там с полноценной поддержкой hidpiВсегда была нативная, Xlib же. С восьмидесятых годов, вероятно.
for dpi in 48 75 96 120 160 320; do xrandr --output LVDS1 --dpi $dpi && wish <(echo "button .b -text {$dpi dpi}; pack .b") &; sleep 0.1; done
https://imgur.com/a/YHpHCkl
Вы, пожалуйста, не кнопку так покажите, а, к примеру, tkabber. Применить scale к кнопке изнутри приложения можно даже в Gtk+ 1 20-ти летней давности.
> tkabberОтлично скейлит интерфейс, разве что кроме пиктограмм на тулбаре. Проблем не обнаружил.
> изнутри приложения
Не изнутри приложения, а в параметрах монитора сессии X11 (которые управляются посредством xrandr). Изнутри приложения в этом примере меняется только текст кнопки.
> можно даже в Gtk+ 1
Можно, да. Это не win32 api, где виджеты прибиваются гвоздями к пиксельной сетке и от увеличения шрифтов перестают вмещать надписи.
я давно эту тк-ашную парашу вычистил дустом, но всё-таки обнаружил gitk (который прилетает внутри пакета с самим гитом)пруфы заскейленого gitk и git gui -- или балабол
лучший тулкит, ящитаю - легковесный и с логичным синтаксисом. Жаль только что не завезли возможность мимикрировать внешний вид под темы других тулкитов (как с qt через kvantum, например)
>Жаль только что не завезли возможность мимикрировать внешний вид под темы других тулкитов (как с qt через kvantum, например)Было. Никто не заметил и ушло в историю.
Попсовые тулкиты слишком быстро дропают совместимость со старыми версиями, чтобы на них что-то могло остаться.
> Попсовые тулкиты слишком быстро дропают совместимость со старыми версиями, чтобы на них
> что-то могло остаться.На WinAPI надо писать. У ней вся Винда тулкитом.
Tk имеет на нём бэкенд, и выглядит он вполне себе нативно.
значит, если запускать через wine-staging -- можно получить интеграцию с GTK3 темами ^__^
ничего там не мимикрирует, там тупо захардкожена Adwaita, может еще пара темв основном причина в заднепроходных гномодизайнерах, которые принципиально против документирование StyleContext-а в GTK3, как часть их внутренней кампании против тем -- чтобы больше людей были вынуждены наслаждаться их state of art дизайном
а ковыряться в исходниках, зная что это незадокументированное АПИ и в следующей версии запросто может быть всё переименовано -- никто адекватный не будет
если открыть код фуррифокса или хрома по интеграции с ГТК3 -- там просто полный пи³дец, мне кажется писать его -- было наказанием для часто-опаздывающих в офис работников или за какие другие трудовые провинности
Приложение на Android - https://habr.com/ru/post/482574/