LINUX.ORG.RU

Awesome, ошибка в .xsession, помогите понять

 , ,


0

1

Пилю конфиг осома. Увидел в сессии ошибку. Подскажите, что она означает?

/usr/share/awesome/lib/beautiful.lua:90: attempt to index upvalue 'theme' (a nil value)

имею:

.config/awesome> ls -l -R

./themes/powerarrow-dark:
итого 32
drwxr-xr-x 3 bvn13 users  4096 янв  6  2013 icons
-rw-r--r-- 1 bvn13 users 20919 сен 10 21:32 theme.lua
drwxr-xr-x 2 bvn13 users  4096 янв  6  2013 wallpapers
[code/]


тема устанавливается так:

-- {{{ Settings
config_dir = ("/home/bvn13/.config/awesome/")
themes_dir = (config_dir .. "/themes")
beautiful.init(themes_dir .. "/powerarrow-dark/theme.lua")
-- }}} Settings

ЗЫ. Кастую science, ибо хочу запилить его шедевр

ЗЗЫ. сижу на OpenSUSE 12.3

> awesome --version
awesome v3.4.15 (Never Gonna Give You Up)
 • Build: for x86_64 by gcc version 4.7.2 (abuild@cloud129)
 • D-Bus support: ✔
> uname --all
Linux diowobook.WORKGROUP 3.7.10-1.16-desktop #1 SMP PREEMPT Fri May 31 20:21:23 UTC 2013 (97c14ba) x86_64 x86_64 x86_64 GNU/Linux

★★★★★

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

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

48. success, theme = pcall(function() return dofile(path) end)

init не отрабатывает, потому что dofile(path) возвращает nil. В логах ты должен видеть «E: beautiful: error loading theme file и тут трейс или сообщение...». Трейс если есть, давай сюда. Ошибка в theme.lua, он хоть luac синтакс чек проходит?

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

оу, спасибо за желание помочь. Я в lua и осоме пока только разбираюсь. Полгода назад я плевался, а сейчас вот захотелось. Можно сразу несколько вопросов?

1) где логи самого осома?

2) как проверить theme.lua на синтаксис?

UPD.

> luac -p theme.lua 

~/.config/awesome/themes/powerarrow-dark> cat theme.lua | pastebincl 
Submitting paste...
Paste submitted successfully!
URL: http://pastebin.com/AKKwbQwp

перепечатываю: http://pastebin.com/AKKwbQwp

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

Лежу на диване, думаю чем заняться. Про осом не знаю, понятно только, что видимо pcall вернул (false, nil), а собака зарыта в theme.lua. Ошибка может быть как синтаксическая, так и времени исполнения (что вероятнее, т.к. nil, а не сообщение). Ключ для luac забыл, попробуй просто lua -i theme.lua — если синтаксис, сразу вылетит где и что.

arturpub ★★
()
Ответ на: комментарий от arturpub
> lua -i theme.lua 
Lua 5.2.1  Copyright (C) 1994-2012 Lua.org, PUC-Rio
lua: theme.lua:95: attempt to concatenate global 'themes_dir' (a nil value)
stack traceback:
	theme.lua:95: in main chunk
	[C]: in ?

ссылку на код выше запостил

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

stdin:96: attempt to concatenate global 'themes_dir' (a nil value)

Но, возможно он в окружение влетает из осома, а так синтаксис и поведение ок. Очень странно.

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

Надо понять что возвращается в строке 48 и все станет ясно.

success, theme = pcall(function() return dofile(path) end)
error(string.format("success=%s theme=%s path=%s", tostring(success), tostring(theme), tostring(path)))

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

Да, beautiful.lua:48 — status... как было, а 49-ой добавь error... Должно так же в сессии вылезти, по идее.

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

Я тебе пока расскажу как все работает, и что мы делаем. theme.lua заполняет переменную theme и возвращает ее (это луа-таблица с цветами и всяким таким). dofile(path) выполняет файл path и возвращает что он вернул, то есть по идее это должна быть наша таблица theme. Но оригинальный еррор-мессадж говорит о том, что theme = nil. Раз theme.lua сам по себе работает, значит в теории в строке 48 нам влетает success=true и theme=nil, что есть парадокс. Возможно path кривой или ну хрен знает уже.

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

Оке, theme.lua на месте. Значит success=true, значит нетривиально. Ты уверен, что beautiful.init больше нигде не вызывается? У меня простые идеи пока кончились. Еще можно попробовать beautiful.get() вывести на печать еррором, но вангую non-string error message.

В каком-то месте обнуляется скрытая переменная beautiful.lua:theme, а как — это большой вопрос.

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

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

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

а потихоньку нельзя было накидывать и отлаживать до рабочего состояния??

вообще хрень какая-то с beautiful'ом..

TODD ★★
()
ls -Rl ~/.config/awesome/

на пасту, ссыль сюда..

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

Ничего не могу придумать, извиняй :( придется ждать маэстро.

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

Последнее разумное предположение это что сабжевый еррор происходит ДО beautiful.init(...), попробуй в последней строке beautiful.lua вместо

setmetatable(_M, { __index = function(t, k) return theme[k] end })
это
local tb = debug.traceback
setmetatable(_M, { __index = function(t, k)
    if theme then
        return theme[k]
    else
        error(tb("hey, wtf, theme is nil here!"))
    end
end })
Все прошлые наши изыскания выкинь. Если beautiful.lua стартует с окружением, в котором есть стандартный модуль debug, ты увидишь вместо сабжевого еррора трейс откуда он взялся. Если нет, то и правда тыкаемся вслепую. Новый еррор сюда.

arturpub ★★
()

что-то слишком длинный тред

science ★★☆
()

если тебе нужен powerarrow тема, вот кстати в мега-качестве большого разрешения обоина: http://i.imgur.com/OxoXtj3.jpg ; то почему у тебя фигурирует название другой темы - powerarrow-dark?

Это ведь как-бы разные темы.

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

Кроме того, там используется blingbling либа для некоторых виджетов, а также должны быть установлены ее зависимости.

Масса нюансов.

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

science ★★☆
()
Последнее исправление: science (всего исправлений: 2)
Ответ на: комментарий от bvn13

хе-хе, да ты вообще не так понял.

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

Все суета и томление духа.

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