LINUX.ORG.RU
ФорумTalks

Мышка в Линуксе

 


0

1

Объясните, что за хрень с копипастой в Линуксах. А конкретно в Гноме. Коллега вчера пытался скопировать пароль из midnight commander в целевую программу, и оно нихрена не выделялось мышкой, если не нажать shift? Посыл от коллеги был такой: это опять говны гнома, в КДЕ у меня такого не было.

★★★★★

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

Видимо речь идет про встроенный редактор mc?

Я предпочитаю отключать поддержку мыши в tui-программах (nvim, tmux и т.п.) и пользоваться функцией копирования, которую предоставляет сам терминал. Мышь в tui все равно работает всрато, а выделение/копирование терминалом – отлично.

В частности, надо запускать mc так mc --nomouse.

А вот когда в вендотерминале копирование/вставка работает через ПКМ – вы тоже тему создаете на каком-то форуме или это другое?

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

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

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

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

в моем понимании на десктопной системе должна быть унифицированная система копипасты, без шифтов.

Копипаста делается из полей ввода текста. Окно терминала - не поле ввода текста. Попробуй ещё тогда скопировать время из виджета на таскбаре теми же хоткеями, или заголовок какого-нить меню.

Шифт нужен как раз для того, чтобы эмулятор терминала наплевал на логику работы запущеного в нём софта (который, в случае mc, сам хочет работать с мышью), и переопределил мышь на выделение любого текста из него, в т.ч. служебного. Если это не делать, то в mcedit ты можешь выделить текст средствами mc, и скопировать его, но не в иксы (mc - консольная прога, про гуи буферы ничего не знает), а в его собственный буфер хоткеем ctrl+f.

firkax ★★★★★
()

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

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

Извини пожалуйста, я не понял, мне чисто уточнить, в твоём понимании если ты клацаешь мышкой на кнопку то должно отрабатываться нажатие кнопки а если ты клацаешь в текст то должен начинать выделяться текст? А как в твоём понимании должно обрабатываться нажатие в область псевдографики? Как перетаскивание или изменение размера области? А кто должен распознавать куда ты клацаешь, сам mc? Мне не для себя, товарищ интересуется.

sin_a ★★★★★
()

согласен, должно быть все нормально сделано, а не вот так

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

Область с текстом в эмуляторе терминала, где результаты вывода команд в stdout - это считай большой label или text edit. Вот и всё.

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

То есть, ты полагаешь что мышкой по кнопкам управлять в mc не нужно? Не то, что бы я был не согласен, но, как минимум, некоторые считают иначе. Потому что в mc уже есть возможность нажимать кнопки мышкой.

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

Им кто-то ещё не пользуется?!

Я не пользуюсь. В нулевых пользовался, но где-то лет 15 назад перешёл на vifm.

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

нет, в данном случае я матёрый линуксоид, а виндузятник - коллега

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

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

ya-betmen ★★★★★
()
Ответ на: комментарий от seiken

Область с текстом в эмуляторе терминала, где результаты вывода команд в stdout - это считай большой label или text edit.

Ты не угадал. Окно терминала - это одна большая кнопка, тычки в нее передаются консольной программе, эта же программа рисует в ответ текст на этой кнопке. Вот и всё.

chuzhoi
()
Ответ на: комментарий от Bfgeshka

Была выбрана ванильная убунта, как самый стабильный, пусть и хреновый с т.з. UI/UX варик.

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

ванильная убунта, как самый стабильный

Ты сделал мой день! Держи клоуна «в хорошем смысле». Я реально оценил шутку, а не хочу как-то обидеть :)

CrX ★★★★★
()

Объясните, что за хрень с копипастой в Линуксах. А конкретно в Гноме. Коллега вчера пытался скопировать пароль из midnight commander в целевую программу, и оно нихрена не выделялось мышкой, если не нажать shift?

Gentoo, KDE, X Window, Konsole. Если тыкать мышью в MC без шифта, выделяется средствами MC, если с шифтом — выделяется средствами эмулятора терминала. У меня не настроено взаимодействие MC и X Window, поэтому выделяю только с шифтом.

Дуалбутом не пользуюсь с 2008 года.

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

