Eterm - o Terminal Multiuso

Tags: , — April 25, 2008 @ 4:59 pm

O Eterm é um emulador de terminal para X robusto, extremamente leve e altamente configurável, contando com diversos temas e menus personalizáveis além de fake-tranparency. Como parte do Enlightenment Project, o Eterm era o terminal padrão do e16, mas mesmo sem possuir os recursos gráficos do Evas, ainda é uma ótima opção para usuários do e17.

Já faz algum tempo que utilizo o Eterm. E mesmo depois de passar (rapidamente) por outros gerenciadores de janelas e desktops, como KDE, Gnome, Xfce e Fluxbox, nunca encontrei um emulador de terminal com tantos recursos como o Eterm ou que suprisse tão bem minhas necessidades. Gnome-terminal e Konsole podem ser ótimos por se encaixarem perfeitamente a seus respectivos DEs, mas acho que nenhum deles dispõe da flexibilidade do Eterm, e também não acho que ‘tabs’ combinam com um terminal.

O que mais gosto no Eterm são seus menus editáveis. Embora uma primeira olhada em seus arquivos de configuração possa assustar um pouco, pela sintaxe ser bem diferente, após alguns dias de uso ela torna-se bem amigável. Eu utilizo meu Eterm com menus ocultos, exibidos ao clicar com o botão direito, e com comandos para conectar a servidores remotos (ssh e smb) e comandos auxiliares para o vim.

<eterm-0.9.1>

begin menu
  title Font
  begin menuitem
    text “Normal”
    action string “\e]50;#”
  end
  begin menuitem
    text “Larger”
    action string “\e]50;#+”
  end
  begin menuitem
    text “Smaller”
    action string “\e]50;#-”
  end
  -
  begin menuitem
    text “Font 1″
    action string “\e]50;#1″
  end
  begin menuitem
    text “Font 2″
    action string “\e]50;#2″
  end
  begin menuitem
    text “Font 3″
    action string “\e]50;#3″
  end
  begin menuitem
    text “Font 4″
    action string “\e]50;#4″
  end
end
begin menu
  title Toggles
  begin menuitem
    text “Cursor Visible”
    action string “\e[?25t”
  end
  begin menuitem
    text “Home on Output”
    action string “\e[?1010t”
  end
  begin menuitem
    text “Home on Input”
    action string “\e[?1012t”
  end
  begin menuitem
    text “Map Alert”
    action string “\e]6;21\a”
  end
  begin menuitem
    text “Primary/Secondary Screen”
    action string “\e[?47t”
  end
  begin menuitem
    text “Reverse Video”
    action string “\e[?5t”
  end
  begin menuitem
    text “Select Trailing Spaces”
    action string “\e]6;25\a”
  end
  begin menuitem
    text “Select Whole Line on Triple-click”
    action string “\e]6;23\a”
  end
  begin menuitem
    text “Visual Bell”
    action string “\e]6;20\a”
  end
  begin menuitem
    text “X11 Mouse Reporting”
    action string “\e[?1000t”
  end
  begin menuitem
    text “Xterm Selection Behavior”
    action string “\e]6;22\a”
  end
end
begin menu
  title Keys
  begin menuitem
    text “Application Arrow Keys”
    action string “\e[?1t”
  end
  begin menuitem
    text “Application Keypad”
    action string “\e[?66t”
  end
  begin menuitem
    text “Backspace/Delete”
    action string “\e[?67t”
  end
  begin menuitem
    text “Xterm Shift-Keys”
    action string “\e[?35t”
  end
end
begin menu
  title Scrollbar
  begin menuitem
    text “Toggle Visibility”
    rtext “Ctrl-Button2″
    action string “\e[?30t”
  end
  begin menuitem
    text “Swap Sides”
    action string “\e]6;11\a”
  end
  begin menuitem
    text “Toggle Floating”
    action string “\e]6;12\a”
  end
  begin menuitem
    text “Toggle Popup Mode”
    action string “\e]6;13\a”
  end
  -
  begin menuitem
    text “Motif (Traditional) Style”
    action string “\e]6;10;motif;;\a”
  end
  begin menuitem
    text “NeXT Style”
    action string “\e]6;10;next;;\a”
  end
  begin menuitem
    text “Xterm Style”
    action string “\e]6;10;xterm;;\a”
  end
end
begin menu
  title Width
  begin menuitem
    text “5″
    action string “\e]6;10;;5;\a”
  end
  begin menuitem
    text “6″
    action string “\e]6;10;;6;\a”
  end
  begin menuitem
    text “7″
    action string “\e]6;10;;7;\a”
  end
  begin menuitem
    text “8″
    action string “\e]6;10;;8;\a”
  end
  begin menuitem
    text “9″
    action string “\e]6;10;;9;\a”
  end
  begin menuitem
    text “10″
    action string “\e]6;10;;10;\a”
  end
  begin menuitem
    text “11″
    action string “\e]6;10;;11;\a”
  end
  begin menuitem
    text “12″
    action string “\e]6;10;;12;\a”
  end
  begin menuitem
    text “13″
    action string “\e]6;10;;13;\a”
  end
  begin menuitem
    text “14″
    action string “\e]6;10;;14;\a”
  end
  begin menuitem
    text “15″
    action string “\e]6;10;;15;\a”
  end
  begin menuitem
    text “16″
    action string “\e]6;10;;16;\a”
  end
  begin menuitem
    text “17″
    action string “\e]6;10;;17;\a”
  end
  begin menuitem
    text “18″
    action string “\e]6;10;;18;\a”
  end
  begin menuitem
    text “19″
    action string “\e]6;10;;19;\a”
  end
  begin menuitem
    text “20″
    action string “\e]6;10;;20;\a”
  end
end
begin menu
  title “Move to Desktop”
  begin menuitem
    text “0″
    action string “\e]6;50;0;\a”
  end
  begin menuitem
    text “1″
    action string “\e]6;50;1;\a”
  end
  begin menuitem
    text “2″
    action string “\e]6;50;2;\a”
  end
  begin menuitem
    text “3″
    action string “\e]6;50;3;\a”
  end
  begin menuitem
    text “4″
    action string “\e]6;50;4;\a”
  end
  begin menuitem
    text “5″
    action string “\e]6;50;5;\a”
  end
  begin menuitem
    text “6″
    action string “\e]6;50;6;\a”
  end
  begin menuitem
    text “7″
    action string “\e]6;50;7;\a”
  end
end
begin menu
  title Terminal
  begin menuitem
    text “Toggles”
    action submenu “Toggles”
  end
  begin menuitem
    text “Keys”
    action submenu “Keys”
  end
  begin menuitem
    text “Scrollbar”
    action submenu “Scrollbar”
  end
  begin menuitem
    text “Move to Desktop”
    action submenu “Move to Desktop”
  end
  -
  begin menuitem
    text “Steal Focus”
    rtext “Ctrl-Button1″
    action string “\e]5;\a”
  end
  begin menuitem
    text “Full Reset”
    action string “\ec”
  end
