LINUX.ORG.RU

Rofi (меню для WM)

 ,


2

2

Подскажите как создавать свои собственные меню в rofi, чтобы получать не весь список программ (как от rofi -show (d)run), а только нужные программы. Не могу найти примеры.

Ответ на: комментарий от hopheynananey

По примеру на гитхабе запускаются только меню с выбором: echo -e «Option #1\nOption #2\nOption #3» | rofi -dmenu

Но пункты меню не запускаются, а просто выводятся в консоль: yura@yura:~/.cache$ echo -e «leafpad» | rofi -dmenu

leafpad

yura@yura:~/.cache$

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

файла rofi.runcache у меня нет в ~/.cache, но зато я нашел файл ~/.cache/dmenu_ru, в который можно по порядку с в каждую новую строку вписать программы и они отображаются в dmenu.

Но dmenu немного не то, хочется rofi

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

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

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

Но пункты меню не запускаются, а просто выводятся в консоль

In both cases, rofi will output the user's selection to STDOUT.

Оно так и задумано. В консоль выводится выбранный вариант, а ты уже дальше решаешь что с ним сделать, можешь и запустить. В твоём случае если нужен именно запуск приложения, то допустим есть файл «~/mymenu», в котором перечислены нужные программы, запуск будет выглядеть как-то так:

$(cat ~/mymenu | rofi -dmenu)

arthas
()

Ну, вот например так у меня реализовано меню для скриншотов:

#!/bin/sh

SCREENSHOT_DIR="${HOME}/Pictures/Screenshots"
BASE_NAME=$(date +%Y-%m-%d_%H-%M-%S.%3N)
CHOICES="1 Fullscreen|2 Select|3 Window"

cmd=$(echo -e $CHOICES | rofi -p "Screenshot" -i -width 300 -lines 6 -theme solarized_alternate -dmenu -sep "|")

case $cmd in
    "1 Fullscreen")
	maim -d 0.5 ${SCREENSHOT_DIR}/${BASE_NAME}.png
	notify-send --expire-time=3000 "Screenshot saved ${SCREENSHOT_DIR}/${BASE_NAME}.png"
	;;
    "2 Select")
	maim -s --bordersize=2 ${SCREENSHOT_DIR}/${BASE_NAME}_sel.png
	notify-send --expire-time=3000 "Screenshot saved ${SCREENSHOT_DIR}/${BASE_NAME}_sel.png"
	;;
    "3 Window")
        maim -d 0.5 -i $(xdotool getactivewindow) ${SCREENSHOT_DIR}/${BASE_NAME}_win.png
	notify-send --expire-time=3000 "Screenshot saved ${SCREENSHOT_DIR}/${BASE_NAME}_win.png"
	;;
esac

Меню для выключения/лока/сна:

#!/bin/sh

#LOCKER="xkblayout-state set 0 && i3lock -c 000000 -e -f && sleep 1"
LOCKER="lock"
CHOICES="1 Lock|2 Logout|3 Suspend|4 Hibernate|5 Reboot|6 Shutdown"

cmd=$(echo -e $CHOICES | rofi -i -width 300 -lines 6 -theme solarized_alternate -dmenu -sep "|")

case $cmd in
    "1 Lock")
        eval $LOCKER
	;;
    "2 Logout")
	i3-msg "exit"
	;;
    "3 Suspend")
        systemctl suspend && eval $LOCKER
	;;
    "4 Hibernate")
	systemctl hibernate && eval $LOCKER
	;;
    "5 Reboot")
	systemctl reboot
	;;
    "6 Shutdown")
	systemctl poweroff -i
	;;
esac

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

Спасибо за примеры Получилось Хотелось бы еще добавить значки программ, например указывая пути к значкам или к *.desktop

Значки не отображаются: rofi -modi drun,run -show drun -font «DejaVu Sans 10» -show-icons

enalesck
() автор топика
17 августа 2019 г.

Решение
Предусматривает иерархические меню, горячие клавиши. интуитивно-понятный конфиг.

yaourt rofi-blezz
или
хомяк rofi-blezz

Запуск:
rofi -show blezz -modi blezz -auto-select -matching normal -blezz-config «Путь к конфиг-файлу»

Содержимое конфиг-файл’а:

Main:
act(M,Monitor, ~/Programming/GitHub/rofi-scripts/monitor_layout.sh)
dir(a,Applications)
dir(i,I3)
dir(s,System)
dir(D,Develop)
dir(o,Options)

Applications:
act(f,Firefox,firefox)
act(c,Chrome,google-chrome)
act(t,Terminal,urxvtc)
act(s,Spectacle,spectacle)

I3:
dir(gi,Gaps Inner)
dir(go,Gaps Outer)
dir(w,Workspace)
act(c,Start Compton,compton -b)

Gaps Inner:
actReload(+,Increase inner,i3-msg gaps inner all plus 5)
actReload(-,Decrease inner,i3-msg gaps inner all minus 5)
actReload(0,Reset inner,i3-msg gaps inner all set 0)

Gaps Outer:
actReload(+,Increase outer,i3-msg gaps outer all plus 5)
actReload(-,Decrease outer,i3-msg gaps outer all minus 5)
actReload(0,Reset outer,i3-msg gaps outer all set 0)

Workspace:
actReload(r,Move workspace to output right,i3-msg move workspace to output right)
actReload(l,Move workspace to output left,i3-msg move workspace to output left)

Develop:
act(b,Blezz Dev,code ~/Git/blezz)
act(s,SW8,code ~/Git/SW804F17)

Options:
dir(b,Blezz Options)
act(t,Tint2 Config,leafpad ~/Git/dotfiles/tint2/tint2rc)

Blezz Options:
act(c,Blezz Content,leafpad ~/Git/blezz/cfg/content)
act(o,Blezz Options,leafpad ~/Git/blezz/cfg/config)

System:
act(z,Suspend, systemctl suspend)
act(s,Shutdown,systemctl poweroff)
act(r,Reboot,  systemctl reboot)
Dreamdrawer
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.