LINUX.ORG.RU

Выбор DE/WM

 , , , ,


0

3

Посоветуйте сабж, отличный от unity, с переключением по окнам как в unity или винде (на super + 1,2,3,4,5...).

Изкоробочные тайловые wm (по крайней мере awesome) это не то, там ты размещаешь окна приложений по виртуальным экранам и работаешь на этом уровне. А меня интересует вариант, когда тэг вешается не на виртулальный экран, а на конкретное приложение или его окно.

Хотя, может быть я не так готовлю - тогда делитесь, как надо.

upd забыл - ищется именно легковесное решение. Так бы я был бы хэппи и на unity.

★★★★★

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

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

Да, в твоей хотелке, возможно, что-то есть. Начинай пилить, может и я чего закоммичу. (=

трудозатратность настройки осома, основная причина того, что многие его почти не настраивают

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

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

Да, в твоей хотелке, возможно, что-то есть. Начинай пилить, может и я чего закоммичу. (=


я тут погуглил, https://luarocks.org/ вот это решает проблему, там даже есть парочка пакетов для осома, осталось только договориться, что бы все добавляли туда свои более менее завершенные пакеты/модули, ну и какой то не обязательный для соблюдения стандарт структуры наиболее простых вещей.

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

Стандарт для простых вещей в принципе не нужен. А вот для более-менее сложных вещей он крайне необходим.

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

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

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


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

Если не сбегу на qtile, попробую что то из этого реализовать(сначала надо свой конфиг структурировать)

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

Меняю сиё ценное знание на ценное знание где можно прочитать лог ошибок awesome :)

Вообще ошибка в float/appswitcher.lua:89 - незаэкранирован обратный слэш.

Как пользоваться поделкой несмотря на комментарии не понял - нужны пояснения :)

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

Разобрался как пользоваться - но это не совсем то. Не хватает хоткея притащить клиента в текущий тэг.

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

Работает как ожидалось, после того, как поправленны незаэкранированные символы, но до rofi как до луны пешком конечно :)

На вскидку:

  • нет поиска (актуально для терминалов как минимум)
  • неудобные изкоробочные хоткеи (ctr+n/p и j/k ожидабельны)
pon4ik ★★★★★
() автор топика
Ответ на: комментарий от Worron

Patch:

git diff
diff --git a/float/appswitcher.lua b/float/appswitcher.lua
index 66721b2..1f73550 100644
--- a/float/appswitcher.lua
+++ b/float/appswitcher.lua
@@ -86,7 +86,7 @@ local function get_icon_visual(icon_db, c, size)
        if icon_db[string.lower(c.class)] then
                local icon = icon_db[string.lower(c.class)]
 
-               if type(icon) == "string" and string.match(icon, "\.svg") and is_pixbuf_loaded then
+               if type(icon) == "string" and string.match(icon, "\\.svg") and is_pixbuf_loaded then
                        if svgcache[icon] then
                                buf = svgcache[icon]
                        else
diff --git a/gauge/svgbox.lua b/gauge/svgbox.lua
index 10a5a95..6727d0d 100644
--- a/gauge/svgbox.lua
+++ b/gauge/svgbox.lua
@@ -47,7 +47,7 @@ local cache = setmetatable({}, { __mode = 'k' })
 
 -- Check if given argument is SVG file
 local function is_svg(args)
-       return type(args) == "string" and string.match(args, "\.svg")
+       return type(args) == "string" and string.match(args, "\\.svg")
 end
 
 -- Check if need scale image

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

нет поиска

Ну это как бы уже крутовато будет. Реализуемо, но не просто. Можно какую-нибудь внешнюю программу попробовать прикрутить если она умеет принимать к примеру список pid.

неудобные изкоробочные хоткеи

Это настраивается элементарно. С каким свитчером в итоге запустил, который меню или который иконками?

С экранированием слешей странное дело, версия lua какая?

Worron ★★★
()

wmctrl умеет активировать окна по заданным параметрам. Плюс опенбокс, умеющий переключаться по нужным столам, плюс devilspie, умеющий раскидывать окна по нужным столам без участия пользователя. Правильная настройка - и у тебя очень комфортное окружение. Сам от этого ушел только потому, что используемых одновременно дома приложений - максимум 5-7. Ради этого лениво было заморачиваться с настройкой новой системы - хватило и unity.

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

Похоже правильный вариант будет "%.svg", не помню откуда взял обратный слеш как escape character и почему у меня оно работает, поправлю в общем.

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

С меню.

lua:

Lua 5.3.3  Copyright (C) 1994-2016 Lua.org, PUC-Rio

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

По всем. Но эвристика тоже хромает.

С алгоритмом описанным мной выше не сходится. Но, если в awesome можно хранить глобальный стейт то это наверное не сложно реализовать.

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

Но эвристика тоже хромает.
С алгоритмом описанным мной выше не сходится

Можно чуть подробнее?

По хоткеям для меню (увы там только чистые клавиши без модификаторов) сразу после local redflat = require("redflat") добавь