end
begin menu
  title Tiled
  begin menuitem
    text “Acid Chess”
    action string “\e]20;tile/acid_chess.png;0+0:tile\a”
  end
  begin menuitem
    text “A Distant Star”
    action string “\e]20;tile/a_distant_star.png;0+0:tile\a”
  end
  begin menuitem
    text “Alpha Centauri”
    action string “\e]20;tile/alpha_centauri.png;0+0:tile\a”
  end
  begin menuitem
    text “Army Brat”
    action string “\e]20;tile/army_brat.png;0+0:tile\a”
  end
  begin menuitem
    text “Bubbly1″
    action string “\e]20;tile/bubbly1.jpg;0+0:tile\a”
  end
  begin menuitem
    text “Bubbly2″
    action string “\e]20;tile/bubbly2.jpg;0+0:tile\a”
  end
  begin menuitem
    text “Bubbly3″
    action string “\e]20;tile/bubbly3.jpg;0+0:tile\a”
  end
  begin menuitem
    text “Bubbly4″
    action string “\e]20;tile/bubbly4.jpg;0+0:tile\a”
  end
  begin menuitem
    text “Circuit”
    action string “\e]20;tile/circuit.jpg;0+0:tile\a”
  end
  begin menuitem
    text “Cold Steel”
    action string “\e]20;tile/cold_steel.png;0+0:tile\a”
  end
  begin menuitem
    text “Conch”
    action string “\e]20;tile/conch.png;0+0:tile\a”
  end
  begin menuitem
    text “Confusion”
    action string “\e]20;tile/confusion.jpg;0+0:tile\a”
  end
  begin menuitem
    text “Connect The Dots”
    action string “\e]20;tile/connect_the_dots.png;0+0:tile\a”
  end
  begin menuitem
    text “Cyber Bg”
    action string “\e]20;tile/cyber_bg.jpg;0+0:tile\a”
  end
  begin menuitem
    text “Darkness”
    action string “\e]20;tile/darkness.png;0+0:tile\a”
  end
  begin menuitem
    text “Falling”
    action string “\e]20;tile/falling.png;0+0:tile\a”
  end
  begin menuitem
    text “Fascination”
    action string “\e]20;tile/fascination.png;0+0:tile\a”
  end
  begin menuitem
    text “Firestorm”
    action string “\e]20;tile/firestorm.png;0+0:tile\a”
  end
  begin menuitem
    text “For A Moment”
    action string “\e]20;tile/for_a_moment.png;0+0:tile\a”
  end
  begin menuitem
    text “Graffiti”
    action string “\e]20;tile/graffiti.png;0+0:tile\a”
  end
  begin menuitem
    text “Gray Matter”
    action string “\e]20;tile/gray_matter.png;0+0:tile\a”
  end
  begin menuitem
    text “Lightning Crashes”
    action string “\e]20;tile/lightning_crashes.png;0+0:tile\a”
  end
  begin menuitem
    text “Marbles”
    action string “\e]20;tile/marbles.png;0+0:tile\a”
  end
  begin menuitem
    text “Moody Blues”
    action string “\e]20;tile/moody_blues.png;0+0:tile\a”
  end
  begin menuitem
    text “Murky Depths”
    action string “\e]20;tile/murky_depths.png;0+0:tile\a”
  end
  begin menuitem
    text “Oil On Canvas”
    action string “\e]20;tile/oil_on_canvas.png;0+0:tile\a”
  end
  begin menuitem
    text “Pebble Beach”
    action string “\e]20;tile/pebble_beach.png;0+0:tile\a”
  end
  begin menuitem
    text “Ping Pong”
    action string “\e]20;tile/ping-pong.png;0+0:tile\a”
  end
  begin menuitem
    text “Plasma”
    action string “\e]20;tile/plasma.png;0+0:tile\a”
  end
  begin menuitem
    text “Pulse”
    action string “\e]20;tile/pulse.png;0+0:tile\a”
  end
  begin menuitem
    text “Rolling Meadows”
    action string “\e]20;tile/rolling_meadows.png;0+0:tile\a”
  end
  begin menuitem
    text “Shades Of Being”
    action string “\e]20;tile/shades_of_being.png;0+0:tile\a”
  end
  begin menuitem
    text “Shale”
    action string “\e]20;tile/shale.jpg;0+0:tile\a”
  end
  begin menuitem
    text “Shattered Windows”
    action string “\e]20;tile/shattered_windows.png;0+0:tile\a”
  end
  begin menuitem
    text “Shock And Awe”
    action string “\e]20;tile/shock_and_awe.png;0+0:tile\a”
  end
  begin menuitem
    text “Sitting In Acid”
    action string “\e]20;tile/sitting_in_acid.png;0+0:tile\a”
  end
  begin menuitem
    text “Spring Rain”
    action string “\e]20;tile/spring_rain.png;0+0:tile\a”
  end
  begin menuitem
    text “Stained Glass”
    action string “\e]20;tile/stained_glass.png;0+0:tile\a”
  end
  begin menuitem
    text “Tales Of Earthsea”
    action string “\e]20;tile/tales_of_earthsea.png;0+0:tile\a”
  end
  begin menuitem
    text “Tangled Web”
    action string “\e]20;tile/tangled_web.png;0+0:tile\a”
  end
  begin menuitem
    text “The Wall”
    action string “\e]20;tile/the_wall.png;0+0:tile\a”
  end
  begin menuitem
    text “Trees Are Leafy”
    action string “\e]20;tile/trees_are_leafy.png;0+0:tile\a”
  end
  begin menuitem
    text “Veins 2″
    action string “\e]20;tile/veins_2.png;0+0:tile\a”
  end
  begin menuitem
    text “Veins”
    action string “\e]20;tile/veins.png;0+0:tile\a”
  end
  begin menuitem
    text “Violetta”
    action string “\e]20;tile/violetta.png;0+0:tile\a”
  end
  begin menuitem
    text “Water Into Wine”
    action string “\e]20;tile/water_into_wine.png;0+0:tile\a”
  end
  begin menuitem
    text “Wormhole”
    action string “\e]20;tile/wormhole.png;0+0:tile\a”
  end
  begin menuitem
    text “Woven Memories”
    action string “\e]20;tile/woven_memories.png;0+0:tile\a”
  end
end
begin menu
  title Scaled
  begin menuitem
    text “Day Night”
    action string “\e]20;scale/day-night.jpg;100\a”
  end
  begin menuitem
    text “Midnight Sky”
    action string “\e]20;scale/midnight_sky.png;100\a”
  end
  begin menuitem
    text “Neopolis Horizon”
    action string “\e]20;scale/Neopolis-horizon.jpg;100\a”
  end
  begin menuitem
    text “Sailors Delight”
    action string “\e]20;scale/sailors_delight.png;100\a”
  end
  begin menuitem
    text “Wasteland”
    action string “\e]20;scale/wasteland.jpg;100\a”
  end
  begin menuitem
    text “Wintertree”
    action string “\e]20;scale/wintertree.jpg;100\a”
  end
