kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
Подробнее – xorg при старте ругается, что не может найти модули type1 и freetype. Почему так может быть, и как с этим бороться – просто отключить? Странно, что такие бока при простом обновлении. Хотя, может, и я что-то напортачил.. |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
Вобщем, разобрался с псевдогаффикой и раскладкой, для qingy глючить характерно, но Xorg… 686: core;extra;community, что-то стоит изх aur, но не обновлялось. Работаю со сборным ядром 2.6.26-rt(и драйве рnvidia под него же). Параллельно стоит ванильное ядро с дефолтными дровами – обновлялись только они. Если причина в этом, то где? |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
Proshu proweniya za latinitsu. Voy na dosuge rewil obnowitsya (t.k. svejeustanovlenniy tmpaint rugalsya na ustarewshie bibleoteki). Rezul'tat - ne startuyet Xorg (drova nvidia-98x-rt), login-meneger qinki pri vvode parolya pri vvode odnogo simvola prinimaet srazu 2 (???!! kodirovka? no eto je latinitsa!), daje v konsoli ne rabotaet psevdograffika (links -g) i russkaya raskladka. chto ne tak obnovilos? do etogo ne obnovlyalsya mesyats. Vobshem, viruchayte! |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
Буду знать, спасибо :) Ну, пусть будет CC-NC-SA |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
Я рад, что это кому-то показалось интересным 8) Вот сегодня обновился с v 0.9.21 на 0.9.23 WM растёт и крепнет на глазах! Надеюсь, к версии 1.0 он станет стабильным и юзабельным. Итак, плюсы – ман страница стала на порядок информативнее; появилась возможность “сворачивать окна”, после чего они исчезают из фрейма, если были видимы, и перестают всплывать при переборе окон группы. Восстановить можно командой switch window (обычно повешенной на хоткей ModN+w). Стало нормально работать отключение отображения границ текущего фрейма. В результате, дописал в конфиг: # свернуть текущее окно bind on Mod4+Escape shrink # отключение отображения рамки текущего фрейма bind on Mod4+b border flip bind on Mod4+Shift+b border flip И, наконец, появилась поддержка wmctrl, чему я ообенно рад (ибо позволит реализовать задуманный мною text based pager без привязки к Musca), кот. обеспечивает стандартизированное управление X WM через pipe. Минусы – замеченные мною баги не пофикшены. Если кому не сложно, и кто умеет – составьте баг-репорт – и Родина Вас не забудет! Что касается wiki – я не против и даже за. Только я так и не разобрался с созданием статей в вики, потому разрешаю разместить статью тому, кто это умеет. Естественно, весь материал распространяется на условиях GPL. :) |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
Вобщем, давно пытаюсь собрать в ArchLinux SuperCollider – охота его изучить, раньше с ним дела не имел. Если кто собрал у себя – пожалуста, поделитесь опытом – как??? При попытке собрать supercollider-svn из AUR – получаю при сборке следущее: ==> Starting make... scons: Reading SConscript files ... classvar scVersionMajor=3, scVersionMinor=3, scVersionPostfix=1; classvar scVersionMajor=3, scVersionMinor=3, scVersionPostfix=1; scons: warning: The Options class is deprecated; use the Variables class instead. File "/tmp/yaourt-tmp-archer/aur-supercollider-svn/supercollider-svn/src/SuperCollider3-build/SConstruct", line 273, in <module> scons: warning: The BoolOption() function is deprecated; use the BoolVariable() function instead. File "/tmp/yaourt-tmp-archer/aur-supercollider-svn/supercollider-svn/src/SuperCollider3-build/SConstruct", line 276, in <module> scons: warning: The EnumOption() function is deprecated; use the EnumVariable() function instead. File "/tmp/yaourt-tmp-archer/aur-supercollider-svn/supercollider-svn/src/SuperCollider3-build/SConstruct", line 282, in <module> scons: warning: The PathOption() function is deprecated; use the PathVariable() function instead. File "/tmp/yaourt-tmp-archer/aur-supercollider-svn/supercollider-svn/src/SuperCollider3-build/SConstruct", line 290, in <module> scons: warning: The PackageOption() function is deprecated; use the PackageVariable() function instead. File "/tmp/yaourt-tmp-archer/aur-supercollider-svn/supercollider-svn/src/SuperCollider3-build/SConstruct", line 326, in <module> Checking for pkg-config... yes Checking for sndfile >= 1.0.16... yes Checking for sndfile >= 1.0.18... yes Checking for libcurl >= 7... yes Checking for fftw3f... yes Checking for jack >= 0.100... yes Checking for avahi-client... yes Checking for alsa... yes Checking for C header file /System/Library/Frameworks/CoreMIDI.framework/Headers/CoreMIDI.h... no Checking for C header file linux/input.h... no Checking for C header file cwiid.h... no Checking for C header file altivec.h... no Checking for C header file xmmintrin.h... no NOTICE: CPU has SSE support Checking for C header file X11/Intrinsic.h... yes Checking for XQueryPointer() in C library X11... yes Checking for C function strtod()... yes ---------------------------------------------------- To install SCVIM, please use scons in the directory editors/scvim/ ------------------------------------------------------------------------ ALTIVEC: no AUDIOAPI: Jack MIDIAPI: ALSA DEBUG: no DEVELOPMENT: no LANG: yes LID: no WII: no PREFIX: /usr RENDEZVOUS: yes SCEL: yes SCVIM: yes SCED: no SSE: no STRIP: no CROSSCOMPILE: no TERMINAL_CLIENT: yes X11: yes ------------------------------------------------------------------------ scons: done reading SConscript files. scons: Building targets ... g++ -o Source/common/SC_AllocPool.o -c -Wno-deprecated -fPIC -Wno-unknown-pragmas -ffast-math -fstrength-reduce -march=i686 -fPIC -DSC_DATA_DIR=\"/usr/share/SuperCollider\" -D_REENTRANT -DSC_LINUX -DNDEBUG -DSC_MEMORY_ALIGNMENT=1 -DHAVE_STRTOD -IHeaders/common -IHeaders/plugin_interface -IHeaders/server Source/common/SC_AllocPool.cpp In file included from Source/common/SC_AllocPool.cpp:21: /usr/include/string.h:33:20: error: stddef.h: No such file or directory Source/common/SC_AllocPool.cpp:22:21: error: stdexcept: No such file or directory In file included from Source/common/SC_AllocPool.cpp:24: Headers/plugin_interface/SC_BoundsMacros.h:24:47: error: cstdlib: No such file or directory Headers/plugin_interface/SC_BoundsMacros.h:25:47: error: cmath: No such file or directory In file included from Source/common/SC_AllocPool.cpp:21: /usr/include/string.h:44: error: 'size_t' has not been declared /usr/include/string.h:48: error: 'size_t' has not been declared /usr/include/string.h:57: error: 'size_t' has not been declared /usr/include/string.h:64: error: 'size_t' has not been declared /usr/include/string.h:67: error: 'size_t' has not been declared /usr/include/string.h:74: error: 'size_t' has not been declared /usr/include/string.h:76: error: 'size_t' has not been declared /usr/include/string.h:114: error: 'size_t' has not been declared /usr/include/string.h:116: error: 'size_t' has not been declared /usr/include/string.h:131: error: 'size_t' has not been declared /usr/include/string.h:139: error: 'size_t' has not been declared /usr/include/string.h:145: error: 'size_t' has not been declared /usr/include/string.h:152: error: 'size_t' does not name a type In file included from Source/common/SC_AllocPool.cpp:21: /usr/include/string.h:167: error: 'size_t' does not name a type /usr/include/string.h:181: error: 'size_t' has not been declared /usr/include/string.h:282: error: 'size_t' does not name a type /usr/include/string.h:286: error: 'size_t' does not name a type /usr/include/string.h:380: error: 'size_t' has not been declared /usr/include/string.h:381: error: 'size_t' has not been declared /usr/include/string.h:387: error: 'size_t' has not been declared /usr/include/string.h:390: error: 'size_t' has not been declared /usr/include/string.h:397: error: 'size_t' does not name a type /usr/include/string.h:404: error: 'size_t' does not name a type /usr/include/string.h:436: error: 'size_t' has not been declared /usr/include/string.h:449: error: 'size_t' has not been declared /usr/include/string.h:453: error: 'size_t' has not been declared /usr/include/string.h:457: error: 'size_t' has not been declared /usr/include/string.h:460: error: 'size_t' has not been declared /usr/include/string.h:538: error: 'size_t' has not been declared /usr/include/string.h:550: error: 'size_t' has not been declared /usr/include/string.h:575: error: 'size_t' has not been declared /usr/include/string.h:578: error: 'size_t' has not been declared /usr/include/string.h:591: error: 'size_t' has not been declared In file included from Headers/common/SC_AllocPool.h:33, from Source/common/SC_AllocPool.cpp:23: Headers/server/SC_List.h: In member function 'bool Link<T>::SanityCheck()': Headers/server/SC_List.h:214: error: 'runtime_error' is not a member of 'std' Headers/server/SC_List.h:217: error: 'runtime_error' is not a member of 'std' In file included from Headers/common/SC_AllocPool.h:35, from Source/common/SC_AllocPool.cpp:23: /usr/include/stdlib.h: At global scope: /usr/include/stdlib.h:140: error: 'size_t' does not name a type /usr/include/stdlib.h:337: error: 'size_t' has not been declared /usr/include/stdlib.h:367: error: 'size_t' has not been declared /usr/include/stdlib.h:471: error: 'size_t' was not declared in this scope /usr/include/stdlib.h:471: error: expected ',' or ';' before 'throw' /usr/include/stdlib.h:473: error: 'size_t' was not declared in this scope /usr/include/stdlib.h:473: error: 'size_t' was not declared in this scope /usr/include/stdlib.h:473: error: initializer expression list treated as compound expression /usr/include/stdlib.h:474: error: expected ',' or ';' before 'throw' /usr/include/stdlib.h:485: error: 'size_t' has not been declared In file included from /usr/include/stdlib.h:497, from Headers/common/SC_AllocPool.h:35, from Source/common/SC_AllocPool.cpp:23: /usr/include/alloca.h:33: error: 'size_t' was not declared in this scope /usr/include/alloca.h:33: error: expected ',' or ';' before 'throw' In file included from Headers/common/SC_AllocPool.h:35, from Source/common/SC_AllocPool.cpp:23: /usr/include/stdlib.h:502: error: 'size_t' was not declared in this scope /usr/include/stdlib.h:502: error: expected ',' or ';' before 'throw' /usr/include/stdlib.h:507: error: 'size_t' has not been declared /usr/include/stdlib.h:507: error: 'size_t' has not been declared /usr/include/stdlib.h:705: error: 'size_t' has not been declared /usr/include/stdlib.h:705: error: 'size_t' has not been declared /usr/include/stdlib.h:710: error: 'size_t' has not been declared /usr/include/stdlib.h:710: error: 'size_t' has not been declared /usr/include/stdlib.h:713: error: 'size_t' has not been declared /usr/include/stdlib.h:713: error: 'size_t' has not been declared /usr/include/stdlib.h:788: error: 'size_t' has not been declared /usr/include/stdlib.h:791: error: 'size_t' has not been declared /usr/include/stdlib.h:795: error: 'size_t' has not been declared /usr/include/stdlib.h:799: error: 'size_t' has not been declared /usr/include/stdlib.h:808: error: 'size_t' has not been declared /usr/include/stdlib.h:812: error: 'size_t' has not been declared /usr/include/stdlib.h:819: error: 'size_t' does not name a type /usr/include/stdlib.h:822: error: 'size_t' does not name a type /usr/include/stdlib.h:885: error: 'size_t' has not been declared In file included from Source/common/SC_AllocPool.cpp:23: Headers/common/SC_AllocPool.h:45: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:46: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:47: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:48: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:49: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:61: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:64: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:82: error: 'size_t' has not been declared Headers/common/SC_AllocPool.h:85: error: 'size_t' has not been declared Headers/common/SC_AllocPool.h:88: error: 'size_t' has not been declared Headers/common/SC_AllocPool.h:97: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:98: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h: In member function 'AllocChunk* AllocChunk::NextChunk()': Headers/common/SC_AllocPool.h:71: error: 'Size' was not declared in this scope Headers/common/SC_AllocPool.h: In member function 'AllocChunk* AllocChunk::PrevChunk()': Headers/common/SC_AllocPool.h:74: error: 'PrevSize' was not declared in this scope Headers/common/SC_AllocPool.h: In member function 'bool AllocChunk::InUse()': Headers/common/SC_AllocPool.h:77: error: 'mSize' was not declared in this scope Headers/common/SC_AllocPool.h:77: error: 'kChunkInUse' was not declared in this scope Headers/common/SC_AllocPool.h: In member function 'bool AllocChunk::PrevInUse()': Headers/common/SC_AllocPool.h:80: error: 'mPrevSize' was not declared in this scope Headers/common/SC_AllocPool.h:80: error: 'kChunkInUse' was not declared in this scope Headers/common/SC_AllocPool.h: In member function 'void AllocChunk::SetSizeFree(int)': Headers/common/SC_AllocPool.h:83: error: 'mSize' was not declared in this scope Headers/common/SC_AllocPool.h:83: error: 'class AllocChunk' has no member named 'mPrevSize' Headers/common/SC_AllocPool.h: In member function 'void AllocChunk::SetSizeInUse(int)': Headers/common/SC_AllocPool.h:86: error: 'mSize' was not declared in this scope Headers/common/SC_AllocPool.h:86: error: 'class AllocChunk' has no member named 'mPrevSize' Headers/common/SC_AllocPool.h:86: error: 'kChunkInUse' was not declared in this scope Headers/common/SC_AllocPool.h: In member function 'void AllocChunk::SetNeighborsInUse(int)': Headers/common/SC_AllocPool.h:89: error: 'mPrevSize' was not declared in this scope Headers/common/SC_AllocPool.h:89: error: 'class AllocChunk' has no member named 'mSize' Headers/common/SC_AllocPool.h:89: error: 'kChunkInUse' was not declared in this scope Headers/common/SC_AllocPool.h: In member function 'bool AllocChunk::IsArea()': Headers/common/SC_AllocPool.h:92: error: 'mPrevSize' was not declared in this scope Headers/common/SC_AllocPool.h:92: error: 'kChunkInUse' was not declared in this scope Headers/common/SC_AllocPool.h:92: error: 'class AllocChunk' has no member named 'mSize' Headers/common/SC_AllocPool.h: At global scope: Headers/common/SC_AllocPool.h:110: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:125: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:127: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:129: error: typedef 'NewAreaFunc' is initialized (use decltype instead) Headers/common/SC_AllocPool.h:129: error: 'size_t' was not declared in this scope Headers/common/SC_AllocPool.h:135: error: expected ')' before 'allocArea' Headers/common/SC_AllocPool.h:141: error: expected ';' before '(' token Headers/common/SC_AllocPool.h:142: error: 'size_t' has not been declared Headers/common/SC_AllocPool.h:148: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:149: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:160: error: 'size_t' has not been declared Headers/common/SC_AllocPool.h:168: error: 'size_t' has not been declared Headers/common/SC_AllocPool.h:174: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h:181: error: 'size_t' has not been declared Headers/common/SC_AllocPool.h:184: error: 'size_t' has not been declared Headers/common/SC_AllocPool.h:198: error: 'size_t' has not been declared Headers/common/SC_AllocPool.h:272: error: 'NewAreaFunc' does not name a type Headers/common/SC_AllocPool.h:274: error: 'size_t' does not name a type Headers/common/SC_AllocPool.h: In member function 'void AllocPool::UnlinkFree(AllocChunk*)': Headers/common/SC_AllocPool.h:264: error: 'size_t' was not declared in this scope Headers/common/SC_AllocPool.h:264: error: expected ';' before 'size' Headers/common/SC_AllocPool.h:265: error: 'size' was not declared in this scope Source/common/SC_AllocPool.cpp: In member function 'void AllocPool::InitAlloc()': Source/common/SC_AllocPool.cpp:70: error: 'mAreaInitSize' was not declared in this scope Source/common/SC_AllocPool.cpp:73: error: 'mAreaInitSize' was not declared in this scope Source/common/SC_AllocPool.cpp: At global scope: Source/common/SC_AllocPool.cpp:92: error: expected ')' before 'inAllocArea' Source/common/SC_AllocPool.cpp: In member function 'void AllocPool::FreeAll()': Source/common/SC_AllocPool.cpp:122: error: 'NULL' was not declared in this scope Source/common/SC_AllocPool.cpp: In member function 'void AllocPool::FreeAllInternal()': Source/common/SC_AllocPool.cpp:138: error: 'size_t' was not declared in this scope Source/common/SC_AllocPool.cpp:138: error: expected ';' before 'size' Source/common/SC_AllocPool.cpp:140: error: 'size' was not declared in this scope Source/common/SC_AllocPool.cpp: In member function 'void AllocPool::Free(void*)': Source/common/SC_AllocPool.cpp:166: error: 'size_t' was not declared in this scope Source/common/SC_AllocPool.cpp:166: error: expected ';' before 'size' Source/common/SC_AllocPool.cpp:170: error: expected ';' before 'prevSize' Source/common/SC_AllocPool.cpp:171: error: 'prevSize' was not declared in this scope Source/common/SC_AllocPool.cpp:172: error: 'size' was not declared in this scope Source/common/SC_AllocPool.cpp:176: error: 'size' was not declared in this scope Source/common/SC_AllocPool.cpp:179: error: 'class AllocChunk' has no member named 'Size' Source/common/SC_AllocPool.cpp:184: error: 'mAreaMoreSize' was not declared in this scope Source/common/SC_AllocPool.cpp: At global scope: Source/common/SC_AllocPool.cpp:195: error: 'AllocArea* AllocPool::NewArea' is not a static member of 'class AllocPool' Source/common/SC_AllocPool.cpp:195: error: 'size_t' was not declared in this scope Source/common/SC_AllocPool.cpp:196: error: expected ',' or ';' before '{' token scons: *** [Source/common/SC_AllocPool.o] Error 1 scons: building terminated because of errors. ==> ОШИбКА: Сборка завершилась неудачно. Преждевременный выход... Error: Makepkg was unable to build supercollider-svn package. |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
П. С. : А это в качестве бонуса :-) вписать в конфиг .musca_start # Очень рекомендую установить rss-glx -- подборка замечательных хранителей экрана, которые использовать вместо фона рабочего стола намного веселее X-) exec plasma_rss -r --resolution 56 --speed 16 |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
И обещанный мною скрипт :D dmenfm ---------------------------------------------------------------- #!/bin/bash about="Dmen File Manager\nversion 0.1.2.1\nby Scott Garrett\n<wintervenom [(a)] archlinux.us>\nre-edition\nby Yuriy Pitometsu\n<Pitometsu [(a)] gmail.com>" ### Changelog ##################################################### # 0.1.0 # * Initial version # # 0.1.1 # + Option 'Open last used dir' # # # + Options 'Always open dirs' and 'Always open files' # # 0.1.2 # + Config moved to $XDG_CONFIG_HOME # # # + Options for dmenu styling # # # + Option to change executor # # # + Option to open file manager in current directory # # # + Plugins support # # 0.1.2.1 # + Font option for dmenu # ################################################################### # TODO: UTF-8 function defaults { show_hidden=0 show_backup=0 always_open_files=0 always_open_dirs=0 open_last=1 dmenu_caseinsens=1 dmenu_onbottom=1 dmenu_font='-*-ProggyClean-medium-r-normal-*-*-*-*-*-*-*-*' dmenu_bg='#228822' dmenu_fg='#000000' dmenu_sbg='#32CD32' dmenu_sfg='#000000' executor='exo-open' editor='geany' filemanager='thunar' } # initialization defaults d_dmenu_font="$dmenu_font" d_dmenu_bg="$dmenu_bg" d_dmenu_fg="$dmenu_fg" d_dmenu_sbg="$dmenu_sbg" d_dmenu_sfg="$dmenu_sfg" d_editor="$editor" d_executor="$executor" d_filemanager="$filemanager" function saveconfig { echo "show_hidden=$show_hidden show_backup=$show_backup always_open_dirs=$always_open_dirs always_open_files=$always_open_files open_last=$open_last dmenu_caseinsens=$dmenu_caseinsens dmenu_onbottom=$dmenu_onbottom dmenu_font=\"$dmenu_font\" dmenu_bg='$dmenu_bg' dmenu_fg='$dmenu_fg' dmenu_sbg='$dmenu_sbg' dmenu_sfg='$dmenu_sfg' editor=\"$editor\" executor=\"$executor\" filemanager=\"$filemanager\" last_dir=\"$(pwd)\" " > "$config" } function setmenu { menu="$menu $([ "$dmenu_caseinsens" == '1' ] && echo '-i') $([ "$dmenu_onbottom" == '1' ] && echo '-b') -fn $dmenu_font -nb $dmenu_bg -nf $dmenu_fg -sb $dmenu_sbg -sf $dmenu_sfg" } file=1 config_file="preferences" config_dir="$XDG_CONFIG_HOME/dmenfm" config="$config_dir/$config_file" plugins_dir="$XDG_CONFIG_HOME/dmenfm/plugins" menu='dmenu' [ ! -d "$config_dir" ] && mkdir "$config_dir" [ ! -d "$plugins_dir" ] && mkdir "$plugins_dir" [ ! -d "$plugins_dir/browser" ] && mkdir "$plugins_dir/browser" [ ! -d "$plugins_dir/operations" ] && mkdir "$plugins_dir/operations" [ ! -d "$plugins_dir/preferences" ] && mkdir "$plugins_dir/preferences" [ -e "$HOME/.dmanfs" ] && mv "$HOME/.dmanfs" "$config" defaults touch "$config" source "$config" setmenu [[ "$last_dir" && "$open_last" == 1 ]] && cd "$last_dir" while [ "$file" ]; do file=$((echo -e '..\n.'; ls $([[ "$show_hidden" == '1' ]] && echo '-A') $([[ "$show_backup" == '1' ]] && echo '-B'); echo -e "[Preferences]\n[Open in $filemanager]"; ls -B "$plugins_dir/browser") | $menu -p "$(basename $(pwd))") if [ "$file" ]; then if [ -e "$file" ]; then if $([ -d "$file" ] && [[ "$always_open_dirs" != '1' && "$file" != "." && "$file" != ".." ]]) || $([ -f "$file" ] && [[ "$always_open_files" != '1' ]]); then owd=$(pwd) opt=$((echo 'Open'; ([ -f "$file" ] && echo 'Edit'); echo -e 'Copy\nMove\nRename\nDelete'; ls -B "$plugins_dir/operations") | $menu -p "<$file>") else opt='Open' fi case "$opt" in 'Open') if [ -d "$file" ]; then cd "$file" else if [ "$executor" ] && which "$executor" &> /dev/null; then exec "$executor" "$owd/$file" & unset file elif which "$d_executor" &> /dev/null; then "$d_executor" "$owd/$file" unset file else echo -e "No executor found.\nSet one in [Preferences]." | $menu -p 'Error:' fi fi ;; 'Edit') if [ "$editor" ] && which "$editor" &> /dev/null; then exec "$editor" "$owd/$file" & unset file elif which "$d_editor" &> /dev/null; then exec "$d_editor" "$owd/$file" unset file else echo -e "No editor found.\nSet one in [Preferences]." | $menu -p 'Error:' fi ;; 'Copy') cdir=1 while [ "$cdir" ]; do cdir=$((echo -e '..\n.'; ls $([[ "$show_hidden" == 1 ]] && echo "-A") $([[ "$show_backup" == 1 ]] && echo "-B") -d */) | $menu -p "Copy <$file> to:") if [[ "$cdir" ]]; then opt=$(echo -e 'Open\nCopy' | $menu -p "Copy <$file> to <$cdir>:") if [[ "$opt" == "Open" ]]; then cd "$cdir" elif [[ "$opt" == "Copy" ]]; then echo "$file" [ -e "$cdir/$file" ] && opt=$(echo -e "No\nYes" | $menu -p "Replace existing <$file>?") [[ "$opt" == "Copy" || "$opt" == "Yes" ]] && cp -af "$owd/$file" "$cdir/$file" unset cdir fi fi done ;; 'Move') cdir=1 while [ "$cdir" ]; do cdir=$((echo -e '..\n.' && ls $([[ "$show_hidden" == 1 ]] && echo "-A") $([[ "$show_backup" == 1 ]] && echo "-B") -d */) | $menu -p "Move <$file> to:") if [[ "$cdir" ]]; then opt=$(echo -e 'Open\nMove' | $menu -p "Move <$file> to <$cdir>:") if [[ "$opt" == "Open" ]]; then cd "$cdir" elif [[ "$opt" == "Move" ]]; then echo "$file" [ -e "$cdir/$file" ] && opt=$(echo -e "No\nYes" | $menu -p "Replace existing <$file>?") [[ "$opt" == "Move" || "$opt" == "Yes" ]] && mv -f "$owd/$file" "$cdir/$file" unset cdir fi fi done ;; 'Rename') opt=$(echo "" | $menu -p "Rename <$file> to:") [ "$opt" ] && mv -f "$file" "$opt" ;; 'Delete') opt=$(echo -e "No\nYes" | $menu -p "Really delete <$file>?") [[ "$opt" == "Yes" ]] && rm -rf "$file" ;; *) [ "$opt" ] && [ -e "$plugins_dir/operations/$opt" ] && source "$plugins_dir/operations/$opt" ;; esac elif [[ "$file" =~ '[Open in' ]]; then which "$filemanager" &> /dev/null && exec "$filemanager" . & unset file elif [[ "$file" == '[Preferences]' ]]; then opt=1 while [ "$opt" ]; do opt=$((echo "Show hidden files [$show_hidden] Show backup files [$show_backup] Always open dirs [$always_open_dirs] Always open files [$always_open_files] Open last used dir [$open_last] Case-insensitive [$dmenu_caseinsens] Display on bottom [$dmenu_onbottom] Font [$dmenu_font] Background [$dmenu_bg] Foreground [$dmenu_fg] Selected background [$dmenu_sbg] Selected foreground [$dmenu_sfg] Executor [$executor] Editor [$editor] File manager [$filemanager] Set defaults About"; ls -B "$plugins_dir/preferences") | $menu -p "Preferences") case "$opt" in *"Show hidden files [$show_hidden]") (('show_hidden=!show_hidden')) ;; *"Show backup files [$show_backup]") (('show_backup=!show_backup')) ;; *"Always open dirs [$always_open_dirs]") (('always_open_dirs=!always_open_dirs')) ;; *"Always open files [$always_open_files]") (('always_open_files=!always_open_files')) ;; *"Open last used dir [$open_last]") (('open_last=!open_last')) ;; *"Case-insensitive [$dmenu_caseinsens]") (('dmenu_caseinsens=!dmenu_caseinsens')) ;; *"Display on bottom [$dmenu_onbottom]") (('dmenu_onbottom=!dmenu_onbottom')) ;; *"Font [$dmenu_font]") opt=$(echo -e "$dmenu_font\n[Default]" | $menu -p "Font:") [[ "$opt" == '[Default]' ]] && opt="$d_dmenu_font" [ "$opt" ] && dmenu_font="$opt" dmenu_test=1 ;; *"Background [$dmenu_bg]") opt=$(echo -e "$dmenu_bg\n[Default]" | $menu -p "Background:") [[ "$opt" == '[Default]' ]] && opt="$d_dmenu_bg" [ "$opt" ] && dmenu_bg="$opt" dmenu_test=1 ;; *"Foreground [$dmenu_fg]") opt=$(echo -e "$dmenu_fg\n[Default]" | $menu -p "Foreground:") [[ "$opt" == '[Default]' ]] && opt="$d_dmenu_fg" [ "$opt" ] && dmenu_fg="$opt" dmenu_test=1 ;; *"Selected background [$dmenu_sbg]") opt=$(echo -e "$dmenu_sbg\n[Default]" | $menu -p "Selected background:") [[ "$opt" == '[Default]' ]] && opt="$d_dmenu_sbg" [ "$opt" ] && dmenu_sbg="$opt" dmenu_test=1 ;; *"Selected foreground [$dmenu_sfg]") opt=$(echo -e "$dmenu_sfg\n[Default]" | $menu -p "Selected foreground:") [[ "$opt" == '[Default]' ]] && opt="$d_dmenu_sfg" [ "$opt" ] && dmenu_sfg="$opt" dmenu_test=1 ;; *"Executor [$executor]") opt=$(echo -e "$executor\n[Default]" | $menu -p "Executor:") [[ "$opt" == '[Default]' ]] && opt="$d_executor" [ "$opt" ] && executor="$opt" ;; *"Editor [$editor]") opt=$(echo -e "$editor\n[Default]" | $menu -p "Editor:") [[ "$opt" == '[Default]' ]] && opt="$d_editor" [ "$opt" ] && editor="$opt" ;; *"File manager [$filemanager]") opt=$(echo -e "$filemanager\n[Default]" | $menu -p "File manager:") [[ "$opt" == '[Default]' ]] && opt="$d_filemaneger" [ "$opt" ] && filemanager="$opt" ;; *"Set defaults") opt=$(echo -e "No\nYes" | $menu -p "Really set defaults?") [[ "$opt" == "Yes" ]] && defaults ;; 'About') echo -e "$about" | $menu -p "About:" ;; *) [ "$opt" ] && [ -e "$plugins_dir/preferences/$opt" ] && source "$plugins_dir/preferences/$opt" ;; esac done setmenu if [[ "$dmenu_test" == '1' ]]; then if [[ "OK" != "$(echo 'OK' | $menu -p 'Dmenu settings changed.')" ]]; then defaults source "$config" setmenu echo 'OK' | $menu -p 'Error in Dmenu settings. Reverted.' fi fi saveconfig elif [ -e "$plugins_dir/browser/$file" ]; then source "$plugins_dir/browser/$file" fi fi done saveconfig ---------------------------------------------------------------- |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
И напоследок (опять повторяюсь?) приведу свой стартовый конфиг с комментариями, ибо лучше 1 раз увидеть, чем 128 раз услышать…[~/.musca_start] ---------------------------------------------------------------- # Цветовая схема -- как я её себе представляю -- советую при настройке посмотреть man colors или showrgb | grep <нужный цвет> set border_focus LimeGreen set border_unfocus ForestGreen set border_dedicate_focus #3283CD set border_dedicate_unfocus #225888 set border_catchall_focus #CD327F set border_catchall_unfocus #882255 # навешиваем команды на кейбиндинги # стандартный терминал -- хотя нужно ли запускать больше одного экземпляра? bind on Mod4+t exec urxvt # хоткеем можно запустить скрипт dmenfm, создающий из dmenu минималистичный файловый менеджер. Жаль, что для него необходимо отдельно настраивать dmenu -- средств для более плотнойинтеграции я не нашел. Впрочем, создавать интегрированную среду из оконного и файлого менеджера -- это уже путь DE (Desktop environments -- рабочих столов). Чуть подправленный мной скрипт привожу в конце статьи bind on Mod4+z exec dmenfm bind on Mod4+Shift+z exec dmenfm # деление фрейма хоткеями пополам -- горизонтально и вертикально, соответственно bind on Mod4+Shift+h hsplit 1/2 bind on Mod4+Shift+v vsplit 1/2 # удаление фрейма bind on Mod4+Shift+r remove # удаление всех фреймов в группе кроме текущего, последний занимает место всей группы bind on Mod4+Shift+o only # аварийное завершение работы текущего окна bind on Mod4+Shift+k kill bind on Mod1+F4 kill # переключение между окнами текущей группы в текущем фрейме; local переключает во фрейме только те окна, которые в нём ранее открывались bind on Mod4+c cycle local next bind on Mod4+Shift+c cycle local prev # bind on Mod1+Shif+Tab cycle prev почему-то не работает :-\ bind on Control+Tab cycle prev bind on Mod1+Shif+Tab cycle prev # выбор текущего фрейма в группе bind on Mod4+Left focus left bind on Mod4+Right focus right bind on Mod4+Up focus up bind on Mod4+Down focus down # Super+PgDn и Super+PgUp -- переключение между группами bind on Mod4+Next use (next) bind on Mod4+Prior use (prev) # не знаю :) переписал на всякий случай. Возможно это нужно для поддержки работы нескольких экранов (но у меня только 1 монитор) bind on Mod4+Tab screen (next) # вызов dmenu с перечнем всех окон bind on Mod4+Shift+w switch window # вызов dmenu с перечнем всех групп bind on Mod4+Shift+g switch group #запуск dmenu с перечнем всех установленных программ -- штатное средство запуска программ bind on Mod4+x shell # Вызывает меню команд musca через dmenu, то же происходит по нажатию Super+M bind on Mod4+Shift+x command # пометить фрейм как занятый для открывающихся окон bind on Mod4+Shift+d dedicate flip # пометить фрейм для размещения в нём всех новых окон bind on Mod4+Shift+a catchall flip # отмена последней манипуляции с musca (!) bind on Mod4+Shift+u undo # переключение в режим плавающих окон bind on Mod4+Shift+s stack flip # перетаскивания окна между фреймами bind on Mod4+Shift+Left swap left bind on Mod4+Shift+Right swap right bind on Mod4+Shift+Up swap up bind on Mod4+Shift+Down swap down # изменение размеров текущего фрейма bind on Mod4+Control+Left resize left bind on Mod4+Control+Right resize right bind on Mod4+Control+Up resize up bind on Mod4+Control+Down resize down # выход из musca ;) bind on Mod4+Shift+q quit # вот примерно так осуществляются отдельные нефреймовые окна #manage off stalonetray #manage off Conky # настройка переменных musca # по умолчанию новое окно открывается в пустом фрейме, если такой есть, а не в текущем set window_open_frame empty # на вкус и цвет фломастеры разные -- я запускаю dmenu так set dmenu dmenu -i -b -fn -*-ProggyClean-medium-r-normal-*-*-*-*-*-*-*-* -nb ForestGreen -nf black -sb LimeGreen -sf black # а тут неплохо бы указать штатное средство вывода вербальной информации. Наверно, это всё-же будет dzen2, когда его освою :) #set notify echo `cat` # размеры рабочей части группы -- можно ограничить при использовании панелей и прочих апплетов-котлетов -- я не использую #pad 0 0 0 16 # место для приготовления котлетов #exec stalonetray #exec conky # загружаю конфигурацию текущей группы, сохранённую ранее командой dump load .musca_dump/term # автозапуск всяких окон exec emacs ~/.musca_start exec urxvt # можно создать сколько-то групп для работы. я обычно создаю их в процессе работы. Впрочем, можно это дело также повесить на хоткеи. Т. к. я не знаю, как при запуске окно отправлять в конкретную группу -- при старте, чтобы окна не путались, использую только одну группу # перерисовка текущего окна -- бывает, что некоторые окна болезненно реагируют на изменения размеров bind on Mod4+f refresh # создание группы с именем someone bind on Mod4+Insert add someone # удаление текущей или ближайшей из следующих группы с именем someone, все открытые в ней окна отправляются в следующую группу. Делаю так, потому, что не знаю, как удалять просто текущую группу без указания имени оной bind on Mod4+Delete drop someone # а вот так можно убрать рамку вокруг текущего фрейма, например. при просмотре фильма. Только я на знаю, как повесить переключатель включить/выключить рамку на 1 комбинацию, потому мспользую пару bind on Mod4+b border on bind on Mod4+Shift+b border off # И, наконец, пример обьединения комманд. Данная строчка, если её раскоментировать, добавит в команду создания новой группы вызов команды, ограничивающей рабочую область, оставляя внизу полосу в 26 пикселей, напр., для панели # hook ^add pad 0 0 0 26 # неудавшаяся попытка раскидывать окна по группам :-( #load .musca_dump/work #exec kazehakase file:///home/archer/Desktop/na_zapis_Uriel/Settings%20-%20Musca.htm #exec kazehakase file:///home/archer/Desktop/na_zapis_Uriel/Commands%20-%20Musca.htm ---------------------------------------------------------------- За основу взят конфиг из ArchWiki на http://wiki.archlinux.org/index.php/Musca. |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
А теперь, собственно, критика и пожелания. По мере обнаружения. Первое – жаль, что хоткеями фреймы делятся только пополам (оч. нехватает комбинации вроде EMACSовского C-u для задания параметров, если кто подскажет рецепт – пишите) ; далее – по dmenu – нет так полюбившегося мне по zsh перебора TABом и автодополнения ключей и параметров (в т.ч. и пути к файлам) (надеюсь, что это настраиваемо). Также я не нашел, как раскидывать окна по группам при старте (внутри одной группы по фреймам они встают при загрузке файла-дампа этой группы) – окна запускаются с разной задержкой и все норовят влезть в текущую группу. Еще, кажется, обнаружил пару небольших багов. Первый – делим группу на 4 равных фрейма, левый нижний, например, растягиваем немного вправо, правый верхний делим горизонтально, нижнюю часть – вертикально, нижний правый фрейм удаляем. По идеи, теперь фреймы должны заполнить пустое пространство, но вместо этого только правый нижний кусок правого верхнего изначального фрейма заполняет часть пространства, левый нижний же (изначальный) не изменился, и осталась незаполненная область. Теперь удаляем левую нижнюю часть правого верхнего изначального фрейма – опять только пустая, незаполняемая фреймами область! Удаляем оставшуюся верхнюю часть изначального левого верхнего фрейма – его оставшаяся правая нижняя часть заполняет часть пространства, но между ним и оставшимися левыми изначальными фреймами – пустая область, и переключиться теперь между фреймами штатными хоткеями не выйдет. Пути два – тыкать мышем, или ресайзить оставшиеся фреймы, чтобы те опять “сцепились”. Но это не есть нормально, и если кто знает лекарство от этого – буду очень благодарен. Если нет – пишите багрепорт, ибо ваш скромный слуга на буржуйском интернациональном не писатель. Второй баг также незначителен, но может доставлять некоторое неудобство. Пример – делим группу на 3 фрейма, 2 помечаем как dedicate и catchall соответственно, переходим на третий. Теперь переходим в stack режим и обратно. Все фреймы рисуются по умолчанию, без подсветки режима. Это может ввести в заблуждение, т. к. режимы по-прежниму включены – чтобы удостовериться, достаточно переключить фокус на неактивные фреймы – и те вновь подсветятся соответственно режимам. Думаю, об этом также стоит упомянуть в багрэпорте. Ну, и, на последок, немного помечтаем. Во-первых, я не знаю, какое средство вывода информации сюда подойдёт (умолчательно все сообщения выводятся просто в stdout). Если есть идеи и варианты – буду рад услышать. Интересно было бы попробовать прикрутить conky или dzen как системный монитор, но отображать его только по нажатию соответствующего хоткея тонкой строчкой вверху или внизу – выводить дату/время, системный мониторинг, сюда же прикрутить какой-нибудь трэер (trayer или stalonetray) и средство визуализации раскиданных по группам окон. Обычно его называют пейджером и реализовывают в виде маленькой модели окошек в квадратиках воркспейсов. И правда, для пимпочкотыкательных интерфейсов что-то лучше того же ipager придумать сложно. Но я представляю себе это средство визуализации несколько иначе, благо это полность походит к musca. Хотелось бы видеть монитор в текстовом режиме, отображающий информацию примерно в следующем виде: */term +urxvt -mirage *+emacs /work +evince -tkabber /music +snd Также мне кажется неправильной связка с dmenu. Например, совместив функционал родного средства запуска программ dmemu shell с DmenFM (файловый менеджер – скрипт, работающий через dmenu), можно получить автодополнение/перебор имён файлов, как аргументов запускаемых программ – то, чего мне так не хватает после Ion3. Но переменная строки запуска dmenu инкапсулирована, и приходится настраивать такой запуск приложений независимо от Musca, отдельно настраивая параметры dmenu. Это не очень хорошо, и, надеюсь, этот архетектурный недочёт исправят. И еще – уже просто пожелание – хотелось бы, чтобы указатель мыша следовал за фокусом окон, как в Ion3, а также исчезал при неактивности мыши, т. к. при работе только с клавиатуры – приходится изредка тянуться за мышем, чтобы только подвинуть его курсор :-) |