должна быть

Кому должна?

на десктопной системе

Пользуйся графическими файловыми менеджерами.

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

Коллега вчера пытался скопировать пароль из midnight commander в целевую программу, и оно нихрена не выделялось мышкой, если не нажать shift?

И не должно было.

Все эти «возможности» должны быть гомогенно интегрированы в десктопное окружение.

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

«Проблема не возможности выделить» связана с конфликтом интересов.

Пример 1.

Запустили mc и правой кнопкой мыши можем выделять файлы.

Почему?

  • mc запустили.
  • mc отправило сообщение эмулятору терминала, что оно хочет использовать мышь.
  • эмулятор терминала переключается в режим перенаправления события нажатия клавиш мыши в stdin mc.
  • mc при завершении работы «отвязывается» от мыши.
  • эмулятор терминала выходит из режима перенаправления события нажатия клавиш мыши в stdin mc.

Пример 2.

  • Открываем любимый терминал.
  • Выполняем: echo -e "\033[?1000h"
  • Нажимаем мышкой в разных местах экрана. И видим «мусор» в строке ввода.
  • Пытаемся что либо выделить. И видим «мусор» в строке ввода.
  • Используем Shift при нажатии на кнопки мыши. Можем выделить и вызвать контекстное меню.
  • Выполняем: echo -e "\033[?1000l"
  • Проверяем что всё вернулось на круги своя.

Итог про мышь

Эмулятор терминала может находится в двух режимах.

  1. Прямой обработке событий мыши.
  2. Перенаправление событий мыши в приложение.

Во втором режиме, если надо что бы события мыши обработал «эмулятор терминал», то используем Shift.

Когда мы хотим «выделить и скопировать текст» в эмуляторе терминала, то чаще это означает: «эй товарищ терминал, у тебя тут сейчас есть состояние тестового вывода, я хочу выделить кусочек и скопировать себе». Т.е. мы взаимодействуем не с приложением а с терминалом.

Через одно графическое окно мы взаимодействуем с двумя программами:

  1. консольное приложение,
  2. эмулятор терминала.

И надо найти компромисс как обрабатывать события от мыши. Например:

  • shift + ЛКМ - обрабатывает эмулятор терминала.
  • ЛКМ - обрабатывается в зависимости от режима эмулятора терминала.

Про буфер обмена.

Тут отдельная песня. Как правило, мы работаем с двумя буферами обмена X11 сессии primary и clipboard. В первый попадает выделение текста, во второй при Ctrl+C.

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

Ещё раз. Буферы обмена - это сущности X11 сессии.

Пример 3.

  • На удалённом сервере ставим vim собранный с поддержкой clipboard: sudo apt install vim-gtk3.
  • Проверяем:
$ for v in /usr/bin/vim\.*;  do echo "$v"; $v --version | grep clipboard;  done
/usr/bin/vim.basic
-clipboard         +keymap            +printer           +vertsplit
+ex_extra          +mouse_netterm     +syntax            -xterm_clipboard
/usr/bin/vim.gtk3
+clipboard         +keymap            +printer           +vertsplit
+ex_extra          +mouse_netterm     +syntax            +xterm_clipboard
/usr/bin/vim.tiny
-clipboard         -keymap            -profile           +vim9script
-eval              -mouse_jsbterm     -syntax            -xterm_clipboard
  • Подключаемся к удалённому серверу как ssh -X user@host
  • Проверяем выделение и копирование через " + y.
  • Проверяем в любом графическом приложении содержимое буфера обмена.
AlexVR ★★★★★
()
Последнее исправление: AlexVR (всего исправлений: 1)

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

  • Запускаем mc.
  • Используя только ЛКМ и колёсико мыши найти нужный файл.
  • Используя Shift+ЛКМ выделить имя файла.
  • Используя Shift+ПКМ вызвать контекстное меню и скопировать выделенный текст.
AlexVR ★★★★★
()

С шифтом - работает выделение\копирование(копирование выделенного с shift обычно по ctrl-shift-c в дальнейшем) терминала, а без шифта - программы, в которой оно может быть не предусмотрено. И это хорошо, можно копировать средствами терминала, даже там, где это не предусмотрено программой.

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

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