end
begin menu
  title Attrib
  begin menuitem
    text “Full Size”
    action string “\e]20;;100×100″
  end
  begin menuitem
    text “Normal Size”
    action string “\e]20;;0×0″
  end
  -
  begin menuitem
    text “Tiled”
    action string “\e]20;;:tile”
  end
  begin menuitem
    text “Scaled”
    action string “\e]20;;100×100″
  end
  begin menuitem
    text “Proportional Scale”
    action string “\e]20;;100×100:propscale”
  end
  -
  begin menuitem
    text “Center”
    action string “\e]20;;=+50+50″
  end
  begin menuitem
    text “Top Left Corner”
    action string “\e]20;;=+0+0″
  end
  begin menuitem
    text “Bottom Right Corner”
    action string “\e]20;;=+100+100″
  end
end
begin menu
  title Pixmap
  begin menuitem
    text “None”
    action string “\e[m\e]20;;\a”
  end
  begin menuitem
    text “Toggle Viewport Mode”
    action string “\e]6;24\a”
  end
  begin menuitem
    text “Tiled”
    action submenu “Tiled”
  end
  begin menuitem
    text “Scaled”
    action submenu “Scaled”
  end
  -
  begin menuitem
    text “Attrib”
    action submenu “Attrib”
  end
end
begin menu
  title Brightness
  begin menuitem
    text “512 (200\%)”
    action string “\e]6;1;image;brightness;512\a”
  end
  begin menuitem
    text “480 (188\%)”
    action string “\e]6;1;image;brightness;480\a”
  end
  begin menuitem
    text “448 (175\%)”
    action string “\e]6;1;image;brightness;448\a”
  end
  begin menuitem
    text “416 (163\%)”
    action string “\e]6;1;image;brightness;416\a”
  end
  begin menuitem
    text “384 (150\%)”
    action string “\e]6;1;image;brightness;384\a”
  end
  begin menuitem
    text “352 (138\%)”
    action string “\e]6;1;image;brightness;352\a”
  end
  begin menuitem
    text “320 (125\%)”
    action string “\e]6;1;image;brightness;320\a”
  end
  begin menuitem
    text “288 (113\%)”
    action string “\e]6;1;image;brightness;288\a”
  end
  begin menuitem
    text “256 (100\%)”
    action string “\e]6;1;image;brightness;256\a”
  end
  begin menuitem
    text “224 (88\%)”
    action string “\e]6;1;image;brightness;224\a”
  end
  begin menuitem
    text “192 (75\%)”
    action string “\e]6;1;image;brightness;192\a”
  end
  begin menuitem
    text “160 (63\%)”
    action string “\e]6;1;image;brightness;160\a”
  end
  begin menuitem
    text “128 (50\%)”
    action string “\e]6;1;image;brightness;128\a”
  end
  begin menuitem
    text “96 (38\%)”
    action string “\e]6;1;image;brightness;96\a”
  end
  begin menuitem
    text “64 (25\%)”
    action string “\e]6;1;image;brightness;64\a”
  end
  begin menuitem
    text “32 (13\%)”
    action string “\e]6;1;image;brightness;32\a”
  end
  begin menuitem
    text “0 (0\%)”
    action string “\e]6;1;image;brightness;0\a”
  end
end
begin menu
  title Contrast
  begin menuitem
    text “512 (200\%)”
    action string “\e]6;1;image;contrast;512\a”
  end
  begin menuitem
    text “480 (188\%)”
    action string “\e]6;1;image;contrast;480\a”
  end
  begin menuitem
    text “448 (175\%)”
    action string “\e]6;1;image;contrast;448\a”
  end
  begin menuitem
    text “416 (163\%)”
    action string “\e]6;1;image;contrast;416\a”
  end
  begin menuitem
    text “384 (150\%)”
    action string “\e]6;1;image;contrast;384\a”
  end
  begin menuitem
    text “352 (138\%)”
    action string “\e]6;1;image;contrast;352\a”
  end
  begin menuitem
    text “320 (125\%)”
    action string “\e]6;1;image;contrast;320\a”
  end
  begin menuitem
    text “288 (113\%)”
    action string “\e]6;1;image;contrast;288\a”
  end
  begin menuitem
    text “256 (100\%)”
    action string “\e]6;1;image;contrast;256\a”
  end
  begin menuitem
    text “224 (88\%)”
    action string “\e]6;1;image;contrast;224\a”
  end
  begin menuitem
    text “192 (75\%)”
    action string “\e]6;1;image;contrast;192\a”
  end
  begin menuitem
    text “160 (63\%)”
    action string “\e]6;1;image;contrast;160\a”
  end
  begin menuitem
    text “128 (50\%)”
    action string “\e]6;1;image;contrast;128\a”
  end
  begin menuitem
    text “96 (38\%)”
    action string “\e]6;1;image;contrast;96\a”
  end
  begin menuitem
    text “64 (25\%)”
    action string “\e]6;1;image;contrast;64\a”
  end
  begin menuitem
    text “32 (13\%)”
    action string “\e]6;1;image;contrast;32\a”
  end
  begin menuitem
    text “0 (0\%)”
    action string “\e]6;1;image;contrast;0\a”
  end
end
begin menu
  title Gamma
  begin menuitem
    text “512 (200\%)”
    action string “\e]6;1;image;gamma;512\a”
  end
  begin menuitem
    text “480 (188\%)”
    action string “\e]6;1;image;gamma;480\a”
  end
  begin menuitem
    text “448 (175\%)”
    action string “\e]6;1;image;gamma;448\a”
  end
  begin menuitem
    text “416 (163\%)”
    action string “\e]6;1;image;gamma;416\a”
  end
  begin menuitem
    text “384 (150\%)”
    action string “\e]6;1;image;gamma;384\a”
  end
  begin menuitem
    text “352 (138\%)”
    action string “\e]6;1;image;gamma;352\a”
  end
  begin menuitem
    text “320 (125\%)”
    action string “\e]6;1;image;gamma;320\a”
  end
  begin menuitem
    text “288 (113\%)”
    action string “\e]6;1;image;gamma;288\a”
  end
  begin menuitem
    text “256 (100\%)”
    action string “\e]6;1;image;gamma;256\a”
  end
  begin menuitem
    text “224 (88\%)”
    action string “\e]6;1;image;gamma;224\a”
  end
  begin menuitem
    text “192 (75\%)”
    action string “\e]6;1;image;gamma;192\a”
  end
  begin menuitem
    text “160 (63\%)”
    action string “\e]6;1;image;gamma;160\a”
  end
  begin menuitem
    text “128 (50\%)”
    action string “\e]6;1;image;gamma;128\a”
  end
  begin menuitem
    text “96 (38\%)”
    action string “\e]6;1;image;gamma;96\a”
  end
  begin menuitem
    text “64 (25\%)”
    action string “\e]6;1;image;gamma;64\a”
  end
  begin menuitem
    text “32 (13\%)”
    action string “\e]6;1;image;gamma;32\a”
  end
  begin menuitem
    text “0 (0\%)”
    action string “\e]6;1;image;gamma;0\a”
  end
end
begin menu
  title Background
  begin menuitem
    text “Toggle Transparency”
    action string “\e]6;0\a”
  end
  begin menuitem
    text “Pixmap”
    action submenu “Pixmap”
  end
  begin menuitem
    text “Brightness”
    action submenu “Brightness”
  end
  begin menuitem
    text “Contrast”
    action submenu “Contrast”
  end
  begin menuitem
    text “Gamma”
    action submenu “Gamma”
  end
