Установить заголовок панели tmux на определяемый пользователем, если он существует, иначе текущий рабочий файл или каталог.

Я также часто использовал затвор, чтобы делать и легко переименовывать снимки экрана, и мне было грустно видеть, как Wayland сломал его в Fedora 27.

gnome -screenshot — довольно полезная утилита для создания скриншотов в Fedora -wayland. Его можно довольно легко использовать для создания обходного пути для Shutter в Wayland следующим образом:

1 )Создайте сценарии Shut.sh и Grabname.sh, как указано в приложении.

2 )сделать их исполняемыми (chmod +x )и сохранить их в существующем командном пути, чтобы их можно было вызывать из командной строки, например. в /usr/бен. Я обычно сохраняю свои пользовательские сценарии в /usr/local/bin, но это нужно добавить к пути по умолчанию с помощью visudo.

3 )Теперь при запуске Shut.sh появится курсор. Используйте его, чтобы нарисовать прямоугольник, и появится всплывающее окно терминала с запросом имени для вашего нового файла (grabname.sh ). Вы можете использовать пробелы в имени файла. Затем он спросит вас, хотите ли вы добавить к файлу префикс yyyymmdd (y ). Нажмите «Ввод» или что-нибудь еще, чтобы пропустить префикс.

4 )Ваш переименованный файл сохранен в /my/temp/location

5 )Сохраните это как Shut.sh:

#!/bin/sh

# START shut.sh

# This script calls gnome-screen shot in Wayland to take a rectangular     screenshot
# resulting png is saved to /my/temp/location
# script then calls a second script (grabname.sh) which asks you for a filename to give the grab with the option to prefix current date if you want
# make sure both scripts are in a relevant executable path for your kernel eg. /usr/bin etc.
# You can allocate shut.sh to a hot key in settings and make screengrabs via a hotkey.

gnome-screenshot -a -f /my/temp/location/grabcache.png

gnome-terminal -e "bash grabname.sh"

# END shut.sh

имя захвата.sh

#!/bin/sh

# START grabname.sh

# Previous script shut.sh calls gnome-screen shot in Wayland to take a rectangular screenshot
# resulting png is saved to /my/temp/location
# This script (grabname.sh) asks you for a filename to give the grab with the option to prefix current date if you want
#  * spaces are allowed in filenames *
# make sure both scripts are in a relevant executable path for your kernel eg. /usr/bin etc.

# set -x

IFS=$'\n'

read -p "Name for grab? " grab

while true; do

    read -p "Append date yyyymmdd (y or anything else for no) ?" yn

    case $yn in
        [Yy]* ) ap=$(date +%Y%m%d_%H%M_)
        break;;

    * ) echo -e "\n\e[0;34mNot prefixing date...\e[0m\n"; ap="";break;;
    esac
done

echo $ap$grab

cp /my/temp/location/grabcache.png /my/temp/location/"$ap$grab".png

nautilus /my/temp/location

# END grabname.sh 
3
28.01.2020, 23:09
2 ответа

Я не уверен, что смогу ответить на все ваши вопросы, но я могу попытаться ответить на несколько вопросов.

У меня в конфиге есть это чудовище:

setw -g pane-border-format ' #{=/-20/…:pane_title} [#{=/-20/…:pane_current_command}] #(pgrep -P "#{pane_pid}" | tr "\n" " ")#{pane_current_path} #{?alternate_on,<Alt Mode>,}'

(Некоторые из них могут зависеть от функций tmux ~3.1)

использование setw -gвместо set -gможет заставить его работать для вас из config.

Как видите, мой подход состоит в том, чтобы просто впихнуть в него все, о чем я, возможно, хотел бы знать, потому что вы в любом случае потратите впустую оставшееся место в этой пограничной линии, если не будете использовать его или попытаетесь быть скупым. с пространством. Терминалы редко имеют размер меньше, чем, скажем, 60 колонок, поэтому я не вижу смысла в сохранении компактности строки содержимого границы. Ключевым моментом здесь является использование низкоконтрастного цвета для границы, чтобы сохранить более или менее чистый вид. Таким образом, устраняется неловкость попыток контролировать, что отображать в этом поле. :Подумайте о том, чтобы не пытаться контролировать то, что отображать, и отображать и то, и другое.

Еще одна вещь, связанная с заголовком панели, заключается в том, что он «предполагается» быть установленным оболочкой и/или программой, запущенной оболочкой. Это вызвало у меня сильную головную боль еще в октябре прошлого года, хотя я точно знаю, что решил эту проблему. На данный момент ни мой мозг, ни мои журналы git не могут предоставить достаточно информации, чтобы точно сказать, что вам нужно сделать, это контролировать, как устанавливается заголовок панели _, но достаточно сказать, что это один из тех сложные вещи, где вам нужно будет коснуться вашей конфигурации bash/zsh, чтобы сделать это, и это то, что, вероятно, отвечает за назначение его вашему имени хоста,а не что-то более полезное, такое как cwd или активная командная строка.

Кажется, мне пришлось добавить строку :XTв переопределения моего терминала -, чтобы это работало должным образом. См.https://unix.stackexchange.com/a/75382/12497

Я проделал долгий путь, чтобы заставить это работать правильно, и это тоже было важно, потому что название панели _до сих пор является единственным надежным прямым способом проверить, какая программа на самом деле, вероятно, работает внутри панели. Поскольку у меня это работает, мои контекстно-зависимые -привязки клавиш tmux (, которые основаны на значении заголовка панели _), работают безупречно :Когда zsh активен, заголовок панели _установлен с помощью zsh к последней запущенной команде, когда vim запускается, он переопределяет заголовок панели с определенной строкой, которую я установил в своем vimrc, и т. д. Это хорошо работает для управления моими контекстно-зависимыми привязками клавиш. Одна из серьезных проблем, которая раньше была серьезной, заключалась в том, что если скрипт «myscript» запускает Vim, то заголовок панели _становится «myscript», из-за чего моя система привязки клавиш не может знать, что я запускаю Vim на панели. Теперь, когда Vim может обновлять заголовок терминала и правильно устанавливать его на панели tmux, логика проверки того, запускает ли панель vim, значительно упрощается.

Еще один способ узнать, что происходит внутри панели, — это запросить операционную систему, чтобы узнать, что это за процессы, поскольку у нас есть доступ к PID. Но я до сих пор избегал слишком сходить с ума с трубами для такого рода вещей, отдавая предпочтение «стандартным» возможностям. Я уверен, что если бы название панели _в конечном итоге победило меня, я бы написал программу на C++, которая печатает то, что я запускаю в соответствующей панели. Удачи.

1
28.04.2021, 23:25

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

set-hook -g after-split-window 'selectp -T ""'
set-hook -g after-new-window 'selectp -T ""'
set-hook -g after-new-session 'selectp -T ""'

Затем ищите пустой заголовок, а не имя хоста:

#{?pane_title,#{pane_title},#{pane_current_comamnd}}
3
28.04.2021, 23:25

Теги

Похожие вопросы