Это интересно только для кастомных систем типа эмбеддед. И для копро-исторических архитектура ля ЮНИКС. В десктопный системах давно надо было уже графику втащить в ядро.

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

Это интересно только для кастомных систем типа эмбеддед. И для копро-исторических архитектура ля ЮНИКС. В десктопный системах давно надо было уже графику втащить в ядро.

Это как? Нифига не понял.

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

Не должно быть различия в десктопных системах между «терминальное приложение» и «графическое приложение».

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

Не должно быть различия в десктопных системах между «терминальное приложение» и «графическое приложение».

Это ещё почему?

Не нравиться поведение mcedit замени его на nvim. Или сделай форк и интегрируй его в X-ы.

Давай ещё скажи, что консольные приложения должны открывать системное меню выбора файла для открытия/сохранения.

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

Давай ещё скажи, что консольные приложения должны открывать системное меню выбора файла для открытия/сохранения.

А почему бы и нет? Автопополнение во всяких шеллах - тормозное, слабо масштабируемое говнище. Работает быстро и без проблем только на локалхосте под управлением опенбсд, в системе, в которой и так ничего нет.

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

А почему бы и нет?

Ну тогда пиши такой софт. У других другое мнение. И если они пишут софт под эмулятор терминала, то это их мнение и дело. А если не нравится поведение эмулятора терминала, то напиши свой (или поищи альтернативы подходящие под тебя). А пока все твои наезды говорят об неумении работать с эмулятором терминала.

Автопополнение во всяких шеллах - тормозное, слабо масштабируемое говнище.

Это тут при чём? УМВР.

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

Ну в проге просто заняты кнопки CONTROL C, CONTROL V. Для консистентности можно пользоваться CONTROL INSERT/SHIFT INSERT.

А если ты с наездом, что линукс не нормальный, а «вот в винде», то посмотри как сделано там или в маке - точно так же. В cmd копировать, насколько я помню, это вообще Enter

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

В десктопный системах давно надо было уже графику втащить в ядро.

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

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

Предлагаешь делать разные ядра для систем с графикой и без?

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

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

Ну раз тебе надо - сам разрабатывай десктопное ядро со встроенной графикой.

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

Не должно быть различия в десктопных системах между «терминальное приложение» и «графическое приложение».

А где грань между десктопной и недесктопной системой? kubectl - это десктопная или недесктопная утилита?

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

Грань создаётся разработчиками десктопной ОС и разработчиками ПО для неё. kubectl - это огрызок интерфейса, которые в *никсах лепили, когда люди знали только сишку и немножечко Фортрана, программисты различались по узким специализациям, а написание гуя было очень сложно и непонятно для среднестатистического юниксоида. К тому же, написание приложения с гуем, требовало навыков разработки и софт скиллов гораздо выше, чем системное программирование. Потому что придумать удобный UI/UX, исходя из того, как реально софт будет использоваться пользователями - это вам не прерывания надрачивать, и даже не кроличьи очереди перебирать.

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

Ну а какие варианты? В большинстве случаев дёргается консольная утилита. Какие ещё альтернативы есть?

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

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

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

В десктопный системах давно надо было уже графику втащить в ядро.

Не надо ничего дополнительно втаскивать. И так всё что надо есть. Необходимое для ускорения работы в ядре и так, остальное покрывают mesa, x11, wayland, DE, ….

Потому что придумать удобный UI/UX, исходя из того, как реально софт будет использоваться пользователями - это вам не прерывания надрачивать, и даже не кроличьи очереди перебирать.

«удобный UI/UX» для разных людей свой.

И именно поэтому «выделение мышью» в разных консольных программах через эмулятор терминала работает по разному.

Ты сам то готов ответить, какой вариант предпочтителен:

  • nano
  • mcedit
  • vim.basic
  • vim.gtk3
  • nvim

Только сам протестируй каждый вариант, а не набрасывай говна на всё подряд. А то у тебя: «гном фигня, в KDE не так» без всякой проверки истинности.

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

Ты сам то готов ответить, какой вариант предпочтителен:

Это всё консольное говно мамонта. На помойку истории.

seiken ★★★★★
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)