end

###################
# Start Vim Menus #
###################

begin menu
  title Method
  begin menuitem
    text “Manual”
    action echo “\e:set fdm=manual\r”
  end
  begin menuitem
    text “Indent”
    action echo “\e:set fdm=indent\r”
  end
  begin menuitem
    text “Expression”
    action echo “\e:set fdm=expr\r”
  end
  begin menuitem
    text “Syntax”
    action echo “\e:set fdm=syntax\r”
  end
  begin menuitem
    text “Diff”
    action echo “\e:set fdm=diff\r”
  end
  begin menuitem
    text “Marker”
    action echo “\e:set fdm=marker\r”
  end
end
begin menu
  title F_Width
  begin menuitem
    text “0″
    action echo “\e:set fdc=0\r”
  end
  begin menuitem
    text “1″
    action echo “\e:set fdc=1\r”
  end
  begin menuitem
    text “2″
    action echo “\e:set fdc=2\r”
  end
  begin menuitem
    text “3″
    action echo “\e:set fdc=3\r”
  end
  begin menuitem
    text “4″
    action echo “\e:set fdc=4\r”
  end
  begin menuitem
    text “5″
    action echo “\e:set fdc=5\r”
  end
  begin menuitem
    text “6″
    action echo “\e:set fdc=6\r”
  end
  begin menuitem
    text “7″
    action echo “\e:set fdc=7\r”
  end
  begin menuitem
    text “8″
    action echo “\e:set fdc=8\r”
  end
end
begin menu
  title Folding
  begin menuitem
    text “Enable/Disable Folding”
    action echo “\ezi”
  end
  begin menuitem
    text “View Curosr Line”
    action echo “\ezv”
  end
  begin menuitem
    text “View Cursor Line only”
    action echo “\ezMzx”
  end
  begin menuitem
    text “Close more folds”
    action echo “\ezm”
  end
  begin menuitem
    text “Close all folds”
    action echo “\ezM”
  end
  begin menuitem
    text “Open more folds”
    action echo “\ezr”
  end
  begin menuitem
    text “Open all folds”
    action echo “\ezR”
  end
  -
  begin menuitem
    text “Method”
    action submenu “Method”
  end
  begin menuitem
    text “Create Fold”
    action echo “\ezf”
  end
  begin menuitem
    text “Delete Fold”
    action echo “\ezd”
  end
  begin menuitem
    text “Delete All Folds”
    action echo “\ezD”
  end
  -
  begin menuitem
    text “Fold Column Width”
    action submenu “F_Width”
  end
end
begin menu
  title Shiftwidth
  begin menuitem
    text “2″
    action echo “\e:set shiftwidth=2\r”
  end
  begin menuitem
    text “3″
    action echo “\e:set shiftwidth=3\r”
  end
  begin menuitem
    text “4″
    action echo “\e:set shiftwidth=4\r”
  end
  begin menuitem
    text “5″
    action echo “\e:set shiftwidth=5\r”
  end
  begin menuitem
    text “6″
    action echo “\e:set shiftwidth=6\r”
  end
  begin menuitem
    text “7″
    action echo “\e:set shiftwidth=7\r”
  end
  begin menuitem
    text “8″
    action echo “\e:set shiftwidth=8\r”
  end
end
begin menu
  title Settings
  begin menuitem
    text “Toggle Line Numbering”
    action echo “\e:set nu!\r”
  end
  begin menuitem
    text “Toggle Line Wrap”
    action echo “\e:set wrap!\r”
  end
  begin menuitem
    text “Toggle Search Pattern Hilight”
    action echo “\e:set hls!\r”
  end
  begin menuitem
    text “Toggle Expand Tab”
    action echo “\e:set et!\r”
  end
  begin menuitem
    text “Toggle auto-indent”
    action echo “\e:set ai!\r”
  end
  -
  begin menuitem
    text “Toggle Toolbar”
    action string “\e]6;14\a”
  end
  begin menuitem
    text “Toggle Scrollbar Left/Right”
    action string “\e]6;11\a”
  end
  begin menuitem
    text “Toggle Scrollbar Visible”
    action string “\e[?30t”
  end
  -
  begin menuitem
    text “Shiftwidth”
    action submenu “Shiftwidth”
  end
  begin menuitem
    text “Text Width”
    action echo “\e:set textwidth=”
  end
end
begin menu
  title File
  begin menuitem
    text “Open…”
    rtext “[:e]”
    action echo “\e:e”
  end
  begin menuitem
    text “Split-Open…”
    rtext “[:sp]”
    action echo “\e:sp”
  end
  begin menuitem
    text “New”
    rtext “[:enew]”
    action echo “\e:enew\r”
  end
  -
  begin menuitem
    text “Save”
    rtext “[:w]”
    action echo “\e:w\r”
  end
  begin menuitem
    text “Save As…”
    rtext “[:saveas]”
    action echo “\e:saveas”
  end
  -
  begin menuitem
    text “Show Diff with…”
    rtext “[:diffsplit]”
    action echo “\e:diffsplit”
  end
  begin menuitem
    text “Show Patched by…”
    rtext “(broken)”
    action echo “o broken in gvim too”
  end
  -
  begin menuitem
    text “Print”
    rtext “[:print]”
    action echo “\e:print”
  end
  -
  begin menuitem
    text “Save-Exit”
    rtext “[:wq]”
    action echo “\e:wq\r”
  end
  begin menuitem
    text “Exit”
    rtext “[:q]”
    action echo “\e:q\r”
  end
end
begin menu
  title Edit
  begin menuitem
    text “Undo”
    rtext “[:u]”
    action echo “\e:u\r”
  end
  begin menuitem
    text “Redo”
    rtext “[:red]”
    action echo “\e:red\r”
  end
  begin menuitem
    text “Repeat”
    rtext “[.]”
    action echo “\e.”
  end
  -
  begin menuitem
    text “Cut”
    rtext “[+x]”
    action echo “+x”
  end
  begin menuitem
    text “Copy”
    rtext “[+y]”
    action echo “+y”
  end
  begin menuitem
    text “Paste”
    rtext “[^Y]”
    action echo “C-Y”
  end
  begin menuitem
    text “Put Before”
    action echo “\e[p\r”
  end
  begin menuitem
    text “Put After”
    action echo “\e]p\r”
  end
  begin menuitem
    text “Select All”
    rtext “[ggVG]”
    action echo “ggVG”
  end
  -
  begin menuitem
    text “Find”
    rtext “[/]”
    action echo “\e/”
  end
  begin menuitem
    text “Find and Replace”
    rtext “[:%s/]”
    action echo “\e:\%s/”
  end
  -
  begin menuitem
    text “Settings Window”
    rtext “[:options]”
    action echo “\e:options\r”
  end
  begin menuitem
    text “Settings”
    action submenu “Settings”
  end
end
begin menu
  title Tools
  begin menuitem
    text “Jump to this tag[x]”
    action echo “\eg^]”
  end
  begin menuitem
    text “Jump back”
    action echo “i\e^T”
  end
  begin menuitem
    text “Build Tags File”
    action echo “\e:!ctags -R .\r”
  end
  -
  begin menuitem
    text “Folding”
    action submenu “Folding”
  end
  -
  begin menuitem
    text “Make”
    rtext “[:make]”
    action echo “\e:make\r”
  end
  begin menuitem
    text “List Errors”
    rtext “[:cl]”
    action echo “\e:cl\r”
  end
  begin menuitem
    text “List Messages”
    rtext “[:cl!]”
    action echo “\ecl!\r”
  end
  begin menuitem
    text “Next Error”
    rtext “[:cn]”
    action echo “\e:cn\r”
  end
  begin menuitem
    text “Previous Error”
    rtext “[:cp]”
    action echo “\e:cp\r”
  end
  begin menuitem
    text “Older List”
    rtext “[:cold]”
    action echo “\e:cold\r”
  end
  begin menuitem
    text “Newer List”
    rtext “[:cnew]”
    action echo “\e:cnew\r”
  end
  begin menuitem
    text “Error Window”
    rtext “[:cwin]”
    action echo “\e:cwin\r”
  end
  -
  begin menuitem
    text “Convert to HEX”
    action echo “\e:let b:mod = &mod\r:silent \%!xxd\r:set ft=xxd\r:let &mod = b:mod\r”
  end
  begin menuitem
    text “Convert Back”
    action echo “\e:let b:mod = &mod\e:\%!xxd -r\r:doautocmd filetypedetect BufReadPost\r:let &mod = b:mod\r”
  end