redflat.menu.menu_keys = {
	up    = { "Up", "k", "p" },
	down  = { "Down", "j", "n" },
	back  = { "Left" },
	exec  = { "Return" },
	enter = { "Right" },
	close = { "Escape" }
}

И да, после исправлений слешей можешь попробовать запустить с appswitcher отредактировав соответсвующую строку как

redflat.float.qlaunch:init({ apps = test_apps, modkeys = test_modkeys }, { sw_type = "apps" })

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

Симпатично, но баги имеет место быть.

Например - если нажать mod + 2 куда забинжен терминал и не отпуская нажать mod + 1 куда забинжен браузер переключение происходит по терминалам. А если так сделать без окошка с превью, т.е когда один браузер например запущен, то при нажатии mod + 2 происходит переключение на выбор между терминалами.

Можно чуть подробнее?

Запустил два браузера. Пользовался a. Переключился на терминал нажал биндинг браузера переключился на b. И из любого положения переключаешься на b. А должен был переключиться на a, который последний был в фокусе.

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

По поводу переключалки - поиск нужен, лично мне в моменты запары нужен на 100% :)

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

Насчет работы клавиш: любая переключалка в активном состоянии (и меню, и appswitcher) перехватывает все нажатия на управление собой и доступа к глобальным хоткеям осома в этот момент просто нет. Таковы особобенности awesome текущей версии и это пока не обойти.

А должен был переключиться на a, который последний был в фокусе.

У меня оно так работает, там есть история по фокусированным. Проблема со всеми приложениями или только браузером? Проверь. Единственно что может быть из-за того, что в данный момент я на 3.5.6.

поиск нужен

Как я уже сказал это не тривиально (нужно фильтровать список по нескольким введенным буквам в имени клиента, я правильно понял?). Даже если возьмусь это несколько дней. Если нужно быстро ищи внешнее приложение.

Теперь по поводу того, чтобы перебиндить новое приложение на хоткей на лету. В пределах сессии это сделать предельно легко. Вопрос первый, как WM должен определять команду запуска этого нового приложения? Вопрос, второй нужно ли сохранять эти изменения между сессиями? Если да, то немного геморойнее будет, нужно писать в файл, читать из файла.

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

Вопрос первый, как WM должен определять команду запуска этого нового приложения?

Видимо, надо как от получать pid, а по pid - уже имя образа. В unity поддерживается как такой подход, так и *.desktop файлы. Как происходит связывание с desktop файлом - для меня чёрный ящик.

Вопрос, второй нужно ли сохранять эти изменения между сессиями? Если да, то немного геморойнее будет, нужно писать в файл, читать из файла.

По идее должно быть какое то key/value, в худшем случае можно писать в lua файл (кстати это идеальный вариант и для ручной правки), я очень плохо знаю lua, но в js такая вещь делается тривиально, не верю что в lua такого нет.

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

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

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

Тут ещё затык в том, что может быть важны и аргументы коммандной строки и рабочая директория

Это в нагрузку к тому, что на данный момент не знаю точного рецепта преобразования pid -> destop file. Я это клоню к тому, тебе точно нужно сохранение между сессиями? Для себя бы сделал жестко прописанный стартовый набор программ в rc.lua, плюс возможность биндить на лету новые приложения, но сохранятся эти переназначенные хоткеи будут либо до перезапуска осом, либо пока не закроется последний экземляр этого нового приложения.

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

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

Правильная настройка - и у тебя очень комфортное окружение

Не совсем. Devilspie перемещает окно куда надо уже после его отрисовки wm'ом на текущем рабочем столе, прямо на глазах у пользователя. Лично меня это мельтешение раздражает.

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

Это уменьшит порог вхождения, а значит увеличит массовость, что положительно скажется на развитии проекта

Винда популярна, но это не сделало её лучше. (= Что увеличит массовость — так это приток вопросов на форумах. И так редкий пользователь что-то пилит, всем подавай готовое (даже в этом треде).

и самое главное, это можно сделать не испортив гибкость о которой все так заботятся.

А вот тут не поверю, пока не увижу.

Если не сбегу на qtile

Скоро осом совсем отортеет, а ты с него убегать.

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

Скоро осом совсем отортеет, а ты с него убегать.


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

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

Можно воспользовался средствами wm, тот же openbox и сам это умеет.

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

Он просто считает его зэ бэст тайлингом, поэтому и советует.

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

А в релиз могут войти не все плюшки, реализованные в мастере с момента последнего релиза.

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

pid-> desktop file для меня самый минорный юзекейс. То же сохранение между сессиями и поиск гораздо важнее. Ну насчёт поиска я всё-таки попробую прикрутить rofi, а как работает этот биндинг мне уже нравится :) Надо только подумать над хоткеями, хотя mod+alt не самый плохой вариант как оказалось.

Ещё, можно было бы карту по приложениям рисовать - зажимаешь mod на 2 секунды например и получаешь список текущих биндингов (там же можно показать на каких тегах какое приложение сидит), т.к. биндингов по определению не много, то и список должен без проблем влезать в область одного монитора.

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

