LINUX.ORG.RU

Deep Space Window manager 0.0.5

 


2

5

Вышла версия 0.0.5 DSWM — форка StumpWM, оконного менеджера написанного на common lisp. В DSWM по сравнению с оригинальным stumpwm был внесен ряд изменений, а также некоторый рефакторинг кода. Список основных изменений, видимых для пользователя:

  • Переписана подсистема клавиатурного ввода.
  • История ввода команд заменена с общей на раздельную для разных команд (например, отдельная история для 'colon', 'run' и т.п.).
  • Добавлено автодополнение и возможность редактирования для некоторых команд.
  • Добавлена поддержка hex-обозначений цветов,
    например: (set-bg-color (make-color-hex «#000000»)) также можно использовать (set-bg-color «red») как и раньше.
  • Изменен формат модулей на asdf-совместимый. Также добавлены команды для управления модулями.
  • Изменено поведение mode-line. Теперь она состоит из двух строк — списка окон и информации и задаются установкой переменных *info-line-format* і *window-list-line-format* соответственно. Для обратной совместимости, при установке *mode-line-format*, mode-line преобретает классический вид.
  • Добавлена функция 'startup-only', которая выполняет код, заданный в качестве аргумента, только во время загрузки (код не выполняется во время выполнения 'loadrc').
  • Добавлены команды для сохранения и восстановления правил разбивки рабочего стола на фреймы и правил размещения окон во фреймах.
  • Добавлена корректная (с прозрачной навигацией: команды 'gother', 'gprev', 'gnext' и т.п. «не замечают» этой группы) поддержка scratchpad — группы для размещения приложений, к которым часто обращаются.
  • Добавлены функции для работы с параметрами mode-line.
  • Добавлены новые модули (web, todo).
  • Изменен порядок интерпретации конфиг-файлов (/etc/dss/dswm/dswm.lisp → (~/.dswm или ~/.dswm.d/init.lisp).

Текущая версия DSWM: 0.0.5r2
Скриншоты: http://dss-project.org/ru/?DSWM:Skrinshoty
Cкачать sourceforge.
Также имеются сборки для Debian/Ubuntu и Arch Linux (AUR) и готовится ebuild для Gentoo.

>>> Подробности



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

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

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

а) ресайз в стампе с перерисовкой всех граничных окон при каждом инкременте, а по умолчанию инкремент пикселов 5. Ресайз не интуитивный. Интуитивный ресайз есть в виде патча месячной давности.

Угу, постоянная перерисовка окон каждые 5 пикселов. Неудивительно, что у кого-то ресайз тормозит.

б) патч месячной давности в мастер ветку не влит. На ирц говорят: «стамп работает, остального не нужно».

Прямо автор в этой IRC сказал об этом? А то мало ли, кто там в IRC сидит. У них нет рассылки?

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

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

asvil
()

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

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

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

Хотелось бы посмотреть на правки.

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

Не вопрос :) Я там начал писать, но не доделал. Так что в репозитории он валяется

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

Надеюсь, это оно

--[[
Author: Etan Reisner
Email: deryni@gmail.com
Summary: Toggle (and create) scratchpads by name.
Version: 0.2
Last Updated: 2007-01-23

Copyright (c) Etan Reisner 2007
--]]

-- Usage: This will create a scratchpad named example_sp
--          kpress(MOD4.."space", "named_scratchpad(_, 'example_sp')")

function named_scratchpad(reg, name)
    local named_sp
    local default_w, default_h = 640, 480
    local scr = reg:screen_of()
    local geom_scr = scr:geom()

    local geom_loc = {
        w = math.min(geom_scr.w, default_w),
        h = math.min(geom_scr.h, default_h),
    }
    geom_loc.x = (geom_scr.w - geom_loc.w) / 2
    geom_loc.y = (geom_scr.h - geom_loc.h) / 2

    named_sp = ioncore.lookup_region(name, "WFrame")

    if not named_sp then
        named_sp = scr:attach_new({
                                   type="WFrame",
                                   name=name,
                                   unnumbered=true,
                                   modal=false,
                                    --pseudomodal=true,
                                   hidden=true,
                                   --layer=2, 
                                   sizepolicy="free",
                                   geom=geom_loc,
                                  })
                              end
    mod_sp.set_shown(named_sp, "toggle")
    --ioncore.exec_on(named_sp, 'urxvt')
    --os.execute("urxvt")
end

-- vim: set expandtab sw=4:

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

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

В том что касается ewmh:

local XA_CARDINAL = 6
local XA_INTEGER = 19

local num_atom = ioncore.x_intern_atom("_NET_NUMBER_OF_DESKTOPS", false)
local idx_atom = ioncore.x_intern_atom("_NET_CURRENT_DESKTOP", false)

local pager_timer = ioncore.create_timer()
local need_pager_update = true

local function update_pager()
    if need_pager_update then
        need_pager_update = false
        local scr = ioncore.find_screen_id(0)
        local num = scr:mx_count()
        local cur = scr:mx_current()
        local idx = scr:get_index(cur)
        local rootwin = scr -- reg:rootwin_of()
        ioncore.x_change_property(rootwin:xid(), num_atom, XA_CARDINAL, 32, "replace", {num})
        ioncore.x_change_property(rootwin:xid(), idx_atom, XA_CARDINAL, 32, "replace", {idx})
    end
    pager_timer:set(250, update_pager)
end

pager_timer:set(250, update_pager)

local function async_update_pager(reg, s)
    need_pager_update = true
    function update_pager()
end

ioncore.get_hook("region_notify_hook"):add(async_update_pager)
И ещё из обычной репы, уже, наверное, notion'а взял net_client_list. При этом этот сорц не работает.

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

Угу, постоянная перерисовка окон каждые 5 пикселов. Неудивительно, что у кого-то ресайз тормозит.

Я думаю там кривой алгоритм, потому что lazy_resize в ионе не тормозит вообще.

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

Все-таки, клик, в некоторых приложениях нужен. Но вот если речь идет об управлении окнами, то, совершенно верно: не нужен.

С уважением, пользователь wmii (:

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

Stumpwm долго и упорно пилили поддержку CCL и ECL, наконец-то запилили, а тут взять их так просто и выкинуть

Зачем для легкого WM весьма тяжелый SBCL?

Т.к. проект на стадии доработки до- и переписывания кода, (некоторые вещи выкинуты, много чего добавлено) то пока поддерживать все реализации не вижу смысла. SBCL мне ближе всего. Собственно, пока только ее и поддерживаю. В будущем, думаю, список реализаций увеличится

c0smonaut
() автор топика

cначала прочитал, что якобы написано на elisp... чуть не поперхнулся)))

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