end
begin menu
  title Syntax
  begin menuitem
    text “Set syntax only”
    action echo “\e:let s:syntax_menu_synonly=1\r”
  end
  begin menuitem
    text “Off”
    rtext “[:syn off]”
    action echo “\e:syn off\r”
  end
  begin menuitem
    text “Manual”
    rtext “[:syn manual]”
    action echo “\e:syn manual\r”
  end
  begin menuitem
    text “Automatic”
    rtext “[:syn on]”
    action echo “\e:syn on\r”
  end
  begin menuitem
    text “on (this file)”
    action echo “\e:set syn=ON\r”
  end
  begin menuitem
    text “off (this file)”
    action echo “\e:syn clear\r”
  end
  -
  begin menuitem
    text “Light Background”
    rtext “[:set bg=light]”
    action echo “\e:set bg=light\r”
  end
  begin menuitem
    text “Dark Background”
    rtext “[:set bg=dark]”
    action echo “\e:set bg=dark\r”
  end
  -
  begin menuitem
    text “Color test”
    action echo “\e:sp \$VIMRUNTIME/syntax/colortest.vim\r:source \%\r8Gz\r”
  end
  begin menuitem
    text “Hilight test”
    action echo “\e:so \$VIMRUNTIME/syntax/hitest.vim\r”
  end
  begin menuitem
    text “Convert to HTML”
    action echo “\e:so \$VIMRUNTIME/syntax/2html.vim\r”
  end
end
begin menu
  title Move_To
  begin menuitem
    text “Top”
    action echo “\e^WK”
  end
  begin menuitem
    text “Bottom”
    action echo “\e^WK”
  end
  begin menuitem
    text “Left”
    action echo “\e^WH”
  end
  begin menuitem
    text “Right”
    action echo “\e^WL”
  end
end
begin menu
  title Window
  begin menuitem
    text “New”
    action echo “\e^Wn”
  end
  begin menuitem
    text “Split”
    action echo “\e^Ws”
  end
  begin menuitem
    text “Split to \#”
    action echo “\e^W^^”
  end
  begin menuitem
    text “Split Vertically”
    action echo “\e^wv”
  end
  begin menuitem
    text “Split File Explorer”
    action echo “\e:20vsp .\r”
  end
  -
  begin menuitem
    text “Close”
    action echo “\e^Wc”
  end
  begin menuitem
    text “Close Other(s)”
    action echo “^Wo”
  end
  -
  begin menuitem
    text “Move To”
    action submenu “Move_To”
  end
  begin menuitem
    text “Rotate Up”
    action echo “\e^WR”
  end
  begin menuitem
    text “Rotate Down”
    action echo “\e^Wr”
  end
  -
  begin menuitem
    text “Equal Size”
    action echo “\e^W=”
  end
  begin menuitem
    text “Max Height”
    action echo “\e^W_”
  end
  begin menuitem
    text “Min Height”
    action echo “\e^W1_”
  end
  begin menuitem
    text “Max Width”
    action echo “\e^W\|”
  end
  begin menuitem
    text “Min Width”
    action echo “\e^W1\|”
  end
end
begin menu
  title Help
  begin menuitem
    text “Overview”
    action echo “\e:h\r”
  end
  begin menuitem
    text “How-to links”
    action echo “\e:h how-to\r”
  end
  begin menuitem
    text “Credits”
    action echo “\e:h credits\r”
  end
  begin menuitem
    text “Copying”
    action echo “\e:h uganda\r”
  end
  begin menuitem
    text “Find…”
    action echo “\e:helpfind”
  end
  -
  begin menuitem
    text “Version”
    action echo “\e:version\r”
  end
  begin menuitem
    text “About”
    action echo “\e:intro\r”
  end
end
begin menu
  title “Vim”
  begin menuitem
    text “File”
    action submenu “File”
  end
  begin menuitem
    text “Edit”
    action submenu “Edit”
  end
  begin menuitem
    text “Tools”
    action submenu “Tools”
  end
  begin menuitem
    text “Syntax”
    action submenu “Syntax”
  end
  begin menuitem
    text “Window”
    action submenu “Window”
  end
  begin menuitem
    text “Help”
    action submenu “Help”
  end
end

##############
# User Menus #
##############
begin menu
  title “Conectar”
  begin menuitem
    text “Nome do Servidor”
    action echo “ssh\\ user@127.0.0.1\\ -p\\ 22\n”
  end
end
begin menu
  title “Montar”
  begin menuitem
    text “Nome do Servidor”
    action echo “sshfs\\ user@127.0.0.1:/home/user\\ /mnt/servidor\\ -p\\ 22\\ -o\\ allow_other\n”
  end
end
begin menu
  title “Desmontar”
  begin menuitem
    text “Nome do Servidor”
    action echo “fusermount\\ -u\\ /mnt/servidor\n”
  end
end