pid-> desktop file для меня самый минорный юзекейс

Так, еще раз, как определять команду запуска для назначенного на лету приложения? Вот ты открыл программу, забиндил на нее хоткей, закрыл программу, нажал хоткей, и?

попробую прикрутить rofi

Удачи, тогда этот аспект я трогать пока не буду.

Надо только подумать над хоткеями

Просто пропиши свои test_modkeys.

сохранение между сессиями

Это лучше сделать когда с назначением хоткеев на лету будет все решено.

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

Так, еще раз, как определять команду запуска для назначенного на лету приложения? Вот ты открыл программу, забиндил на нее хоткей, закрыл программу, нажал хоткей, и?

Приложение снова открылось. Кстати забыл ещё один юзекейс: приложение на биндинге уже запущенно, тогда shift + <биндинг> должен запустить новый экземпляр приложения.

Я к тому, что пользуюсь в основном тем, для чего достаточно знать имя образа. Т.е. на текущий момент, конкретно мне хватит, что бы wmid определялось имя образа из которого был запущен процесс. Desktop файлы, скорее всего, без контроля их запуска идентифицировать не удастся, но в awesome я и не пользуюсь ими.

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

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

Какого образа? Как определялось? Вот что знает WM о приложении, как из этого сделать команду запуска?

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

Пока добавил описанный вариант с временным назначением приложений на лету. Можешь попробовать с такими настройками

-- Set keys
local redflat = require("redflat")

-- настройки списка приложений
local test_keys = {}
local test_modkeys = { "Mod4", "Mod1" } -- модификаторы для перехода
local test_setmodkeys = { "Mod4", "Mod1", "Shift" } -- модификаторы для назначения приложения в фокусе на хоткей

-- каждый ключ в таблице это хоткей соответсвенно, для номерной клавиши n key = #(n+9) то есть '#10' -> '1'; '#11' -> '2'
-- значение app это класс приложения в нижнем регистре, именно по этому значению приложения будут фильроваться
-- значение run команда для запуска приложения
test_keys["#10"]  = { app = "firefox", run = "firefox" } -- определено со старта, можно назаначить новое приложение по setmodkeys
test_keys["#11"]  = { app = "gnome-terminal", run = "gnome-terminal" }
test_keys["#12"]  = { app = "", run = "" } -- не определено со старта, но можно назначить приложение в процессе работы
test_keys["#13"]  = { app = "", run = "" }
test_keys["q"]    = { app = "", run = "" }

redflat.float.qlaunch:init({ keys = test_keys, modkeys = test_modkeys, setmodkeys = test_setmodkeys })

globalkeys = awful.util.table.join(globalkeys, redflat.float.qlaunch.hotkeys)

root.keys(globalkeys)

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

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

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

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

Не очень удобно то, что хоткеи надо заранее прописать

Не уверен как оно будет с динамическими хоткеями, так что пока проще прописать.

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

Добавил указанные фичи, теперь подключение выглядит так

local redflat = require("redflat")

-- общие настройки для qlaunch виджета
local qlaunch_style = {
	sw_type    = "menu",
	switcher   = { apps = {}, menu = { width = 800 } },
	configfile = os.getenv("HOME") .. "/.cache/awesome/applist", -- файл со списком приложений при первом запуске будет создан из keys
}

-- настройки списка приложений
local t_keys = {}
local t_switchmod = { "Mod4", "Mod1" } -- модификаторы для перехода
local t_setupmod = { "Mod4", "Mod1", "Control" } -- модификаторы для назначения приложения в фокусе на хокткей
local t_runmod = { "Mod4", "Mod1", "Shift" } -- модификаторы для запуска нового экземляра приложения

-- каждый ключ в таблице это хоткей соответсвенно, для номерной клавиши n key = #(n+9) то есть '#10' -> '1'; '#11' -> '2'
-- значение app это класс приложения в нижнем регистре, именно по этому значению приложения будут фильроваться
-- значение run команда для запуска приложения
t_keys["#10"]  = { app = "firefox", run = "firefox" } -- определено со старта, можно назаначить новое приложение по setmodkeys
t_keys["#11"]  = { app = "gnome-terminal", run = "gnome-terminal" }
t_keys["#12"]  = { app = "", run = "" } -- не определено со старта, но можно назначить приложение в процессе работы
t_keys["#13"]  = { app = "", run = "" }
t_keys["q"]    = { app = "", run = "" }

redflat.float.qlaunch:init(
	{ keys = t_keys, switchmod = t_switchmod, setupmod = t_setupmod, runmod = t_runmod },
	qlaunch_style
)

globalkeys = awful.util.table.join(globalkeys, redflat.float.qlaunch.hotkeys)

root.keys(globalkeys)

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

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

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

Спасибо за старания.

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

Я постараюсь переехать в этот или следующий выходной.

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

Удачи. Я все равно эту фичу себе в конфиг запиливал, может не маст хев, но лишней точно не будет.

Worron ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.