###############
# Eterm menus #
###############
begin menu
  title “Eterm”
  begin menuitem
    text “Font”
    action submenu “Font”
  end
  begin menuitem
    text “Background”
    action submenu “Background”
  end
  begin menuitem
    text “Terminal”
    action submenu “Terminal”
  end
  -
  begin menuitem
    text “Vim”
    action submenu “Vim”
  end
  begin menuitem
    text “Connect”
    action submenu “Conectar”
  end
   begin menuitem
    text “Mount”
    action submenu “Montar”
  end
   begin menuitem
    text “Umount”
    action submenu “Desmontar”
  end
   -
  begin menuitem
    text “New Eterm Window”
    action script “spawn(Eterm)”
  end
  begin menuitem
    text “Search…”
    action script “search()”
  end
  begin menuitem
    text “Run…”
    action script “exec_dialog(Eterm -e )”
  end
  -
  begin menuitem
    text “Version”
    action string “\e[8n”
  end
  begin menuitem
    text “Status”
    action string “\e[9n”
  end
  separator
  begin menuitem
    text “Save User Settings…”
    action script “save”
  end
  begin menuitem
    text “Save Theme Settings…”
    action script “save(theme)”
  end
  begin menuitem
    text “Exit”
    action script “exit”
  end
end
begin menu
  title “Eterm Operations”
  begin menuitem
    text “New Eterm Window”
    action script “spawn(Eterm)”
  end
  begin menuitem
    text “Search…”
    action script “search()”
  end
  begin menuitem
    text “Run…”
    action script “exec_dialog(Eterm -e )”
  end
  -
  begin menuitem
    text “Version”
    action string “\e[8n”
  end
  begin menuitem
    text “Status”
    action string “\e[9n”
  end
  separator
  begin menuitem
    text “Save User Settings…”
    action script “save”
  end
  begin menuitem
    text “Save Theme Settings…”
    action script “save(theme)”
  end
  begin menuitem
    text “Exit”
    action script “exit”
  end
end

Como disse, o utilizo como um menu geral, exibido com um clique direito. Para usar este menu, edite o arquivo de configuração de seu tema:

vim $HOME/.Eterm/themes/Eterm/theme.cfg

Então procure e altere as linhas como a seguir:

...
# adiciona o menu personalizado
# verifique o caminho correto, neste caso ele estaria em $HOME/.Eterm/menus.cfg
%include "../../menus.cfg"
...
# exibe o menu 'Eterm' ao pressionar o botão direito
begin actions
    ...
    bind button3 to menu "Eterm"
    ....
end actions
...
# desabilita o menu superior, ou buttonbar, como é chamado no Eterm
begin toggles
    ...
    buttonbar 0
    ...
end toggles
...

As configurações que estão onde eu coloquei ‘…’ você pode deixar como estão ou editar como preferir. Não deixe de editar os menus também conforme suas necessidades, o que postei é apenas um exemplo de como o uso.

Caso ainda não possua o Eterm instalado em seu sistema, basta instalá-lo com # aptitude update && aptitude install eterm, ou utilizando o gerenciador de pacotes de sua distribuição. Temas, planos de fundo diversos e documentação, podem ser encontrados em http://eterm.org.

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Virtualização - Rodando Windows XP sob Linux com Qemu

Tags: , , , — April 24, 2008 @ 2:32 pm

2008-04-24_093557.pngVirtualização é a alma do negócio de hospedagem hoje em dia. Na semana passada contratei um novo servidor virtual, onde tenho acesso root e controle total, mas este não passa de uma máquina virtual, ou seja, é um sistema que roda dentro de outro. Mas não apenas para hospedagem web, virtualização também pode ser usada para rodar, por exemplo, um Windows XP dentro de sua distro preferida, eliminando a necessidade de um Dual Boot para rodar aplicações Windows.

Existem diversos emuladores de processadores disponíveis para criar máquinas virtuais, como o VMware, VirtualBox e QEMU, por exemplo, os três disponíveis para Linux. No meu caso utilizei o QEmu, isso porque já havia testado ele uma vez, e pelo que li a respeito achei que ele parece mais fácil de usar do que os outros.

ATENÇÃO: Caso precise rodar apenas algumas aplicações Windows, você poderá utilizar o Wine, uma implemetação livre da API do Windows que suporta uma boa gama de programas win32, podendo rodá-los nativamente no Linux, o que mostra uma performance muito melhor.

Também é possível encontrar facilmente programas Linux equivalentes para a maioria das aplicações conhecidas para Windows, veja aqui, aqui ou aqui.

Um Windows XP executado em uma máquina virtual tente a ficar um pouco lento. Para melhor a performance pode-mos utilizar o Qemu Accelerator (KQemu) ou o KVM (Kernel Based Virtual Machine), o que vou abordar aqui.

Primeiramente precisamos saber se seu kernel possui suporte para rodar o kvm. Digite o comando abaixo, como root, em um terminal:

# grep -E '^flags.*(vmx|svm)' /proc/cpuinfo

Se você obtiver algum resultado, então seu computador suporta virtualização de hardware e podemos continuar, caso contrário, verifique em sua BIOS se há opção para habilitar/desabilitar virtualização. Se não houver esta opção será melhor tentar utilizar o KQemu (tutorial aqui, em inglês).

Continuando… Primeiramente instale os pacotes qemu e kvm.

# aptitude install qemu kvm

Após isso carrege o módulo kvm próprio para seu processador (você pode adicionar o módulo em /etc/modules posteriormente para ser carregado na inicialização).

  • Para processadores AMD:
    # modprobe kvm-amd
  • Para processadores Intel:
    # modprobe kvm-intel

Além disso você precisará alterar o grupo de /dev/kvm para o grupo kvm e adicionar seu usuário a este grupo:

# chown root:kvm /dev/kvm
# adduser $USER kvm

Lembrando de sair e logar novamente para certificar-se que o novo grupo será usado. Agora começamos com a instalação em si.

Primeiramente você deve criar um arquivo de image, que será onde o Windows XP será instalado:

$ qemu-img create windows.img -f qcow 6G

A opção -f qcow economiza espaço, utilizando apenas o necessário para a instalação, até o limite especificado (6G). A desvantagem é que a imagem no formato qcow não pode ser montada no sistema, então se você deseja acessar os arquivos da imagem windows.img poderá omitir a opção ‘-f qcow’, mas lembrando que assim a imagem alocará todo o espaço especificado (ou seja, todos os 6G, mesmo que a instalação ocupe menos).

Para uma instalação completa do Windows XP você precisará de, no mínimo, 2GB ou 3GB. Porém é possível encontrar imagens de instalação modificadas (obviamente ilegais, mas não deve haver problema se você possui uma chave original do Windows XP) que ocupam menos de 500MB.

Após criada a imagem, insira o cd do windows em seu driver e execute a linha a seguir:

$ kvm -no-acpi -m 384 -cdrom /dev/cdrom -boot d windows.img

2008-04-23_220608.pngA opção -m especifica a quantidade de memória alocada para o sistema. 384 é um bom começo para o WinXP, caso disponha de mais memória você poderá alocar mais. Também é essencial que utilize a opção -no-acpi, já que o windows não terá acesso direto a placa mãe.

Caso deseje executar a instalação a partir de uma imagem, e não do CD, basta usar o comando como a seguir. No exemplo abaixo também alocamos mais memória.

$ kvm -no-acpi -m 512 -cdrom /backups/windows.iso -boot d windows.img

Caso a instalação trave em algum momento, basta fechar oqemu (feche a janela, ou pressione Ctrl+C no terminal que rodou os comandos) e iniciar novamente, que a instalação progredirá de onde parou.

IMPORTANTE:
A opção -boot d força o kvm/qemu a iniciar primeiro do cdrom, após concluir a instalação você poderá iniciar seu windows com o comando a seguir:

$ kvm -localtime -no-acpi -m 512 -cdrom /dev/cdrom windows.img

A opção -localtime ajusta o relógio da máquina virtual como a hora atual de seu sistema, e a opção -cdrom diz a máquina para tentar iniciar primeiramente do cdrom, útil para atualizações do windows ou coisas do gênero.

2008-04-24_093452.pngVocê pode criar um lançador ou item no menu, para seu windows, especificando o caminho completo para windows.img, assim você poderá iniciá-lo com apenas um clique.

Configurar Rede:

O Qemu cria uma rede virtual entre a máquina host (o seu Linux) e a guest (O Windows) e um servidor DHCP, o que é suficiente para transferir arquivos e navegar na internet.

Por padrão o ip do host fica 10.0.2.2 e do guest algo como 10.0.2.15. Assim, caso tenha algum servidor instalado no host você pode acessá-lo pelo ip 10.0.2.2 (como páginas web, no caso de um Apache ou Lighttpd rodando).

Caso a navegação não funcione, pode ser um problema de DNS. Assim, vá nas “Configurações de Rede” do Windows, selecione a “Conexão Local” e nas propriedades do IP coloque o DNS de sua preferência (mantenha o endereço IP como “Obter Automaticamente”). Caso não conheça nenhum, utilize este: 200.176.2.10. Este é um servidor DNS no Terra, mas utilizando um mais próximo de seu computador vai deixar a navegação mais rápida.

A rede em modo de usuário, que é o padrão do qemu, tem várias desvantagens, como por exemplo, não permitir pings. Se você deseja configurar uma rede completa, e deixar a máquina virtual visível para toda a rede, você precisará configurar interfaces de rede virtuais. Não vou explicar aqui porque ainda não testei esta possibilidade, mas basta pesquisar na documentação do qemu que você verá vários bons tutoriais.

O Qemu ainda tem várias outras opções, como gravar as alterações no sistema em um arquivo separado, mantendo a imagem instalada intacta. Para isso você deve criar uma imagem de overlay:

qemu-img create -b windows.img -f qcow windows.ovl

Então, para executar o windows utilize a imagem de overlay (adicione as opções que desejar):

kvm windows.ovl

Assim, caso a imagem do windows seja arruinada, por um vírus ou algum bug, por exemplo (nada muito incomum), basta remover a imagem de overlay e utilizar a imagem original.

A principal razão para mim decidir rodar um Windows XP numa máquina virtual é para poder rodar alguns jogos que não rodam no wine, por utilizarem nProtect/GameGuard. No meu caso ainda não habilitei o som na máquina virtual nem habilitei compartilhamento de arquivos, mas logo farei um novo post abordando esses assuntos.

Fontes: https://help.ubuntu.com/community/WindowsXPUnderQemuHowT, https://help.ubuntu.com/community/KVM

PS.: Apesar dos tutoriais terem sido tirados da wiki do ubuntu, estes podem ser utilizados para virtualização no Debian (o meu caso) ou qualquer outra distro.

Se você gostou deste artigo, inscreva-se em meu RSS feed!

SpiderMonkey JavaScript Shell - Programando JavaScript em linha de comando

Tags: , , , , — March 14, 2008 @ 7:10 pm

Desenvolvedores Web costumam ter grandes problemas para debugar JavaScript. Enquanto programas como a extensão FireBug do Firefox fazem milagres para debugar, o programador ainda precisa colocar sucessivos alert()s para descobrir os valores que suas variáveis assumem em determinados pontos. Certo?

Errado!

Estava pesquisando agora a pouco algumas funções de js no MDC quando fiquei meio curioso com o modo como os exemplos de código eram mostrados e, em especial, de uma função print(). Como no fragmento a seguir:

var names = "Harry Trump ;Fred Barney; Helen Rigby ;";
print(names);
var re = /\s*;\s*/;
var nameList = names.split(re);
print(nameList);

Ora, bolas! Javascript não pode imprimir nada em stdout, então, como pode existir uma função print()?

Então que, pesquisando mais um pouquinho, cheguei ao SpiderMonkey Javascript Shell.

O SpiderMonkey é o mecanismo interpretador de Javascript do Gecko, escrito em C, e utilizado em vários produtos Mozilla, como o Firefox, por exemplo e a boa notícia é que ele provê também um Shell para executar js em linha de comando.

Com isso fica extremamente fácil criar e testar scripts para usar posteriormente. Veja o exemplo a seguir:

diovani@debian-websul:~$ js
js> var frase = 'Hello World!';
js> var tamanho = frase.length;
js> var teste = frase + ' tem ' + tamanho + ' caracteres.';
js> print(teste);
Hello World! tem 12 caracteres.
js>

Para instalar o SpiderMonkey JS Shell no Debian GNU/Linux basta executar o comando:

# aptitude update && aptitude install spidermonkey-bin

Após a instalação, basta executar em um terminal o comando $ js para entrar no Shell interativo:

Para entrar no shell interativo use o comando:
$ js

Para executar os scripts de um arquivo (foo.js) use:
$ js -f foo.js

Para executar os scripts de um arquivo (foo.js) e entrar no shell interativo (muito útil para carregar funções ou bibliotecas) em seguida use:
$ js -f foo.js -f -

Mas mesmo para outras distribuições, e até mesmo Windows, deve ser extremamente fácil instalá-lo. Veja o link abaixo para a Documentação do Javascript Shell e exemplos de uso:

Link: Introdução ao Shell Javascript

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Configurações Avançadas do Mozilla Firefox

Tags: , , , — March 13, 2008 @ 6:14 pm

Pensei em titular este post como: “Como fazer o Debian Iceweasel identificar-se como Firefox”, mas achei melhor deixar o post mais genérico, uma vez que existem n mais opções nesta tela de configuração.

Página de configurações do FirefoxEntão, para ver/alterar praticamente todas as configurações do seu Firefox/Iceweasel, abra uma nova aba e digite about:config, com isso você carregará uma página com dezenas de opções para configurar no seu navegador (CUIDADO: com estas opções você poderá deixar seu Firefox sem funcionar então, só altere o que tiver certeza).

Um bom uso para isso é fazer seu Iceweasel (fork do Firefox no Debian GNU/Linux) ser reconhecido como Firefox por websites.

O Debian Iceweasel é exatamente o mesmo Firefox, mas com um nome (e logotipo) diferente, mas como alguns websites (incrível, até o google faz isso no Google Docs) identificam o navegador pelo nome, eles podem acabar escondendo recursos disponíveis apenas para o Firefox.

Para tapear esses websites e dizer que você está usando um Firefox “original” (!??) acesse a página about:config e procure pela linha general.useragent.extra.firefox e mude o nome de Iceweasel para Firefox. Esta variável que determina o UserAgent do seu browser e você pode alterá-la para identificar seu Iceweasel/Firefox com Opera, Internet Explorer, Safari, ou qualquer outro (isso não garante que certas páginas funcionem no seu navegador, apenas que as páginas desenhadas para Firefox funcionem corretamente no Iceweasel, sem bloqueios).

Isto foi apenas um exemplo, pois existem dezenas de variáveis nesta janela, podendo ser usadas para diversas outras coisas, como abrir determinados tipos de mídia ou protocolos com programas externos.

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Usando um chroot para rodar aplicações 32bit em uma instalação amd64

Tags: , , , — March 11, 2008 @ 11:55 am

Quem tem um processador 64 bits deve ficar tentado a instalar um sistema inteiro em 64 bits para aproveitar todos os recursos da máquina. Acontece que, após a instalação, nota-se que certas aplicações inexistem para a arquitetura 64 bits (amd64 ou x86_64), como o plugin Flash para Firefox/Iceweasel, o Navegador Opera e Skype.

O Debian dispõe de um pacote ia32-libs, contendo as principais bibliotecas 32 bits necessárias para rodar o FlashPlayer e algumas outras aplicações, mas caso deseja instalar algum outro pacote 32 bits (ia32, x86) então temos um problema. Mas não existe problema que não possa ser resolvido em software livre.

A solução Debian para o problema é criar um chroot 32 bits, um chroot trata-se de uma pasta root (’/') dentro de uma pasta do sistema, em outras paravras, é como instalar um sistema inteiro dentro de outro. Antes de mais nada precisamos instalar os programa necessários para criar e utilizar o chroot:

# aptitude install cdebootstrap schroot

cdebootstrap é um comando presente no atual Debian Testing e Unstable, se estiver usando Stable (Etch) ou anterior, use o comando debootstrap

Então você deve criar o chroot com o comando cdeboostrap:

# cdebootstrap --arch i386 sid /var/chroot/sid-ia32 \
http://ftp.debian.org/debian/

Após isso, você terá uma estrutura completa de diretórios dentro de /var/chroot/sid-ia32. Para alterar para este chroot basta usar o comando chroot:

# chroot /var/chroot/sid-ia32

Podendo instalar qualquer programa ou biblioteca normalmente com apt-get/aptitude:

# aptitude install opera skype

Para executar asplicações dentro de seu chroot ia32m você vai precisar de certas parte do seu sistema 64 bits, isso pode ser obtido com um ‘bind mount‘. No mínimo você precisará de /tmp, para compartilhar a sessão do X11, e de /home, para poder utilizar seus arquivos e configurações pessoais. Você poderá desejar também unir os diretórios /dev, /proc e /sys.

Saia do chroot e escreva em seu /etc/fstab:

# sid32 chroot
/home   /var/chroot/sid-ia32/home none    bind      0       0
/tmp    /var/chroot/sid-ia32/tmp  none    bind      0       0
/dev    /var/chroot/sid-ia32/dev  none    bind      0       0
/proc   /var/chroot/sid-ia32/proc none    bind      0       0
/sys    /var/chroot/sid-ia32/sys  none    bind      0       0

Depois monte-os:

mount /var/chroot/sid-ia32/home
mount /var/chroot/sid-ia32/tmp
mount /var/chroot/sid-ia32/dev
mount /var/chroot/sid-ia32/proc
mount /var/chroot/sid-ia32/sys

Para executar eplicações facilmente no novo chroot, você poderá usar o programa schroot. Para isso configure o arquivo /etc/schroot/schroot.conf:

[sid32]
description=Debian Sid i386 (sid32)
location=/var/chroot/sid-ia32
priority=3
groups=users,root
root-groups=root
aliases=default,unstable,ia32
personality=linux32
type=plain
run-exec-scripts=true
run-setup-scripts=true

A partir daí basta executar os aplicativos com o comando schroot:

schroot -p openoffice

Para facilitar ainda mais, você poderá criar um script que permite executar os aplicativos com um simples comando. Crie um arquivo /usr/local/bin/do_chroot e adicione o conteúdo a seguir:

#!/bin/bash

exec schroot -p -c sid32 -q -- "`basename $0`" "$@"

Torne-o executável:

# chmod 755  /usr/local/bin/do_chroot

E então crie links simbólicos para ele dentro de /usr/local/bin:

# cd /usr/local/bin
# ln -s do_chroot opera
# ln -s do_chroot skype

Agora, para executar estes aplicativos basta executar os comandos opera ou skype normalmente.

NOTA: Os aplicativos Opera e Skype não estão presentes nos repositórios oficiais do Debian, para instalá-los via aptitude adicione as seguintes linhas ao seu /etc/apt/sources.list, dentro do chroot, não esquecendo de executar aptitude update:

## Opera Web-Browser
deb http://deb.opera.com/opera/ sid non-free
## Skype
deb http://download.skype.com/linux/repos/debian/ stable non-free

Fonte: debian-amd64-howto

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Instalando TuxGuitar no Debian Lenny/Sid

Tags: , , , — January 17, 2008 @ 5:44 pm

Se alguém tentou instalar e usar o TuxGuitar no Debian Lenny ou Sid, conforme postei aqui, deve ter tido uma frustrante decepção. Acontece que o pacote tuxguitar disponível para o Debian (Lenny e Sid, apenas)está com uma dependência não satisfeita, trata-se do pacote libswt-gtk-3.2-java, que não é mais disponível para estas versões do Debian.

Acontece que uma versão mais recente, a libswt-gtk-3.3-java, está disponível, assim, podemos usá-la para instalar o tuxguitar sem problemas, enganando o apt, fazendo-o pensar que o sistema tem o pacote libswt-gtk-3.2-java instalado.

Antes de tudo instale o pacote equivs. Este é um programa que permite ao usuário criar pacotes viruais que podem ser usados para satizfazer dependencias em falta.

# aptitude install equiv

Após instalar o pacote, vc precisará criar um arquivo de controle para o equiv criar o pacote necessário para o caso da libswt-gtk-3.2-java, crie um arquivo como o a seguir, e salve-o com o nome de libswt-gtk-3.2-java-dummy:

Section: libs
Priority: optional
Package: libswt-gtk-3.2-java-dummy
Depends: libswt-gtk-3.3-java
Provides: libswt-gtk-3.2-java
Description: Dummy Package to libswt-gtk-3.2-java
Depends on the installations of libswt-gtk-3.3-java to make the system thinks that libswt-gtk-3.2-java is installed
.
This package was build with Equivs to allow the installations of the tuxguitar
package

Após criar o arquivo você precisará instalar a versão mais recente da lib (libswt-gtk-3.3-java), e criar o pacote virtual com o equivs e instalá-lo. Para isso execute os comandos a seguir:

## cria o arquivo .deb para o pacote virtual
# equivs-build libswt-gtk-3.2-java-dummy

## instala a biblioteca nova
# aptitude install libswt-gtk-3.3-java

## instala o pacote virtual criado
# dpkg -i libswt-gtk-3.2-java-dummy_1.0_all.deb

Após isso você poderá instalar o tuxguitar (# aptitude install tuxguitar) normalmente. Lembre-se que todos os comandos acima devem ser executados como root.

Esta é apenas uma solução provisória, até que o problema de dependência do pacote seja resolvido pois, assim que estiver, o recomendado é atualizar o tuxguitar e remover o paco virtual.

Boas Composições!

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Next Page >>>