qemu-launcher-1.7.4/0000755000175000017500000000000010632603112013261 5ustar linaslinasqemu-launcher-1.7.4/qemu-launcher.desktop0000644000175000017500000000047510632602574017443 0ustar linaslinas[Desktop Entry] Encoding=UTF-8 Name=Qemu Launcher Name[lt]=Qemu Paleidėjas Comment=Manage virtual machine configurations Comment[lt]=Tvarkykite virtualaus kompiuterio konfigūracijas Exec=qemu-launcher Terminal=false Type=Application Icon=qemu-launcher.svg StartupNotify=true Categories=Application;Emulator;Utility qemu-launcher-1.7.4/qemu-launcher.pl0000644000175000017500000017336610632602574016417 0ustar linaslinas#!/usr/bin/perl -w # Qemu Launcher is a GUI front-end to QEMU computer emulator. # Copyright (C) 2004 - 2005, Erik Meitner # Copyright (C) 2006 - 2007, Linas Žvirblis <0x0007@gmail.com> # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. use strict; use utf8; use encoding 'utf8'; use Gtk2; use Gtk2::GladeXML; use POSIX; use Locale::gettext; use IO::File; #use Data::Dumper; # For debugging only! # Locale definitions textdomain('qemu-launcher'); bindtextdomain('qemu-launcher', '_PREFIX_/share/locale/'); setlocale(LC_MESSAGES, ""); # Constants use constant TRUE => 1; use constant FALSE => 0; use constant DEBUG_LEVEL => 1; # Application name and version my $application_name = gettext('Qemu Launcher'); my $version = '1.7.4'; # Configuration directory, file, and name for default settings my $conf_dir = $ENV{'HOME'}.'/.qemu-launcher'; my $conf_file = 'configuration'; my $defaults_name = gettext('Default settings'); # Default settings for $defaults_name my %default_config = ( 'stopped' => 0, 'statefile' => '', 'keyboard' => gettext('Default'), 'args' => '', 'comment' => gettext('These defaults can be modified and used as a base for new configs.'), 'boot' => 'c', 'cdrom' => '/dev/cdrom', 'usecdrom' => FALSE, 'hda' => '', 'hdb' => '', 'hdc' => '', 'hdd' => '', 'fda' => '', 'fdb' => '', 'ram' => 128, 'initrd' => '', 'kernel' => '', 'tunscript' => '', 'audio' => FALSE, 'linuxboot' => FALSE, 'localtime' => TRUE, 'nogfx' => FALSE, 'fullscreen' => FALSE, 'snapshot' => FALSE, 'ifmac' => '', 'kernelcmd' => '', 'gfxtype' => 'pcivga', # pcivga or vga 'sndtype' => 'sb16', # sb16 or es1370 'smbdir' => '', 'numcpus' => 1, 'numnics' => 1, 'portredirects' => '', 'nettype' => [ 'usermode', 'usermode', 'usermode', 'usermode', 'usermode', 'usermode', 'usermode', 'usermode' ], 'ifip' => [ '', '', '', '', '', '', '', '' ], 'port' => [ 1, 1, 1, 1, 1, 1, 1, 1 ], 'ifmac' => [ '', '', '', '', '', '', '', '' ], 'vlan' => [ 0, 0, 0, 0, 0, 0, 0, 0 ], 'tunscript' => [ '', '', '', '', '', '', '', '' ], 'ifname' => [ '', '', '', '', '', '', '', '' ], 'tunfd' => [ 0, 0, 0, 0, 0, 0, 0, 0 ], 'log' => FALSE, 'logthese' => '', # cpu,exec,in_asm,int,op_opt,op,out_asm,pcall 'priority' => 0, 'monitordev' => '', 'serialdev' => '', 'qemuctl' => FALSE, 'acceleration' => 'enable', # disable, enable, full 'systype' => 'x86' ); # Default settings for main configuration my %main_config_defaults = ( 'imagedir' => $ENV{'HOME'}, 'qemupath' => '/usr/bin/qemu', 'qemuimgpath' => '/usr/bin/qemu-img', 'qemuctlpath' => '/usr/bin/qemuctl', 'prelaunchcmd' => '' ); # Some hashes to make lookups easier my %boot_val_by_txt = ( 'a' => 0, 'c' => 1, 'd' => 2 ); my %boot_val_by_num = ( 0 => 'a', 1 => 'c', 2 => 'd' ); my %boot_values_dev = ( 'a' => 'fda', 'c' => 'hda', 'd' => 'cd' ); my %net_val_by_num = ( 0 => 'usermode', 1 => 'tuntap', 2 => 'tuntapfd', 3 => 'tcplisten', 4 => 'tcpfd', 5 => 'tcpconnect', 6 => 'multicast', 7 => 'multicastfd', 8 => 'dummy' ); my %net_val_by_txt = ( 'usermode' => 0, 'tuntap' => 1, 'tuntapfd' => 2, 'tcplisten' => 3, 'tcpfd' => 4, 'tcpconnect' => 5, 'multicast' => 6, 'multicastfd' => 7, 'dummy' => 8 ); my %sys_val_by_num = ( 0 => 'x86', 1 => 'x86_64', 2 => 'arm', 3 => 'armeb', 4 => 'ppc', 5 => 'ppc64', 6 => 'sparc', 7 => 'sparc64', 8 => 'mips', 9 => 'mipsel' ); my %sys_val_by_txt = ( 'x86' => 0, 'x86_64' => 1, 'x86-64' => 1, 'arm' => 2, 'armeb' => 3, 'ppc' => 4, 'ppc64' => 5, 'sparc' => 6, 'sparc64' => 7, 'mips' => 8, 'mipsel' => 9 ); # What a valid vm name should look like my $good_name_regex = '^[a-zA-Z0-9_ -]+$'; # Qemu Launcher configuration my $main_config = NULL; # Main Glade XML file my $gladexml = NULL; # Stores the list of QEMU configurations (VM's) my @vm_list = NULL; # Name of current configuration my $loaded_vm_config = NULL; # TRUE if user has passed an argument (name of VM) my $quick_launch = FALSE; # Index for going trough arrays, loops etc. my $idx = 0; # Drive we are creating image for my $drive = NULL; # Detect Glade XML files my $glade_files_dir = '_PREFIX_/share/qemu-launcher'; if ( $glade_files_dir =~ m/PREFIX/) { $glade_files_dir = 'glade'; } ################################################ # Functions for maniplulating the VM configs # ################################################ # Write given VM config to a file # Args: filename, config to write (hashref) sub save_vm_config_to_file { my ($name, $vm_config) = @_; if (DEBUG_LEVEL > 1) { print "save_vm_config_to_file(): Saving config:\n".Dumper($vm_config); } my $fh = new IO::File "$conf_dir/$name", 'w'; if( ! defined $fh ) { alert_user( sprintf(gettext("Could not save configuration for %s."), $name) ); return(FALSE); } foreach my $val ( keys %{$vm_config} ) { if ( ($val eq 'portredirects' and $vm_config->{$val}) or ($val eq 'nettype' and $vm_config->{$val}) or ($val eq 'ifip' and $vm_config->{$val}) or ($val eq 'port' and $vm_config->{$val}) or ($val eq 'ifmac' and $vm_config->{$val}) or ($val eq 'vlan' and $vm_config->{$val}) or ($val eq 'tunscript' and $vm_config->{$val}) or ($val eq 'ifname' and $vm_config->{$val}) or ($val eq 'tunfd' and $vm_config->{$val}) ) { my @values; foreach my $value ( @{$vm_config->{$val}} ) { $value =~ s/:/,/g; if ($value eq '') { push @values, 'null'; } else { push @values, $value; } } my $values_string = join ';', @values; print $fh "$val:$values_string\n"; } elsif ( defined $vm_config->{$val} ) { print $fh "$val:"; print $fh $vm_config->{$val}; print $fh "\n"; } } close($fh); return(TRUE); } # Load a VM config file and return a config hash # Args: file name sub load_vm_config { my $name = shift; my %config = %default_config; my $filename = "$conf_dir/$name"; my $fh = new IO::File $filename, 'r'; if ( ! defined $fh ) { alert_user( sprintf(gettext("Could not read configuration for %s."), $name) ); return(FALSE); } while (<$fh>) { next if /^#/; if( /\s*([^:]+):(.*)$/ ) { if ( ($1 eq 'portredirects') or ($1 eq 'nettype') or ($1 eq 'ifip') or ($1 eq 'port') or ($1 eq 'ifmac') or ($1 eq 'vlan') or ($1 eq 'tunscript') or ($1 eq 'ifname') or ($1 eq 'tunfd') ) { my @values = split ';', $2; foreach my $value ( @values ) { $value =~ s/,/:/g; if ($value eq 'null') { $value = ''; } } $config{$1} = \@values; } else { $config{$1} = $2; } } } close($fh); $loaded_vm_config = $name; if ( DEBUG_LEVEL > 1 ) { print "load_vm_config(): Loaded config:\n".Dumper(\%config); } return(\%config); } # Delete a VM config file, with ack dialog # Args: none sub delete_vm_config { my $name = get_comboentry_val('vmnamecomboboxentry'); if ( ask_user(sprintf(gettext("Delete '%s'?"), $name)) ) { if ( unlink "$conf_dir/$name" ) { my $widget = $gladexml->get_widget('vmnamecomboboxentry'); my $pos = $widget->get_active(); $widget->remove_text($pos); # set the combo box to the default config name and load it: set_combobox_val( $widget, $defaults_name ); show_vm_config(); } else { alert_user( sprintf(gettext("Could not delete %s:"), $name).$! ); } } } # Get a list of all config files, except the main config # Args: none sub list_vm_configs { my $dirname; my @names = (); if ( ! -d $conf_dir ) { return(FALSE); } opendir ( CFGDIR, $conf_dir ) or return(FALSE); while ( $dirname = readdir(CFGDIR) ) { next if ( $dirname =~ /^\./ ); next if ( $dirname eq $conf_file ); next if ( $dirname eq $defaults_name ); push( @names, $dirname ); } closedir(CFGDIR); @names = sort(@names); unshift( @names, $defaults_name ); return(@names); } # Set the GUI vm config values to what is set in the given config hash # Args: hashref to a vm config sub push_vm_config { my $config = shift; # Configurations # ($gladexml->get_widget('commententry'))-> set_text( $config->{'comment'} ); # Disks and memory # ($gladexml->get_widget('snapshotcheckbutton'))-> set_active( $config->{'snapshot'} ); ($gladexml->get_widget('usecdromcheckbutton'))-> set_active( $config->{'usecdrom'} ); ($gladexml->get_widget('bootcombobox'))-> set_active( $boot_val_by_txt{ $config->{'boot'} } ); ($gladexml->get_widget('fdafileentry'))-> set_text( $config->{'fda'} ); ($gladexml->get_widget('fdbfileentry'))-> set_text( $config->{'fdb'} ); ($gladexml->get_widget('cdfileentry'))-> set_text( $config->{'cdrom'} ); ($gladexml->get_widget('hdafileentry'))-> set_text( $config->{'hda'} ); ($gladexml->get_widget('hdbfileentry'))-> set_text( $config->{'hdb'} ); ($gladexml->get_widget('hdcfileentry'))-> set_text( $config->{'hdc'} ); ($gladexml->get_widget('hddfileentry'))-> set_text( $config->{'hdd'} ); ($gladexml->get_widget('ramspinbutton'))-> set_value( $config->{'ram'} ); # Linux boot # ($gladexml->get_widget('linuxbootcheckbutton'))-> set_active( $config->{'linuxboot'} ); ($gladexml->get_widget('kernelfileentry'))-> set_text( $config->{'kernel'} ); ($gladexml->get_widget('initrdfileentry'))-> set_text( $config->{'initrd'} ); ($gladexml->get_widget('kernelcmdentry'))-> set_text( $config->{'kernelcmd'} ); # Network # ($gladexml->get_widget('numnicspinbutton'))-> set_value( $config->{'numnics'} ); # Port redirection # my $redirs = []; if ( $config->{'portredirects'} ) { $redirs = $config->{'portredirects'}; } push_redirs($redirs); ($gladexml->get_widget('smbdirfileentry'))-> set_text( $config->{'smbdir'} ); # NICs # for ($idx = 0; $idx < 8; $idx++) { ($gladexml->get_widget('combo_nettype_'.$idx))-> set_active( $net_val_by_txt{$config->{'nettype'}[$idx]} ); ($gladexml->get_widget('entry_ipaddr_'.$idx))-> set_text( $config->{'ifip'}[$idx] ); ($gladexml->get_widget('spinb_port_'.$idx))-> set_value( $config->{'port'}[$idx] ); ($gladexml->get_widget('entry_macaddr_'.$idx))-> set_text( $config->{'ifmac'}[$idx] ); ($gladexml->get_widget('spinb_vlan_'.$idx))-> set_value( $config->{'vlan'}[$idx] ); ($gladexml->get_widget('fileentry_tuntapscript_'.$idx))-> set_text( $config->{'tunscript'}[$idx] ); ($gladexml->get_widget('entry_ifname_'.$idx))-> set_text( $config->{'ifname'}[$idx] ); ($gladexml->get_widget('spinb_fd_'.$idx))-> set_value( $config->{'tunfd'}[$idx] ); } # Hardware # ($gladexml->get_widget('localtimecheckbutton'))-> set_active( $config->{'localtime'} || 0 ); ($gladexml->get_widget('audiocheckbutton'))-> set_active( $config->{'audio'} || 0 ); ($gladexml->get_widget('nogfxcheckbutton'))-> set_active( $config->{'nogfx'} || 0 ); ($gladexml->get_widget('fullscreencheckbutton'))-> set_active( $config->{'fullscreen'} || 0 ); ($gladexml->get_widget('numcpusspinbutton'))-> set_value( $config->{'numcpus'} ); if ( $config->{'gfxtype'} eq 'pcivga' ) { ($gladexml->get_widget('gfxpciradiobutton'))->set_active(TRUE); } elsif ( $config->{'gfxtype'} eq 'vga' ) { ($gladexml->get_widget('gfxvgaradiobutton'))->set_active(TRUE); } if ( $config->{'sndtype'} eq 'sb16' ) { ($gladexml->get_widget('sndsbradiobutton'))->set_active(TRUE); } elsif ( $config->{'sndtype'} eq 'es1370' ) { ($gladexml->get_widget('sndesradiobutton'))->set_active(TRUE); } my $kb; if ( !$config->{'keyboard'} ) { $kb = gettext('Default'); } else { $kb = $config->{'keyboard'}; } set_combobox_val( $gladexml->get_widget('keyboardcombobox'), $kb ); my $sdev; if ( !$config->{'serialdev'} ) { $sdev = gettext('Default'); } else { $sdev = $config->{'serialdev'}; } set_combobox_val( $gladexml->get_widget('serialdevcombobox'), $sdev ); ($gladexml->get_widget('systypecombobox'))-> set_active( $sys_val_by_txt{ $config->{'systype'} } ); # Emulator # ($gladexml->get_widget('prispinbutton'))-> set_value( $config->{'priority'} ); ($gladexml->get_widget('qemuctlcheckbutton'))-> set_active( $config->{'qemuctl'} ); ($gladexml->get_widget('stoppedcheckbutton'))-> set_active( $config->{'stopped'} ); ($gladexml->get_widget('logcheckbutton'))-> set_active( $config->{'log'} || 0 ); my @logitems = split ',', $config->{'logthese'}; foreach my $logtype ('cpu','exec','in_asm','int','op_opt','op','out_asm','pcall') { ($gladexml->get_widget($logtype.'togglebutton'))->set_active(FALSE); } foreach my $logtype (@logitems) { ($gladexml->get_widget($logtype.'togglebutton'))->set_active(TRUE); } if ( $config->{'acceleration'} eq 'disable' ) { ($gladexml->get_widget('acceloffradiobutton'))->set_active(TRUE); } elsif ( $config->{'acceleration'} eq 'enable' ) { ($gladexml->get_widget('accelonradiobutton'))->set_active(TRUE); } elsif ( $config->{'acceleration'} eq 'full' ) { ($gladexml->get_widget('accelfullradiobutton'))->set_active(TRUE); } ($gladexml->get_widget('statefileentry'))-> set_text( $config->{'statefile'} ); ($gladexml->get_widget('argsentry'))-> set_text( $config->{'args'} ); # What is this? if ( $config->{'qemuctl'} ) { $gladexml->get_widget('monitordevcombobox')->set_sensitive(FALSE); } my $mdev; if ( !$config->{'monitordev'} ) { $mdev = gettext('Default'); } else { $mdev = $config->{'monitordev'}; } set_combobox_val( $gladexml->get_widget('monitordevcombobox'), $mdev ); } # Get the current config from the GUI and return it # Args: none sub pull_vm_config { my %config; # Configurations # $config{'comment'} = ($gladexml->get_widget('commententry'))->get_text(); # Disks and memory # $config{'snapshot'} = ($gladexml->get_widget('snapshotcheckbutton'))->get_active() || 0; $config{'usecdrom'} = ($gladexml->get_widget('usecdromcheckbutton'))->get_active() || 0; $config{'boot'} = $boot_val_by_num{ ($gladexml->get_widget('bootcombobox'))->get_active() }; $config{'fda'} = ($gladexml->get_widget('fdafileentry'))->get_text(); $config{'fdb'} = ($gladexml->get_widget('fdbfileentry'))->get_text(); $config{'hda'} = ($gladexml->get_widget('hdafileentry'))->get_text(); $config{'hdb'} = ($gladexml->get_widget('hdbfileentry'))->get_text(); $config{'hdc'} = ($gladexml->get_widget('hdcfileentry'))->get_text(); $config{'hdd'} = ($gladexml->get_widget('hddfileentry'))->get_text(); $config{'cdrom'} = ($gladexml->get_widget('cdfileentry'))->get_text(); $config{'ram'} = ($gladexml->get_widget('ramspinbutton'))->get_value(); # Linux boot # $config{'linuxboot'} = ($gladexml->get_widget('linuxbootcheckbutton'))->get_active() || 0; $config{'kernel'} = ($gladexml->get_widget('kernelfileentry'))->get_text(); $config{'initrd'} = ($gladexml->get_widget('initrdfileentry'))->get_text(); $config{'kernelcmd'} = ($gladexml->get_widget('kernelcmdentry'))->get_text(); # Network # $config{'numnics'} = ($gladexml->get_widget('numnicspinbutton'))->get_value(); # Port redirection # my @redirs = pull_redirs(); $config{'portredirects'} = \@redirs; $config{'smbdir'} = ($gladexml->get_widget('smbdirfileentry'))->get_text(); # NICs # my @combo_nettype; for ($idx = 0; $idx < 8; $idx++) { $combo_nettype[$idx] = $gladexml->get_widget('combo_nettype_'.$idx); $config{'nettype'}[$idx] = $net_val_by_num{ ($combo_nettype[$idx]->get_active()) }; $config{'ifip'}[$idx] = ($gladexml->get_widget('entry_ipaddr_'.$idx))->get_text(); $config{'port'}[$idx] = ($gladexml->get_widget('spinb_port_'.$idx))->get_value(); $config{'ifmac'}[$idx] = ($gladexml->get_widget('entry_macaddr_'.$idx))->get_text(); $config{'vlan'}[$idx] = ($gladexml->get_widget('spinb_vlan_'.$idx))->get_value(); $config{'tunscript'}[$idx] = ($gladexml->get_widget('fileentry_tuntapscript_'.$idx))-> get_text(); $config{'ifname'}[$idx] = ($gladexml->get_widget('entry_ifname_'.$idx))->get_text(); $config{'tunfd'}[$idx] = ($gladexml->get_widget('spinb_fd_'.$idx))->get_value(); } # Hardware # $config{'systype'} = $sys_val_by_num{ ($gladexml->get_widget('systypecombobox'))->get_active() }; $config{'localtime'} = ($gladexml->get_widget('localtimecheckbutton'))->get_active() || 0; $config{'audio'} = ($gladexml->get_widget('audiocheckbutton'))->get_active() || 0; $config{'nogfx'} = ($gladexml->get_widget('nogfxcheckbutton'))->get_active() || 0; $config{'fullscreen'} = ($gladexml->get_widget('fullscreencheckbutton'))->get_active() || 0; $config{'numcpus'} = ($gladexml->get_widget('numcpusspinbutton'))->get_value(); if ( ($gladexml->get_widget('gfxpciradiobutton'))->get_active() ) { $config{'gfxtype'} = 'pcivga'; } elsif ( ($gladexml->get_widget('gfxvgaradiobutton'))->get_active() ) { $config{'gfxtype'} = 'vga'; } if ( ($gladexml->get_widget('sndsbradiobutton'))->get_active() ) { $config{'sndtype'} = 'sb16'; } elsif( ($gladexml->get_widget('sndesradiobutton'))->get_active() ) { $config{'sndtype'} = 'es1370'; } my $kb = get_combobox_val('keyboardcombobox'); if ( $kb eq gettext('Default') ) { $config{'keyboard'} = ''; } else { $config{'keyboard'} = $kb; } my $sdev = get_combobox_val('serialdevcombobox'); if ( $sdev eq gettext('Default') ) { $config{'serialdev'} = ''; } else { $config{'serialdev'} = $sdev; } # Emulator # $config{'priority'} = ($gladexml->get_widget('prispinbutton'))->get_value(); $config{'qemuctl'} = ($gladexml->get_widget('qemuctlcheckbutton'))->get_active() || 0; $config{'stopped'} = ($gladexml->get_widget('stoppedcheckbutton'))->get_active() || 0; $config{'log'} = ($gladexml->get_widget('logcheckbutton'))->get_active() || 0; my @logitems = (); foreach my $logtype ( qw/cpu exec in_asm int op_opt op out_asm pcall/ ) { if ( ($gladexml->get_widget( $logtype.'togglebutton' ))->get_active() ) { push( @logitems, $logtype ) } } $config{'logthese'} = join(',',@logitems); if ( ($gladexml->get_widget('acceloffradiobutton'))->get_active() ) { $config{'acceleration'} = 'disable'; } elsif ( ($gladexml->get_widget('accelonradiobutton'))->get_active() ) { $config{'acceleration'} = 'enable'; } elsif ( ($gladexml->get_widget('accelfullradiobutton'))->get_active() ) { $config{'acceleration'} = 'full'; } $config{'statefile'} = ($gladexml->get_widget('statefileentry'))->get_text(); $config{'args'} = ($gladexml->get_widget('argsentry'))->get_text(); my $mdev = get_combobox_val('monitordevcombobox'); if ( $mdev eq gettext('Default') ) { $config{'monitordev'} = ''; } else { $config{'monitordev'} = $mdev; } if (DEBUG_LEVEL > 1) { print "pull_vm_config(): Pulled config:\n".Dumper(\%config); } return(\%config); } # Callback to do checks before actually saving # Args: none sub save_vm_config { my $name = get_comboentry_val('vmnamecomboboxentry'); my $config = pull_vm_config(); if (DEBUG_LEVEL > 1) { print "save_vm_config(): Pulled config:\n".Dumper($config); } if ( $name eq '' ) { alert_user( gettext("Please enter a name for this configuration.") ); } if ( check_vm_name($name) ) { save_vm_config_to_file( $name, $config); if ( $loaded_vm_config ne $name and ! in_vm_list($name) ) { add_vm_to_list($name); $loaded_vm_config = $name; } } return(TRUE); } # Callback for when VM list entry is selected, # if name matches one in list, get config # Args: none sub show_vm_config { my $widget = $gladexml->get_widget('vmnamecomboboxentry'); my $model = $widget->get_model(); my $iter = $widget->get_active_iter(); if ( defined $iter ) { my $name = $model->get($iter, $widget->get_text_column()); my $config = load_vm_config( $name ); push_vm_config($config); } } ################################################ # Functions for manipulating the main config # ################################################ # Read main config from file # Args: none sub get_main_config { my $fh; my $filename = $conf_dir.'/'.$conf_file; my $new_config = {}; $fh = new IO::File $filename, 'r'; if ( !defined $fh ) { alert_user( sprintf(gettext("Could not read configuration from %s"), $filename) ); return(FALSE); } while (<$fh>) { next if /^#/; if ( /\s*([^:]+):(.*)$/ ) { $new_config->{$1} = $2; } } close($fh); if ( DEBUG_LEVEL > 1 ) { print "get_main_config(): got:\n".Dumper($new_config); } $main_config = $new_config; return(TRUE); } # Set widgets to main config settings # Args: none sub set_main_config { ($gladexml->get_widget('imagedirfileentry'))-> set_text( $main_config->{'imagedir'} ); ($gladexml->get_widget('qemupathfileentry'))-> set_text( $main_config->{'qemupath'} ); ($gladexml->get_widget('qemuimgpathfileentry'))-> set_text( $main_config->{'qemuimgpath'} ); ($gladexml->get_widget('qemuctlpathfileentry'))-> set_text( $main_config->{'qemuctlpath'} ); ($gladexml->get_widget('prelaunchentry'))-> set_text( $main_config->{'prelaunchcmd'} ); } # Save main config to file # Args: hashref to a config sub save_main_config { my $fh; my $filename = "$conf_dir/$conf_file"; my $main_config = shift; if ( ! -d $conf_dir ) { mkdir($conf_dir); } $fh = new IO::File $filename, 'w'; if( !defined $fh ) { alert_user( sprintf(gettext("Could not save configuration to %s"), $filename) ); return(FALSE); } foreach my $var ( keys %{$main_config} ) { print $fh "$var:"; print $fh $main_config->{$var} if defined $main_config->{$var}; print $fh "\n"; } close($fh); return(TRUE); } # Get values from widgets, check values, and store in main config # Args: none sub apply_main_config { my $error = FALSE; my $imagedir = ($gladexml->get_widget('imagedirfileentry'))->get_text(); my $qemupath = ($gladexml->get_widget('qemupathfileentry'))->get_text(); my $qemuimgpath = ($gladexml->get_widget('qemuimgpathfileentry'))->get_text(); my $qemuctlpath = ($gladexml->get_widget('qemuctlpathfileentry'))->get_text(); $main_config->{'prelaunchcmd'} = ($gladexml->get_widget('prelaunchentry'))->get_text(); if ( !$imagedir ) { alert_user( gettext("Please enter a valid data directory.")." ". gettext("Settings not applied.") ); $error = TRUE; } elsif ( ! -d $imagedir ) { alert_user( sprintf(gettext("%s does not exist."), $imagedir). gettext("Settings not applied.") ); $error = TRUE; } else { $main_config->{'imagedir'} = $imagedir; } if ( ( $qemupath and ! -f $qemupath ) or ! $qemupath ) { alert_user( sprintf(gettext("%s does not exist."), $qemupath). gettext("Settings not applied.") ); $error = TRUE; } else { $main_config->{'qemupath'} = $qemupath; } if ( ( $qemuimgpath and ! -f $qemuimgpath ) or ! $qemuimgpath ) { alert_user( sprintf(gettext("%s does not exist."), $qemuimgpath). gettext("Settings not applied.") ); $error = TRUE; } else { $main_config->{'qemuimgpath'} = $qemuimgpath; } if ( $qemuctlpath and ! -f $qemuctlpath ) { alert_user( sprintf(gettext("%s does not exist."), $qemuctlpath). gettext("Settings not applied.") ); $error=TRUE; } else { $main_config->{'qemuctlpath'} = $qemuctlpath; } } # Callback for save button. # Args: none sub cb_save_config { apply_main_config(); save_main_config($main_config); } ######################## # Big important subs # ######################## # Run QEMU possibly using nice to set the priority # Args: VM config to use, otherwise uses GUI settings sub run_vm { my $qcmd; my @qcmd_parts; my $config; if ( defined $_[0] ) { $config = shift; } else { $config = pull_vm_config(); if ( !check_config($config) ) { return(FALSE); } } if ( $config->{'priority'} != 0 ) { push @qcmd_parts, 'nice -n'; push @qcmd_parts, $config->{'priority'}; } if ( $config->{'qemuctl'} and $main_config->{'qemuctlpath'} ) { push @qcmd_parts, $main_config->{'qemuctlpath'}; } elsif ( $main_config->{'qemupath'} ) { if ( $config->{'systype'} eq 'x86' ) { push @qcmd_parts, $main_config->{'qemupath'}; } elsif ( $config->{'systype'} eq 'x86-64' ) { # Temporary workaround for backward compatibility push @qcmd_parts, $main_config->{'qemupath'}.'-system-x86_64'; } else { push @qcmd_parts, $main_config->{'qemupath'}.'-system-'.$config->{'systype'}; } if ( $config->{'monitordev'} ) { push @qcmd_parts, '-monitor'; push @qcmd_parts, $config->{'monitordev'}; } } if ( $config->{'stopped'} ) { push @qcmd_parts, '-S'; } if ( $config->{'statefile'} ) { push @qcmd_parts, '-loadvm'; push @qcmd_parts, "'".$config->{'statefile'}."'"; } if ( $config->{'linuxboot'} and $config->{'kernel'} ) { push @qcmd_parts, '-kernel'; push @qcmd_parts, "'".$config->{'kernel'}."'"; if ( $config->{'kernelcmd'} ) { push @qcmd_parts, '-append'; push @qcmd_parts, "'".$config->{'kernelcmd'}."'"; } if ( $config->{'initrd'} ) { push @qcmd_parts, '-initrd'; push @qcmd_parts, "'".$config->{'initrd'}."'"; } } if ( $config->{'boot'} ) { push @qcmd_parts, '-boot'; push @qcmd_parts, $config->{'boot'}; } if ( $config->{'snapshot'} ) { push @qcmd_parts, '-snapshot'; } if ( $config->{'ram'} ) { push @qcmd_parts, '-m'; push @qcmd_parts, $config->{'ram'}; } foreach my $disk ( qw/fda fdb hda hdb hdd/ ) { if ( $config->{$disk} ) { push @qcmd_parts, "-$disk"; push @qcmd_parts, "'".$config->{$disk}."'"; } } if ( $config->{'usecdrom'} and $config->{'cdrom'} ) { push @qcmd_parts, "-cdrom "; push @qcmd_parts, "'".$config->{'cdrom'}."'"; } elsif ( $config->{'hdc'} ) { push @qcmd_parts, "-hdc"; push @qcmd_parts, $config->{'hdc'}; } if ( $config->{'numnics'} eq 0 ) { push @qcmd_parts,'-net none'; } else { my $val = $config->{'numnics'}; for ($idx = 0; $idx < $val; $idx++) { if ( $config->{'ifmac'}[$idx] ) { push @qcmd_parts, '-net nic,vlan='.$config->{'vlan'}[$idx]. ',macaddr='.$config->{'ifmac'}[$idx]; } else { push @qcmd_parts, '-net nic,vlan='.$config->{'vlan'}[$idx]; } if ( $config->{'nettype'}[$idx] eq 'usermode' ) { push @qcmd_parts, '-net user,vlan='.$config->{'vlan'}[$idx]; } elsif ( $config->{'nettype'}[$idx] eq 'tuntap' ) { if ( $config->{'tunscript'}[$idx] ) { push @qcmd_parts, '-net tap,vlan='.$config->{'vlan'}[$idx]. ',ifname='.$config->{'ifname'}[$idx]. ',script='.$config->{'tunscript'}[$idx]; } else { push @qcmd_parts, '-net tap,vlan='.$config->{'vlan'}[$idx]. ',ifname='.$config->{'ifname'}[$idx]; } } elsif ( $config->{'nettype'}[$idx] eq 'tuntapfd' ) { push @qcmd_parts, '-net tap,vlan='.$config->{'vlan'}[$idx]. ',fd='.$config->{'tunfd'}[$idx]; } elsif ( $config->{'nettype'}[$idx] eq 'tcplisten' ) { if ( $config->{'ifip'}[$idx] ) { push @qcmd_parts, '-net socket,vlan='.$config->{'vlan'}[$idx]. ',listen='.$config->{'ifip'}[$idx].':'.$config->{'port'}[$idx]; } else { push @qcmd_parts, '-net socket,vlan='.$config->{'vlan'}[$idx]. ',listen=:'.$config->{'port'}[$idx]; } } elsif ( $config->{'nettype'}[$idx] eq 'tcpconnect' ) { if ( $config->{'ifip'}[$idx] ) { push @qcmd_parts, '-net socket,vlan='.$config->{'vlan'}[$idx]. ',connect='.$config->{'ifip'}[$idx].':'.$config->{'port'}[$idx]; } else { push @qcmd_parts, '-net socket,vlan='.$config->{'vlan'}[$idx]. ',connect=:'.$config->{'port'}[$idx]; } } elsif ( $config->{'nettype'}[$idx] eq 'tcpfd' ) { push @qcmd_parts, '-net socket,vlan='.$config->{'vlan'}[$idx]. ',fd='.$config->{'tunfd'}[$idx]; } elsif ( $config->{'nettype'}[$idx] eq 'multicast' ) { if ( $config->{'ifip'}[$idx] ) { push @qcmd_parts, '-net socket,vlan='.$config->{'vlan'}[$idx]. ',mcast='.$config->{'ifip'}[$idx].':'.$config->{'port'}[$idx]; } else { push @qcmd_parts, '-net socket,vlan='.$config->{'vlan'}[$idx]. ',mcast=:'.$config->{'port'}[$idx]; } } elsif ( $config->{'nettype'}[$idx] eq 'multicastfd' ) { push @qcmd_parts, '-net socket,vlan='.$config->{'vlan'}[$idx]. ',fd='.$config->{'tunfd'}[$idx]; } } if ( $config->{'smbdir'} ) { push @qcmd_parts, '-smb'; push @qcmd_parts, $config->{'smbdir'}; } if ( $config->{'portredirects'} ) { foreach my $redir ( @{$config->{'portredirects'}} ) { push @qcmd_parts, '-redir'; push @qcmd_parts, $redir; } } } if ( $config->{'localtime'} ) { push @qcmd_parts, '-localtime'; } if ( $config->{'audio'} and ( ( $config->{'systype'} eq 'x86' ) or ( $config->{'systype'} eq 'x86_64' ) or ( $config->{'systype'} eq 'x86-64' ) or ( $config->{'systype'} eq 'ppc' ) or ( $config->{'systype'} eq 'ppc64' ) ) ) { push @qcmd_parts, '-soundhw'; push @qcmd_parts, $config->{'sndtype'}; } if ( $config->{'fullscreen'} ) { push @qcmd_parts, '-full-screen'; } if ( $config->{'keyboard'} ) { push @qcmd_parts, '-k'; push @qcmd_parts, $config->{'keyboard'}; } if ($config->{'numcpus'} > 1) { push @qcmd_parts, '-smp'; push @qcmd_parts, $config->{'numcpus'} ; } if ( $config->{'nogfx'} ) { push @qcmd_parts, '-nographic'; } elsif ( ( $config->{'gfxtype'} eq 'vga' ) and ( ( $config->{'systype'} eq 'x86' ) or ( $config->{'systype'} eq 'x86-64' ) or ( $config->{'systype'} eq 'x86_64' ) ) ) { push @qcmd_parts, '-std-vga'; } if ( $config->{'serialdev'} ) { push @qcmd_parts, '-serial'; push @qcmd_parts, $config->{'serialdev'}; } if ( $config->{'log'} and scalar($config->{'logthese'}) ) { push @qcmd_parts, '-d'; push @qcmd_parts, join( ',', ($config->{'logthese'}) ); } if ( ( $config->{'acceleration'} eq 'disable' ) and ( ( $config->{'systype'} eq 'x86' ) or ( $config->{'systype'} eq 'x86-64' ) or ( $config->{'systype'} eq 'x86_64' ) ) ) { push @qcmd_parts, '-no-kqemu'; } elsif ( ( $config->{'acceleration'} eq 'full' ) and ( ( $config->{'systype'} eq 'x86' ) or ( $config->{'systype'} eq 'x86-64' ) or ( $config->{'systype'} eq 'x86_64' ) ) ) { push @qcmd_parts, '-kernel-kqemu'; } if ( $config->{'args'} ) { push @qcmd_parts, $config->{'args'}; } if ( !$quick_launch ) { push @qcmd_parts, '&'; } $qcmd = join(' ', @qcmd_parts); print "$qcmd\n"; if ( !$main_config->{'prelaunchcmd'} =~ /^\s*$/ ) { system( $main_config->{'prelaunchcmd'} ); } system($qcmd); } # Create disk image # Args: none (reads global $drive) sub create_disk_image { my $window = $gladexml->get_widget('diskimageswindow'); my $type = NULL; foreach my $radiobutton ( qw/flat newcow oldcow vmware cow2/ ) { if ( ($gladexml->get_widget($radiobutton.'radiobutton'))->get_active() ) { $type = $radiobutton; } } my $size = ($gladexml->get_widget('imgsizespinbutton'))->get_value(); my $dir = ($gladexml->get_widget('imgdirfileentry'))->get_text(); my $name = ($gladexml->get_widget('imgnameentry'))->get_text(); my $orig = ($gladexml->get_widget('origimgfileentry'))->get_text(); if ( !$dir ) { alert_user( gettext("Not a valid directory for 'New image location'.") ); return(TRUE); } if ( !$name ) { alert_user( gettext("Not a valid name for 'New image name'.") ); return(TRUE); } if ( !$orig and ( $type eq 'vmware' or $type eq 'oldcow' ) ) { alert_user( gettext("Not a valid image for 'Original image'.") ); return(TRUE); } my $error = FALSE; if ( $type eq 'flat' ) { if ( system( $main_config->{'qemuimgpath'}. " create -f raw \"$dir/$name\" ${size}M") ) { $error = TRUE; } } elsif ( $type eq 'newcow' ) { if( system( $main_config->{'qemuimgpath'}. " create -f qcow2 \"$dir/$name\" ${size}M") ) { $error = TRUE; } } elsif ( $type eq 'oldcow' ) { if ( system( $main_config->{'qemuimgpath'}. " convert -f raw \"$orig\" -O qcow2 \"$dir/$name\"") ) { $error = TRUE; } } elsif ( $type eq 'vmware' ) { if ( system( $main_config->{'qemuimgpath'}. " convert -f vmdk \"$orig\" -O qcow2 \"$dir/$name\"") ) { $error = TRUE; } } elsif ( $type eq 'cow2' ) { if ( system( $main_config->{'qemuimgpath'}. " convert -f qcow \"$orig\" -O qcow2 \"$dir/$name\"") ) { $error = TRUE; } } if ( $error ) { alert_user( gettext("An error occurred creating the disk image:")."\n$!"); } else { my $target_fileentry = $gladexml->get_widget( $drive.'fileentry' ); $target_fileentry->set_text("$dir/$name"); $window->hide; } return(TRUE); } # Create the disk image dialog # Args: drive name this image will be used for sub create_disk_image_dialog { $drive = shift; my $target_entry = $gladexml->get_widget($drive.'fileentry'); my $window = $gladexml->get_widget('diskimageswindow'); my $type = ""; my $sigid = undef; # Set values to default ($gladexml->get_widget('imgdirfileentry'))->set_text($main_config->{'imagedir'}); ($gladexml->get_widget('origimgfileentry'))->set_text(""); ($gladexml->get_widget('imgnameentry'))->set_text(""); ($gladexml->get_widget('imgsizespinbutton'))->set_value(1000); ($gladexml->get_widget('newcowradiobutton'))->set_active(1); $window->set_transient_for( $gladexml->get_widget('mainwindow') ); $window->show(); } # Check the boot disk values in the given config, # raise alerts and return FALSE if problems, else TRUE # Args: a config hashref sub check_config { my $config = shift; my $name = $gladexml->get_widget('bootcombobox')->get_active_text(); my $bootdev = $config->{'boot'}; my $bootdevfileentry = $gladexml->get_widget( $boot_values_dev{ $bootdev }.'fileentry'); my $bootdevpath = $bootdevfileentry->get_text(); if ( $bootdevpath eq "" ) { alert_user( sprintf(gettext("No file specified for %s."), $name) ); return(FALSE); } elsif ( ! -e $bootdevpath ) { alert_user( sprintf(gettext("Not a valid file for %s."), $name) ); return(FALSE); } return(TRUE); } ##################### # Various dialogs # ##################### # File chooser dialog # Args: entry name prefix sub select_file { my ($button, @data) = @_; my $entry = $data[0][0]; my $parent = $data[0][1]; my $chooser = Gtk2::FileChooserDialog->new( gettext('Select a File'), $gladexml->get_widget($parent), 'open', 'gtk-cancel' => 'GTK_RESPONSE_CANCEL', 'gtk-open' => 'GTK_RESPONSE_OK' ); if ($chooser->run() eq 'ok') { my $filename = $chooser->get_filename(); my $target_entry = $gladexml->get_widget($entry.'fileentry'); $target_entry->set_text($filename); } $chooser->destroy(); } sub select_file_fixme { my ($button, $entry) = @_; my $chooser = Gtk2::FileChooserDialog->new( gettext('Select a File'), $gladexml->get_widget('mainwindow'), 'open', 'gtk-cancel' => 'GTK_RESPONSE_CANCEL', 'gtk-open' => 'GTK_RESPONSE_OK' ); if ($chooser->run() eq 'ok') { my $filename = $chooser->get_filename(); my $target_entry = $gladexml->get_widget('fileentry_tuntapscript_'.$entry); $target_entry->set_text($filename); } $chooser->destroy(); } # Directory chooser dialog # args: entry name prefix sub select_directory { my ($button, @data) = @_; my $entry = $data[0][0]; my $parent = $data[0][1]; my $chooser = Gtk2::FileChooserDialog->new( gettext('Select a Directory'), $gladexml->get_widget($parent), 'select-folder', 'gtk-cancel' => 'GTK_RESPONSE_CANCEL', 'gtk-open' => 'GTK_RESPONSE_OK' ); if ($chooser->run() eq 'ok') { my $filename = $chooser->get_filename(); my $target_entry = $gladexml->get_widget($entry.'fileentry'); $target_entry->set_text($filename); } $chooser->destroy(); } # Display a modal alert for the user # Args: message to display sub alert_user { my $msg = shift; if ( DEBUG_LEVEL > 1 ) { print('alert_user(): "'.$msg.'"'."\n"); } if ( $quick_launch ) { print($msg."\n"); } else { my $dialog = $gladexml->get_widget('alertdialog'); my $label = $gladexml->get_widget('alertdialogtext'); $dialog->set_transient_for( $gladexml->get_widget('mainwindow') ); $label->set_markup($msg); $dialog->signal_connect ('response' => sub { my $self = shift; $self->hide; }); $dialog->run(); } } # Ask the user an ok/cancel question # Args: message to display sub ask_user { my $msg = shift; if ( DEBUG_LEVEL > 1 ) { print('ask_user(): "'.$msg.'"'."\n"); } my $dialog = $gladexml->get_widget('okcanceldialog'); my $label = $gladexml->get_widget('okcanceldialogtext'); $dialog->set_transient_for( $gladexml->get_widget('mainwindow') ); $label->set_text($msg); $dialog->signal_connect ('response' => sub { my $self = shift; $self->hide; }); if ( $dialog->run() eq 'ok' ) { return(TRUE); } } ##################################### # Handle port redirection options # ##################################### # Add the redir rule to the lists of redirs and # return the new list.(skips if it exists already) # Args: $new_redir, \@redirs sub add_redir { my $new_redir = $_[0]; my @redirs = @{$_[1]}; my $found; foreach my $redir ( @redirs ) { if ( $redir eq $new_redir ) { $found = 1; last; } } if (!$found) { push( @redirs, $new_redir); } return(@redirs); } # Changes $old_redir to $new_redir in the GUI # Pulls list from GUI, makes change in list, # returns new list. # Args: $new_redir, $old_redir sub change_redir { my $new_redir = $_[0]; my $old_redir = $_[1]; my @redirs = pull_redirs(); my @new_redirs; foreach my $redir ( @redirs ) { $redir = $new_redir if( $redir eq $old_redir ); push( @new_redirs, $redir); } return(@new_redirs); } # Removes $redir from redir rules list, returns new list. # Args: $redir, \@redirs sub del_redir { my $del_redir = $_[0]; my @redirs = @{$_[1]}; my @new_redirs; foreach my $redir ( @redirs ) { if ( $redir ne $del_redir ) { push( @new_redirs, $redir); } } return(@new_redirs); } # Pulls redir rules from GUI and returns list # Args: none sub pull_redirs { my $redirstreemodel = ($gladexml->get_widget('redirstreeview'))->get_model; my $iter = $redirstreemodel->get_iter_first; my @redirs; while( $iter ) { my ( $proto, $hport, $gip, $gport) = $redirstreemodel->get($iter,(0..3)); $iter = $redirstreemodel->iter_next($iter); push( @redirs,"$proto:$hport:$gip:$gport" ); } return(@redirs); } # Clear the redirs treeview and add the items from \@redirs # args: \@redirs sub push_redirs { my @redirs = @{$_[0]}; my $redirstreemodel = ($gladexml->get_widget('redirstreeview'))->get_model; my $iter = $redirstreemodel->get_iter_first; if ( $iter ) { while( $redirstreemodel->remove($iter) ){}; } $iter = $redirstreemodel->get_iter_first; foreach my $redir ( @redirs ) { my $listiter = $redirstreemodel->append; my ( $proto, $hport, $gip, $gport) = split( ':', $redir ); $redirstreemodel->set ($listiter, 0, $proto,1, $hport, 2, $gip, 3, $gport); } } # Get the redir rule that is selected in the treeview # returns 0 if none selected # Args: none sub get_selected_redir { my $redirstreeview = $gladexml->get_widget('redirstreeview'); my ($path, $focus_column) = $redirstreeview->get_cursor; if ( !$path ) { return(0); } my $model = $redirstreeview->get_model; my $iter=$model->get_iter( $path ); my ( $proto, $hport, $gip, $gport) = $model->get($iter,(0..3)); return( "$proto:$hport:$gip:$gport" ); } # Get the redir rule from the entry widgets. # Args: none sub pull_redir_rule { my $guestip = $gladexml->get_widget('guestoctetentry')->get_text; my $proto = $gladexml->get_widget('tcpprotoradiobutton')->get_active; if ($proto) { $proto = 'tcp'; } else { $proto = 'udp'; } my $hostport = $gladexml->get_widget('hostportspinbutton')->get_value; my $guestport = $gladexml->get_widget('guestportspinbutton')->get_value; return( "$proto:$hostport:$guestip:$guestport" ); } # Set the values from $redir_data in the entry widgets # Args: $redir_data sub push_redir_rule { my $redir_data = shift; my ( $proto, $hport, $gip, $gport) = split ':', $redir_data; $gladexml->get_widget('guestoctetentry')->set_text($gip); if($proto eq 'tcp' ) { my $proto = $gladexml-> get_widget('tcpprotoradiobutton')->set_active(1); } else { my $proto = $gladexml-> get_widget('udpprotoradiobutton')->set_active(1); } $gladexml->get_widget('hostportspinbutton')->set_value($hport); $gladexml->get_widget('guestportspinbutton')->set_value($gport); } ############################ # Miscelaneous functions # ############################ # Check to see if a given name is currently in the vm list # Args: name of VM config sub in_vm_list { my $vmname = shift; foreach my $entry ( @vm_list) { if ( $entry eq $vmname ) { return(TRUE); } } return(FALSE); } # Add a name to the vm list combobox widget # Args: name to add sub add_vm_to_list { my $vmname = shift; my $combo = $gladexml->get_widget('vmnamecomboboxentry'); $combo->append_text($vmname); } # Read the current value from a combobox # Args: widget name sub get_comboentry_val { my $val; my $widgetname = shift; my $widget = $gladexml->get_widget($widgetname); my $model = $widget->get_model(); my $iter = $widget->get_active_iter(); if ( defined $iter ) { $val = $model->get( $iter, $widget->get_text_column() ); } else { $val = ($widget->get_child())->get_text(); } return($val); } # Read the current value from a combobox. # Args: widget name sub get_combobox_val { my $widgetname = shift; my $widget = $gladexml->get_widget($widgetname); my $model = $widget->get_model(); my $iter = $widget->get_active_iter(); if ( !$iter ) { $iter = $model->get_iter_first(); } my $val = $model->get($iter ,0); return($val); } # Set a combobox value to be active # Args: $combobox, $value sub set_combobox_val { my $cb = shift; my $val = shift; my $soon_to_be_active_iter; my $model = $cb->get_model(); my $iter = $model->get_iter_first; do { my $cur_val = $model->get($iter, 0); if ( $cur_val eq $val ) { $soon_to_be_active_iter = $iter ; } } while ( !$soon_to_be_active_iter and $iter = $model->iter_next($iter) ); if ($soon_to_be_active_iter) { $cb->set_active_iter($soon_to_be_active_iter); } } # Check a string to see if we will allow it to be used as # a VM name. If not, issue a warning to the user and return FALSE. # legal characters defined by: $good_name_regex # args: sub check_vm_name { my $name = shift; if( $name =~ /$good_name_regex/ ) { return(TRUE); } else { alert_user( gettext("Some characters in the name are not valid.\n Use only letters, numbers, -, _, and space.") ); return(FALSE); } } # Set apropriate options in NIC tabs to sensitive or not sensitive # Args: widget number, array of bits sub nic_set_sensitive { my ($idx, @bits) = @_; ($gladexml->get_widget('entry_ipaddr_'.$idx))->set_sensitive($bits[0]); ($gladexml->get_widget('spinb_port_'.$idx))->set_sensitive($bits[1]); ($gladexml->get_widget('entry_macaddr_'.$idx))->set_sensitive($bits[2]); ($gladexml->get_widget('spinb_vlan_'.$idx))->set_sensitive($bits[3]); ($gladexml->get_widget('fileentry_tuntapscript_'.$idx))->set_sensitive($bits[4]); ($gladexml->get_widget('button_tuntapscript_'.$idx))->set_sensitive($bits[5]); ($gladexml->get_widget('entry_ifname_'.$idx))->set_sensitive($bits[6]); ($gladexml->get_widget('spinb_fd_'.$idx))->set_sensitive($bits[7]); } # Set apropriate options in NIC tabs to sensitive or not sensitive # Args: widget, number of widget sub nic_options_sensitive { my ($nettypecombo, $idx) = @_; my $val = $net_val_by_num{ $nettypecombo->get_active() }; if ( $val eq 'usermode' ) { nic_set_sensitive( $idx, (0,0,1,1,0,0,0,0) ); } elsif ( $val eq 'tuntap' ) { nic_set_sensitive( $idx, (0,0,1,1,1,1,1,0) ); } elsif ( ($val eq 'tuntapfd') or ($val eq 'tcpfd') or ($val eq 'multicastfd') ) { nic_set_sensitive( $idx, (0,0,1,1,0,0,0,1) ); } elsif ( ($val eq 'tcplisten') or ($val eq 'tcpconnect') or ($val eq 'multicast') ) { nic_set_sensitive( $idx, (1,1,1,1,0,0,0,0) ); } else { nic_set_sensitive( $idx, (0,0,0,0,0,0,0,0) ); } } # Set port redirection options to sensitive or not sensitive # Args: 1 for sensitive, 0 for not sensitive sub redir_options_sensitive { my $state = shift; ($gladexml->get_widget('smbdirfileentry'))->set_sensitive($state); ($gladexml->get_widget('redirstreeview'))->set_sensitive($state); ($gladexml->get_widget('rediraddbutton'))->set_sensitive($state); ($gladexml->get_widget('redirapplybutton'))->set_sensitive($state); ($gladexml->get_widget('redirremovebutton'))->set_sensitive($state); ($gladexml->get_widget('tcpprotoradiobutton'))->set_sensitive($state); ($gladexml->get_widget('udpprotoradiobutton'))->set_sensitive($state); ($gladexml->get_widget('hostportspinbutton'))->set_sensitive($state); ($gladexml->get_widget('guestportspinbutton'))->set_sensitive($state); ($gladexml->get_widget('guestoctetentry'))->set_sensitive($state); } ################# # Startup # ################# # If an argument was given, assume we are # launching from the command line. if ( scalar @ARGV ) { $quick_launch = TRUE; } else { Gtk2->init; $gladexml = Gtk2::GladeXML->new( $glade_files_dir.'/qemulauncher.glade' ); } # Create default main config if none exists if ( ! -e "$conf_dir/$conf_file" ) { if( ! -e $conf_dir ) { mkdir $conf_dir; } save_main_config( \%main_config_defaults ); } if( ! get_main_config() ) { alert_user( gettext("There was a problem reading the main configuration. Starting with defaults.") ); $main_config = \%main_config_defaults; } if ( ! $quick_launch ) { set_main_config(); } @vm_list = list_vm_configs(); # Launch the qemu session specified on the command line if ( $quick_launch ) { if ( in_vm_list($ARGV[0]) ) { run_vm( load_vm_config($ARGV[0]) ); exit(0); } else { alert_user( sprintf(gettext("A configuration named '%s' does not exist."), $ARGV[0]) ); exit(1); } } # Populate the vm config list $idx = 0; my $defaults_idx = -1; foreach my $name ( @vm_list ) { add_vm_to_list( $name ); if ( $name eq $defaults_name ) { $defaults_idx = $idx; } $idx++; } ($gladexml->get_widget('vmnamecomboboxentry'))->set_active($defaults_idx); if ( DEBUG_LEVEL > 1 ) { print "main(): Config list:\n".Dumper(\@vm_list); } # Create default config if none exists if ( ! -f "$conf_dir/$defaults_name" ) { if ( DEBUG_LEVEL > 1 ) { print "main(): Creating default config\n" ; } save_vm_config_to_file( $defaults_name, \%default_config ); } $default_config{'comment'} = gettext($default_config{'comment'}); ############################## # Create some more widgets # ############################## foreach my $item ( gettext('Floppy A'), gettext('Hard disk 0'), gettext('CD-ROM') ) { ($gladexml->get_widget('bootcombobox'))->append_text($item); } foreach my $item ( gettext('PC, 32-bit (x86)'), gettext('PC, 64-bit (x86_64)'), gettext('ARM, little endian (arm)'), gettext('ARM, big endian (armeb)'), gettext('PowerPC, 32-bit (ppc)'), gettext('PowerPC, 64-bit (ppc64)'), gettext('SPARC, 32-bit (sparc)'), gettext('SPARC, 64-bit (sparc64)'), gettext('MIPS, big endian (mips)'), gettext('MIPS, little endian (mipsel)') ) { ($gladexml->get_widget('systypecombobox'))->append_text($item); } foreach my $item ( gettext('Default'), 'vc', 'pty', 'null', 'stdio' ) { ($gladexml->get_widget('serialdevcombobox'))->append_text($item); ($gladexml->get_widget('monitordevcombobox'))->append_text($item); } foreach my $item ( gettext('Default'), 'ar', 'da', 'de', 'de-ch', 'en-gb', 'en-us', 'es', 'et', 'fi', 'fo', 'fr', 'fr-be', 'fr-ca', 'fr-ch', 'hr', 'hu', 'is', 'it', 'ja', 'lt', 'lv', 'mk', 'nl', 'nl-be', 'no', 'pl', 'pt', 'pt-br', 'ru', 'sl', 'sv', 'th', 'tr' ) { ($gladexml->get_widget('keyboardcombobox'))->append_text($item); } $gladexml->get_widget('keyboardcombobox')->set_wrap_width(6); for ($idx = 0; $idx < 8; $idx++) { foreach my $item ( gettext('Use the user mode network stack'), gettext('Open a TUN/TAP interface'), gettext('Use an already open TUN/TAP interface'), gettext('Open a listening TCP socket'), gettext('Use an already open TCP socket'), gettext('Connect to listening TCP socket'), gettext('Create shared VLAN via UDP multicast socket'), gettext('Use an already open UDP multicast socket'), gettext('No connection') ) { ($gladexml->get_widget('combo_nettype_'.$idx))->append_text($item); } } my $renderer = Gtk2::CellRendererText->new; my $column1 = Gtk2::TreeViewColumn-> new_with_attributes (gettext("Protocol"), $renderer, "text", 0 ); my $column2 = Gtk2::TreeViewColumn-> new_with_attributes (gettext("Host port"), $renderer, "text", 1 ); my $column3 = Gtk2::TreeViewColumn-> new_with_attributes (gettext("Guest IP"), $renderer, "text", 2 ); my $column4 = Gtk2::TreeViewColumn-> new_with_attributes (gettext("Guest port"), $renderer, "text", 3 ); my $liststore = Gtk2::ListStore->new ( 'Glib::String', 'Glib::String', 'Glib::String', 'Glib::String'); my $redirstreeview = $gladexml->get_widget('redirstreeview'); $redirstreeview->set_model($liststore); $redirstreeview->append_column($column1); $redirstreeview->append_column($column2); $redirstreeview->append_column($column3); $redirstreeview->append_column($column4); ($gladexml->get_widget('abouttext'))->set_markup( "$application_name $version" ."\n\n" .gettext("Copyright (C)")." 2004, 2005, Erik Meitner <erik\@wanderings.us\>" ."\n" .gettext("Copyright (C)")." 2006, 2007, Linas Žvirblis <0x0007\@gmail.com\>" ."\n" .gettext("QEMU is a trademark of Fabrice Bellard") ."\n\n" .gettext("This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.") ."\n\n" .gettext("This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.") ); ########################### # Setup signal handlers # ########################### my $mainwindow = $gladexml->get_widget('mainwindow'); $mainwindow->signal_connect('delete_event' => sub { Gtk2->main_quit; TRUE }); my $cfgapplybutton = $gladexml->get_widget('cfgapplybutton'); $cfgapplybutton->signal_connect_swapped('clicked', \&apply_main_config); my $cfgsavebutton = $gladexml->get_widget('cfgsavebutton'); $cfgsavebutton->signal_connect_swapped('clicked', \&cb_save_config ); my $cfgcancelbutton = $gladexml->get_widget('cfgcancelbutton'); $cfgcancelbutton->signal_connect_swapped('clicked', \&set_main_config ); my $vmnamecomboboxentry = $gladexml->get_widget('vmnamecomboboxentry'); $vmnamecomboboxentry->signal_connect('changed', \&show_vm_config); my $savevmbutton = $gladexml->get_widget('savevmbutton'); $savevmbutton->signal_connect('clicked', \&save_vm_config); my $deletevmbutton = $gladexml->get_widget('deletevmbutton'); $deletevmbutton->signal_connect('clicked', \&delete_vm_config); my $execvmbutton = $gladexml->get_widget('execvmbutton'); $execvmbutton->signal_connect_swapped('clicked', \&run_vm); my $closebutton = $gladexml->get_widget('closebutton'); $closebutton->signal_connect('clicked' => sub { Gtk2->main_quit; TRUE }); my $dskimggobutton = $gladexml->get_widget('gobutton'); $dskimggobutton->signal_connect('clicked', \&create_disk_image); foreach my $prefix ( qw/fda fdb cd hda hdb hdc hdd kernel initrd qemupath qemuimgpath qemuctlpath state/ ) { my $button = $gladexml->get_widget($prefix.'button'); $button->signal_connect('clicked', \&select_file, [$prefix, 'mainwindow']); } foreach my $prefix ( qw/imagedir smbdir/ ) { my $button = $gladexml->get_widget($prefix.'button'); $button->signal_connect('clicked', \&select_directory, [$prefix, 'mainwindow']); } for ($idx = 0; $idx < 8; $idx++) { my $button = $gladexml->get_widget('button_tuntapscript_'.$idx); $button->signal_connect('clicked', \&select_file_fixme, $idx); } ################################## # Deal with port redir widgets # ################################## my $rediraddbutton = $gladexml->get_widget('rediraddbutton'); $rediraddbutton->signal_connect ('clicked'=>sub{ my @redirs = pull_redirs; my $redir = pull_redir_rule; @redirs = add_redir( $redir, \@redirs ); push_redirs( \@redirs ); } ); my $redirremovebutton = $gladexml->get_widget('redirremovebutton'); $redirremovebutton->signal_connect ('clicked'=>sub{ my @redirs = pull_redirs; my $redir = get_selected_redir; if ( $redir ) { @redirs = del_redir( $redir, \@redirs ); push_redirs( \@redirs ); } } ); my $redirapplybutton = $gladexml->get_widget('redirapplybutton'); $redirapplybutton->signal_connect ('clicked'=>sub{ my $redir = pull_redir_rule; my $old_redir = get_selected_redir; if ( $old_redir ) { my @redirs = change_redir( $redir, $old_redir); push_redirs( \@redirs ); } } ); $redirstreeview->signal_connect ('cursor-changed'=>sub{ my $treeview = shift; my ($path, $focus_column) = $treeview->get_cursor; my $model = $treeview->get_model; my $iter=$model->get_iter( $path ); my ( $proto, $hport, $gip, $gport) = $model->get($iter,(0..3)); push_redir_rule( "$proto:$hport:$gip:$gport" ); } ); ##################### # Various signals # ##################### my $nogfxcheckbutton = $gladexml->get_widget('nogfxcheckbutton'); $nogfxcheckbutton->signal_connect ('toggled'=>sub{ my $state =!($nogfxcheckbutton->get_active()); my $systypecombobox = $gladexml->get_widget('systypecombobox'); if ( ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'x86' ) or ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'x86-64' ) or ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'x86_64' ) ) { ($gladexml->get_widget('gfxpciradiobutton'))->set_sensitive($state); ($gladexml->get_widget('gfxvgaradiobutton'))->set_sensitive($state); } else { ($gladexml->get_widget('gfxpciradiobutton'))->set_sensitive(0); ($gladexml->get_widget('gfxvgaradiobutton'))->set_sensitive(0); } } ); my $audiocheckbutton = $gladexml->get_widget('audiocheckbutton'); $audiocheckbutton->signal_connect ('toggled'=>sub{ my $state =($audiocheckbutton->get_active()); ($gladexml->get_widget('sndsbradiobutton'))->set_sensitive($state); ($gladexml->get_widget('sndesradiobutton'))->set_sensitive($state); } ); my $numnicspinbutton = $gladexml->get_widget('numnicspinbutton'); $numnicspinbutton->signal_connect('value-changed' => sub { my $val = ($numnicspinbutton->get_value_as_int()); for ($idx = 0; $idx < $val; $idx++) { ($gladexml->get_widget('vbox_nic'.$idx))->show(); } for ($idx = $val; $idx < 8; $idx++) { ($gladexml->get_widget('vbox_nic'.$idx))->hide(); } if ($val == 0) { redir_options_sensitive(0); ( $gladexml->get_widget('smbdirfileentry') )->set_sensitive(0); ( $gladexml->get_widget('smbdirbutton') )->set_sensitive(0); } elsif ($val >= 1) { redir_options_sensitive(1); ( $gladexml->get_widget('smbdirfileentry') )->set_sensitive(1); ( $gladexml->get_widget('smbdirbutton') )->set_sensitive(1); } } ); my @nettypecombo; for ($idx = 0; $idx < 8; $idx++) { $nettypecombo[$idx] = $gladexml->get_widget('combo_nettype_'.$idx); $nettypecombo[$idx]->signal_connect('changed' => \&nic_options_sensitive, $idx); } my $logcheckbutton = $gladexml->get_widget('logcheckbutton'); $logcheckbutton->signal_connect ('toggled'=>sub{ foreach my $logtype ( qw/cpu exec in_asm int op_opt op out_asm pcall/ ){ ($gladexml->get_widget($logtype.'togglebutton'))->set_sensitive($logcheckbutton ->get_active()); } } ); my $linuxbootcheckbutton = $gladexml->get_widget('linuxbootcheckbutton'); $linuxbootcheckbutton->signal_connect ('toggled'=>sub{ my $state = $linuxbootcheckbutton->get_active(); ($gladexml->get_widget('kernelcmdentry'))->set_sensitive($state); ($gladexml->get_widget('initrdfileentry'))->set_sensitive($state); ($gladexml->get_widget('initrdbutton'))->set_sensitive($state); ($gladexml->get_widget('kernelfileentry'))->set_sensitive($state); ($gladexml->get_widget('kernelbutton'))->set_sensitive($state); ($gladexml->get_widget('bootcombobox'))->set_sensitive(! $state); } ); my $usecdromcheckbutton = $gladexml->get_widget('usecdromcheckbutton'); $usecdromcheckbutton->signal_connect ('toggled'=>sub { my $state = $usecdromcheckbutton->get_active(); ($gladexml->get_widget('cdfileentry'))->set_sensitive($state); ($gladexml->get_widget('cdbutton'))->set_sensitive($state); ($gladexml->get_widget('hdcfileentry'))->set_sensitive(! $state); ($gladexml->get_widget('hdcbutton'))->set_sensitive(! $state); ($gladexml->get_widget('hdccreimgbutton'))->set_sensitive(! $state); } ); foreach my $diskname ( qw/hda hdb hdc hdd/) { my $button = $gladexml->get_widget($diskname."creimgbutton"); $button->signal_connect ('clicked'=>sub{ create_disk_image_dialog($diskname); } ); } foreach my $diskname ( qw/fda fdb hda hdb hdc hdd cd/) { ($gladexml->get_widget($diskname.'fileentry'))-> set_text($main_config->{'imagedir'}); } my $qemuctlcheckbutton = $gladexml->get_widget('qemuctlcheckbutton'); $qemuctlcheckbutton->signal_connect ('toggled'=>sub { my $state = ($qemuctlcheckbutton->get_active()); if ( $state ) { set_combobox_val( $gladexml->get_widget('monitordevcombobox'), 'stdio' ); if ( get_combobox_val('serialdevcombobox' ) eq 'stdio' ) { alert_user(gettext("Serial redirection cannot use 'stdio' at the same time as the monitor. Setting serial redirection to 'Default'.")); set_combobox_val( $gladexml->get_widget('serialdevcombobox'), 'Default' ); } $gladexml->get_widget('monitordevcombobox')->set_sensitive(0); } else { $gladexml->get_widget('monitordevcombobox')->set_sensitive(1); } } ); my $systypecombobox = $gladexml->get_widget('systypecombobox'); $systypecombobox->signal_connect('changed' => sub { my $state0 = $gladexml->get_widget('audiocheckbutton')->get_active(); my $state1 = !$gladexml->get_widget('nogfxcheckbutton')->get_active(); if ( ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'arm' ) or ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'armeb' ) or ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'sparc' ) or ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'sparc64' ) or ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'mips' ) or ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'mipsel' ) ) { $gladexml->get_widget('audiocheckbutton')->set_sensitive(0); $gladexml->get_widget('sndsbradiobutton')->set_sensitive(0); $gladexml->get_widget('sndesradiobutton')->set_sensitive(0); } else { $gladexml->get_widget('audiocheckbutton')->set_sensitive(1); $gladexml->get_widget('sndsbradiobutton')->set_sensitive($state0); $gladexml->get_widget('sndesradiobutton')->set_sensitive($state0); } if ( ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'x86' ) or ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'x86-64' ) or ( $sys_val_by_num{ $systypecombobox->get_active() } eq 'x86_64' ) ) { $gladexml->get_widget('gfxvgaradiobutton')->set_sensitive($state1); $gladexml->get_widget('gfxpciradiobutton')->set_sensitive($state1); $gladexml->get_widget('acceloffradiobutton')->set_sensitive(1); $gladexml->get_widget('accelonradiobutton')->set_sensitive(1); $gladexml->get_widget('accelfullradiobutton')->set_sensitive(1); } else { $gladexml->get_widget('gfxvgaradiobutton')->set_sensitive(0); $gladexml->get_widget('gfxpciradiobutton')->set_sensitive(0); $gladexml->get_widget('acceloffradiobutton')->set_sensitive(0); $gladexml->get_widget('accelonradiobutton')->set_sensitive(0); $gladexml->get_widget('accelfullradiobutton')->set_sensitive(0); } }); ############################################ # Signal handlers for disk images window # ############################################ my $diskimgwindow = $gladexml->get_widget('diskimageswindow'); $diskimgwindow->signal_connect ('delete_event' => sub { my $self = shift; $self->hide(); return(TRUE); }); my $dskimgcancelbutton = $gladexml->get_widget('cancelbutton'); $dskimgcancelbutton->signal_connect ('clicked' => sub { $diskimgwindow->hide(); return(TRUE); }); my $origimgfileentry = $gladexml->get_widget('origimgfileentry'); my $origimgbutton = $gladexml->get_widget('origimgbutton'); my $imgdirbutton = $gladexml->get_widget('imgdirbutton'); my $imgsizespinbutton = $gladexml->get_widget('imgsizespinbutton'); ($gladexml->get_widget('flatradiobutton'))-> signal_connect ('clicked' => sub { $origimgfileentry->set_sensitive(FALSE); $origimgbutton->set_sensitive(FALSE); $imgsizespinbutton->set_sensitive(TRUE); return(TRUE); }); ($gladexml->get_widget('newcowradiobutton'))-> signal_connect ('clicked' => sub { $origimgfileentry->set_sensitive(FALSE); $origimgbutton->set_sensitive(FALSE); $imgsizespinbutton->set_sensitive(TRUE); return(TRUE); }); ($gladexml->get_widget('oldcowradiobutton'))-> signal_connect ('clicked' => sub { $origimgfileentry->set_sensitive(TRUE); $origimgbutton->set_sensitive(TRUE); $imgsizespinbutton->set_sensitive(FALSE); return(TRUE); }); ($gladexml->get_widget('vmwareradiobutton'))-> signal_connect ('clicked' => sub { $origimgfileentry->set_sensitive(TRUE); $origimgbutton->set_sensitive(TRUE); $imgsizespinbutton->set_sensitive(FALSE); return(TRUE); }); ($gladexml->get_widget('cow2radiobutton'))-> signal_connect ('clicked' => sub { $origimgfileentry->set_sensitive(TRUE); $origimgbutton->set_sensitive(TRUE); $imgsizespinbutton->set_sensitive(FALSE); return(TRUE); }); $origimgbutton->signal_connect('clicked', \&select_file, ['origimg', 'diskimageswindow']); $imgdirbutton->signal_connect('clicked', \&select_directory, ['imgdir', 'diskimageswindow']); # Ready. push_vm_config( load_vm_config($defaults_name) ); # Go! Gtk2->main; exit; qemu-launcher-1.7.4/README0000644000175000017500000000245110632602574014156 0ustar linaslinasSummary Qemu Launcher is a GTK+ front-end for the QEMU computer emulator. Description Qemu Launcher is meant to provide a GUI to the QEMU command line so that it is more accessible from the desktop. It includes the following features: * Creating and saving multiple VM configurations; * Disk image creation from the GUI using 'qemu-img'; * Configurations stored in users home directory; * Disk images can be stored anywhere; * GUI options to allow control of *most* QEMU command line options. Qemu Launcher also supports launching Qemu configs from the command line. Just give the name of the config as the first argument. Use quotes if the name has spaces or other special characters: qemu-launcher 'My Config Name' Download Qemu Launcher is being developed on the Gna! Project at: https://gna.org/projects/qemulaunch Latest source code is available on the SVN repository: svn co svn://svn.gna.org/svn/qemulaunch/trunk qemulaunch Authors Originally written by: Erik Meitner Currently developed by: Linas Žvirblis <0x0007@gmail.com> License Qemu Launcher is licensed under the GPL v2 or later. Additional Information Some additional information can be found on Erik's site at: http://projects.wanderings.us/qemu_launcher qemu-launcher-1.7.4/INSTALL0000644000175000017500000000207010632602574014324 0ustar linaslinasSoftware Requirements Before you will be able to run Qemu Launcher, you must make sure that you have the following software already installed on your system: Perl - 5.8.8 Perl modules: Gtk2 - 1.121 Gtk2::GladeXML - 1.005 Locale::gettext - 1.05 QEMU - 0.8.1 Needed at build time: gzip xmllint from libxml2 This list contains last tested versions. Earlier or later versions may or may not work. QEMU 0.7.x is not supported! Installing To install Qemu Launcher, become root, and run the following command from inside the source directory: make install This will install all necessary files under '/usr/local' in appropriate directories. To uninstall it afterwards, run the following command the same way you did during install: make uninstall To remove temporary files that were generated during install, run the following command: make clean Running Locally If you do not want to install Qemu Launcher, you can run it directly from the source directory like this: perl qemu-launcher.pl qemu-launcher-1.7.4/qemu-launcher.10000644000175000017500000000123010632602574016120 0ustar linaslinas.\" .\" .TH "qemu-launcher" "1" "2006-07-31" .SH "NAME" .B qemu\-launcher \- Graphical front-end for the QEMU computer emulator. .SH "SYNOPSIS" .B qemu\-launcher [configuration name] .SH "DESCRIPTION" .B qemu\-launcher provides a graphical interface to QEMU and adds the ability to create, save, and recall configurations of numerous virtual machines. Running .B qemu\-launcher without arguments will present the graphical interface. The name of a configuration may be specified as the first command line argument to directly launch QEMU with those settings, bypassing the main interface. .SH "SEE ALSO" .BR qemu (1) .SH "AUTHORS" Erik Meitner, Linas Zvirblis qemu-launcher-1.7.4/icons/0000755000175000017500000000000010632603112014374 5ustar linaslinasqemu-launcher-1.7.4/icons/qemu-launcher-32x32.xpm0000644000175000017500000001320310632602574020461 0ustar linaslinas/* XPM */ static char * qemu_launcher_32x32_xpm[] = { "32 32 220 2", " c None", ". c #12170E", "+ c #131A17", "@ c #292F26", "# c #323E34", "$ c #274C28", "% c #38403C", "& c #344434", "* c #394233", "= c #374339", "- c #3D433A", "; c #3A463B", "> c #2F4E30", ", c #3A4939", "' c #3A4A3A", ") c #2B552A", "! c #325133", "~ c #3B4B3B", "{ c #394D37", "] c #3C4C3C", "^ c #3A4E37", "/ c #2D572C", "( c #414B3C", "_ c #3B4F38", ": c #37523A", "< c #404C42", "[ c #3E4E3D", "} c #3D513A", "| c #305A2E", "1 c #365637", "2 c #2E5D2B", "3 c #3E533C", "4 c #3A553D", "5 c #3A563D", "6 c #335C31", "7 c #385839", "8 c #425342", "9 c #3E5739", "0 c #315E37", "a c #435443", "b c #385C37", "c c #32612F", "d c #42563F", "e c #3D5940", "f c #475349", "g c #455545", "h c #405845", "i c #3E5A41", "j c #3A5E39", "k c #465645", "l c #2B6A2F", "m c #415C44", "n c #4A564C", "o c #485847", "p c #3C613C", "q c #4B574C", "r c #425D45", "s c #475B44", "t c #4A5A49", "u c #465D4B", "v c #485D46", "w c #4D594E", "x c #4B5B4A", "y c #495E47", "z c #4E5A4F", "A c #4C5C4B", "B c #40653F", "C c #4A5F47", "D c #545950", "E c #35712F", "F c #4C6149", "G c #565B52", "H c #48644B", "I c #4D624A", "J c #446943", "K c #49654C", "L c #4E634B", "M c #486848", "N c #4F644C", "O c #466B45", "P c #496A4A", "Q c #37792F", "R c #58605C", "S c #4D6950", "T c #4F6B51", "U c #4E6F4F", "V c #4A7547", "W c #4E744D", "X c #517252", "Y c #50764F", "Z c #537453", "` c #4C7C47", " . c #537952", ".. c #666F6A", "+. c #696F65", "@. c #567C54", "#. c #4D854E", "$. c #6B7168", "%. c #4A884A", "&. c #5C7E5D", "*. c #6C7570", "=. c #3C9742", "-. c #727471", ";. c #71776E", ">. c #6F7873", ",. c #618362", "'. c #707974", "). c #747A71", "!. c #499A45", "~. c #549254", "{. c #738074", "]. c #7A7C79", "^. c #7B7D7A", "/. c #45A43F", "(. c #599859", "_. c #4FA04B", ":. c #7A837E", "<. c #7D8379", "[. c #5C9B5B", "}. c #67956B", "|. c #68976C", "1. c #82887E", "2. c #808984", "3. c #828B86", "4. c #878986", "5. c #6E9D72", "6. c #48B849", "7. c #8A8C89", "8. c #729E6D", "9. c #72A36B", "0. c #6EA76E", "a. c #77A17D", "b. c #73AD73", "c. c #909994", "d. c #6EB36B", "e. c #67BB69", "f. c #84AB81", "g. c #84B17F", "h. c #7CB67C", "i. c #68C967", "j. c #57D85D", "k. c #67D563", "l. c #84C381", "m. c #61DF5C", "n. c #76D075", "o. c #84C97F", "p. c #65DE6A", "q. c #8BC68A", "r. c #77D775", "s. c #7FD380", "t. c #93C995", "u. c #97CA90", "v. c #90D18D", "w. c #96CC98", "x. c #7FDF7C", "y. c #63F365", "z. c #70EC69", "A. c #6AF16C", "B. c #74ED78", "C. c #6BFA6C", "D. c #7DEE80", "E. c #68FF68", "F. c #93E194", "G. c #6DFC6E", "H. c #87EE82", "I. c #70FF70", "J. c #71FF71", "K. c #89F084", "L. c #91EC8F", "M. c #78FF78", "N. c #79FF79", "O. c #9BEA9D", "P. c #7FFE7F", "Q. c #8EF394", "R. c #80FF80", "S. c #81FF81", "T. c #A4EA9E", "U. c #AAE6A9", "V. c #9FEEA0", "W. c #87FF88", "X. c #8AFF82", "Y. c #88FF89", "Z. c #8DFE8F", "`. c #8EFF90", " + c #91FF89", ".+ c #AEEAAD", "++ c #8FFF91", "@+ c #ACEEA9", "#+ c #B0ECAF", "$+ c #94FF98", "%+ c #98FF91", "&+ c #96FF99", "*+ c #B4EBB5", "=+ c #A6F6A7", "-+ c #9BFFA0", ";+ c #9EFF99", ">+ c #9CFFA1", ",+ c #A1FFA7", "'+ c #A4FFA1", ")+ c #A2FFA8", "!+ c #A8FEA7", "~+ c #BBF2BC", "{+ c #AAFFA8", "]+ c #ABFFA9", "^+ c #AEFEAF", "/+ c #B4F9BA", "(+ c #AFFFB0", "_+ c #B0FFB1", ":+ c #B7FFB1", "<+ c #B5FFB7", "[+ c #B6FFB8", "}+ c #BCFDB8", "|+ c #BFFBBD", "1+ c #C0FCBE", "2+ c #BDFFB9", "3+ c #BBFFC0", "4+ c #BEFFBA", "5+ c #C2FEC0", "6+ c #C3FFC1", "7+ c #C7FEC8", " >.^ 1 0 6 | > $. ", " n O s.&+`.Y.S.N.J.j.E 4 ", " T @+(+{+'+&+`.Y.S.N.N.J.y.l {. ", " ;.a.7+5+<+(+{+o.V ` n.Y.S.N.J.E./.o ", " ).g.3+5+6+6+.+3 ^. '.j D.S.N.J.J.6.t ", " |.<+2+2+5+~+= ^ K.Y.S.N.J.=.1. ", " e (+(+<+<+2+C 7 `.Y.S.N.J.) ", " D F.{+(+(+:+u... 3.d.%+ +X.S.p.t ", " r (+{+{+{+(+i 5 -+&+`.Y.S.c ", " ].q.:+(+(+{+=+f q O.'+&+`.Y.i.:. ", " < }+<+<+(+(+9. 8.{+'+;+&+Z.^ ", " k 5+2+2+<+:+P K :+(+,+-+&+b ", " N 6+5+3+2+<+s x 3+<+(+{+'+B ", " Z 5+7+6+5+2+k g 7+5+2+(+{+W ", " @.<+2+6+6+5+g a 5+6+6+2+<+ . ", " J {+(+2+5+7+t h 2+5+6+7+5+S ", " p '+{+(+<+3+I s <+2+3+5+6+F ", " : &+-+,+{+:+,. X :+<+2+2+5+8 ", " w H.%+;+'+{+v.-. 4.l.(+(+<+<+#+D ", " %.Y.`.&+-+,+, + u C L H # ] {+{+(+(+:+}. ", " ! S.Y.`.&+;+Y R t.7+6+5+w.G U (+{+{+{+^+8 ", " _.S.X. +%+Q., & /+6+6+5+&.@ @+:+(+(+{+0. ", " m z.N.S.Y.`.(.2. M 2+5+7+1+f.2+<+<+(+T., ", " / C.N.S.Y.`.#.<. +.h.<+3+6+6+5+3+2+<+} ", " 2 J.J.N.S.Y.e.9 ( . =+:+2+5+6+5+|+C ", " $ m.J.N.S.Y.`.&+;+'+{+(+<+3+*+, ", " 3 Q A.N.N.S.Y.`.&+'+{+(+<+U.- ", " _ 2 !.k.B.D.r.(.L.'+{+(+5.7. ", " '.A z *. ! ;+'+{+(+d ", " c.~.&+-+,+V.; ", " [ x.%+;+'+b.'. ", " * , , , ( % "}; qemu-launcher-1.7.4/icons/qemu-launcher-16x16.png0000644000175000017500000000117210632602574020447 0ustar linaslinasPNG  IHDRaAIDAT8Ka/"*-йill9m"ћ*5Z:DEsC$t<%" :ۥe2)̵FLf^?tإ?>%wDrs}sP2N|X%Mٴ>t8oI^ᣇQGl'N$YKBNyM1?/)q@DMN1m image/svg+xml Qemu Launcher 2006-06-11 Linas Žvirblis qemu-launcher-1.7.4/icons/qemu-launcher-16x16.xpm0000644000175000017500000000510310632602574020465 0ustar linaslinas/* XPM */ static char * qemu_launcher_16x16_xpm[] = { "16 16 124 2", " c None", ". c #486048", "+ c #70A671", "@ c #5FAC62", "# c #57AD56", "$ c #58A65A", "% c #386336", "& c #84AE87", "* c #B4FAB4", "= c #AAFFA8", "- c #7CCF7C", "; c #73D272", "> c #7FFF7F", ", c #70FC70", "' c #53A352", ") c #85B085", "! c #BEFFBC", "~ c #C1FCC0", "{ c #618061", "] c #508950", "^ c #83FB82", "/ c #77FF77", "( c #50AA51", "_ c #618661", ": c #AEFFAE", "< c #B4FFB4", "[ c #81A67E", "} c #6EA56E", "| c #8CFF89", "1 c #7DFF7B", "2 c #49844A", "3 c #8DC88C", "4 c #ACFFAC", "5 c #AAFDAA", "6 c #425645", "7 c #425644", "8 c #9CFA9E", "9 c #8EFF90", "0 c #69CA68", "a c #435144", "b c #BCFEBA", "c c #B6FFB6", "d c #88C386", "e c #87C084", "f c #A4FFA4", "g c #95FF98", "h c #395537", "i c #516C50", "j c #C4FEC2", "k c #BFFFBE", "l c #80AC7E", "m c #84AB86", "n c #B9FFB8", "o c #476C46", "p c #4D724C", "q c #B3FFB2", "r c #C1FFBF", "s c #86AB86", "t c #80AA80", "u c #C3FFC1", "v c #BFFEBE", "w c #507151", "x c #3A5A3B", "y c #A0FFA0", "z c #ACFFAE", "A c #88B987", "B c #81B380", "C c #BAFFBA", "D c #C1FEBE", "E c #475A46", "F c #7CDD7A", "G c #9AFF99", "H c #9EF49F", "I c #565E55", "J c #485E49", "K c #4B644B", "L c #626A61", "M c #A2F0A0", "N c #B0FFB2", "O c #A1E0A0", "P c #56A555", "Q c #88FF87", "R c #97FF93", "S c #5D915F", "T c #90C193", "U c #82A982", "V c #61845F", "W c #B0FFAE", "X c #ABFFAA", "Y c #75A875", "Z c #60CF5E", "` c #81FF81", " . c #7FE580", ".. c #6E866E", "+. c #586C56", "@. c #ACECAB", "#. c #C1FEC2", "$. c #B2EAAF", "%. c #B8FFBA", "&. c #91CE90", "*. c #5ACA5A", "=. c #79FF79", "-. c #7EEE7F", ";. c #69A868", ">. c #7EC37C", ",. c #B3FFB0", "'. c #BDFFBE", "). c #9CCB9B", "!. c #499346", "~. c #5ABD58", "{. c #79F079", "]. c #86F188", "^. c #8EE08C", "/. c #81B181", "(. c #5E6A60", "_. c #5D6860", ":. c #617564", "<. c #8BE48A", "[. c #A5FFA8", "}. c #5E835E", "|. c #527A4F", "1. c #6AA467", "2. c #649062", "3. c #545C58", " . + @ # $ % ", " & * = - ; > , ' ", " ) ! ~ { ] ^ / ( ", " _ : < [ } | 1 2 ", " 3 4 5 6 7 8 9 0 ", " a b c d e f g h ", " i j k l m n = o ", " p q r s t u v w ", " x y z A B C D E ", " F G H I J K L M N O ", " P Q R S T u U V W X Y ", " Z ` ...+.@.#.$.%.&. ", " *.=.-.;.>.,.'.). ", " !.~.{.].^.4 /. ", " (._.:.<.[.}. ", " |.1.2.3. "}; qemu-launcher-1.7.4/icons/qemu-launcher-48x48.png0000644000175000017500000000616210632602574020465 0ustar linaslinasPNG  IHDR00W 9IDAThY PS>CB& TRb*A+OZ@%n9m4EfQyHHHX٧f&ěofG vrwUwu~°yH<ֵl}p/;.Ŏd.$-c5>hy @ٜ@/[BGL s]]ݱ}m}qWZg훷/EhvEqA3 }T]]t)yX茶6/ zzAҬ~`ׯVTTk?hFe`MewGڄmo ILX}Krbir/$I ܁³Ř q8h%P#lOOٳ{2\9X7zyN -f-EnJe,r)7Wq熇 BJ2L`yQ?Η}/?qi$YA%R>Rn\Y/IvR( ͗ND*fRڈ.APf~uyORZauHrF 39(-FVQZw>~]#I"u:]Ĉ@=u[/Q,O%T]Cxy= k /N:hhHqW nP@j[gRp$Y_K0%b- [ (N{& >eofYT(nAx cYcʅm][RYL?6*nYP&MkV*{_WV:Az<[rٜLfn才nڷ̯2 {!$vZc:Re-lv.'WZ3PH4bIi@0u箙%cȭQʕȄHRJF iIƒWpIIwGEFF6g EOdǵ th4 :!!wDKJqxsiVY]GEa X/_7OYj2lWBvK&=-^i[ {xXaSHA94;xSȪ{wX4k[Eʗ.Y\υSs%zp߾wvZ[K Gp'O iᤍn]/:XTu?]ix\uͲJwM#&y_ʜsrz6up\b3{`CUVVCb'6nRX:LM~驹Ԉ%Xwh2޿y/3l=:_}ڵdTv)Wk8>]ԬoF4X8yXՕP.>iĚcfi5W܏M&Nv b.") tD[yzzJgVKpJŦX1IJZ z@&QƢFp6薣ZgQ!H`U [>(8uuJ֔zTl8tٵg[nV48Jtj4?@(XappSzK|_0E`pXtw3m>Sje|A*8<ǍܧMAXH+..755T}'Zp`ujF_ N]ɽ2lBO 2E 0o`hW~Gew +Ԕrs./\ԟ׋_k4B/Y%n)LSͫS|Oުϫh@94 N IENDB`qemu-launcher-1.7.4/Changelog0000644000175000017500000000512510632602574015111 0ustar linaslinasSat, 09 Jun 2007 14:10:14 +0300 Linas Žvirblis <0x0007@gmail.com> * Version 1.7.4; * Use QCOW2 as default image format; * Provide a default entry in path to 'qemuctl'. Tue, 26 Dec 2006 16:24:11 +0200 Linas Žvirblis <0x0007@gmail.com> * Version 1.7.3; * Do not call GTK+ functions in non-interactive mode; * Only enable accelerator options if target arch is x86(-64). Sat, 4 Nov 2006 18:55:58 +0200 Linas Žvirblis <0x0007@gmail.com> * Version 1.7.2; * Blanks are no longer accepted as valid paths to emulator binaries; * Log button state is now correctly reset on VM change; * Switched to Glade 3; * Minor GUI improvements. Fri, 29 Sep 2006 21:47:02 +0300 Linas Žvirblis <0x0007@gmail.com> * Version 1.7.1; * Initial support for non-x86 targets: * ARM, little endian (arm), * ARM, big endian (armeb), * PowerPC, 32-bit (ppc), * PowerPC, 64-bit (ppc64), * SPARC, 32-bit (sparc), * SPARC, 64-bit (sparc64), * MIPS, big endian (mips), * MIPS, little endian (mipsel). Mon, 31 Jul 2006 18:32:59 +0300 Linas Žvirblis <0x0007@gmail.com> * Version 1.7.0; * Minimal required version of QEMU is 0.8.1; * Added support for these QEMU options: * x86 and x86-64 PC emulation, * SMP system emulation, * advanced network options, * 8 network interface cards, * accelerator kernel module; * GNOME libraries not used anymore; * Does not ship Debian packaging files anymore; * i18n support; * Cleaner interface; * Installable anywhere; * New icon; * Many other fixes and modifications. Mon, 14 Nov 2005 19:14:00 -0600 Erik Meitner * Version 1.5.1; * Changes to Makefile and Debian package to correct some problems: * Man page was not put in right place by Makefile, * Debian packaging files were a bit sloppy; * Added .desktop icon for fd.o compliant systems. Sun, 13 Nov 2005 22:39:00 -0600 Erik Meitner * Version 1.5; * Fixed 'variable not allowed to be undef where GtkTreeIter is wanted' error; * Does not use keyboard option(-k) unless user chooses other than "Default" layout. (Will no longer force "en-us" on people); * Add monitor(-monitor) and serial(-serial) redirection options. Parallel(-parallel) I left out because I am unsure of the possible arguments. Fri, 11 Nov 2005 11:29:00 -0600 Erik Meitner * Version 1.4; * Fix obsolete '-keyboard' option; * Add input for path to qemu-img; * Separate changelog for Debian package and application See debian/changelog for older entries; * Update docs. qemu-launcher-1.7.4/COPYING0000644000175000017500000004310310632602574014330 0ustar linaslinas GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. qemu-launcher-1.7.4/Makefile0000644000175000017500000000607310632602574014742 0ustar linaslinas# Shell used for executing scripts SHELL = /bin/sh # Intall things to the following directories PREFIX = /usr/local MANDIR = $(PREFIX)/share/man/man1 BINDIR = $(PREFIX)/bin SHAREDIR = $(PREFIX)/share/qemu-launcher PIXMAPSDIR = $(PREFIX)/share/pixmaps ICONSDIR = $(PREFIX)/share/icons/hicolor DOCSDIR = $(PREFIX)/share/doc/qemu-launcher LOCALEDIR = $(PREFIX)/share/locale APPLICATIONSDIR = $(PREFIX)/share/applications # Files to be installed SOURCEFILE = qemu-launcher.pl EXECUTABLE = qemu-launcher MENUFILE = qemu-launcher.desktop GLADEXML = glade/qemulauncher.glade MANPAGE = qemu-launcher.1 DOCS = README TODO POFILES = lt.po .PHONY: clean targets targets: executable gladexml executable: cp -f $(SOURCEFILE) $(EXECUTABLE) perl -pi -e 's#_PREFIX_#$(PREFIX)#' $(EXECUTABLE) touch $@ gladexml: mv -f $(GLADEXML) $(GLADEXML).orig xmllint --noblanks --output $(GLADEXML) $(GLADEXML).orig touch $@ install: targets install -d $(DESTDIR)$(BINDIR) install -m755 $(EXECUTABLE) $(DESTDIR)$(BINDIR) install -d $(DESTDIR)$(SHAREDIR) install -m644 icons/qemu-launcher-48x48.png $(DESTDIR)$(SHAREDIR)/qemulauncher.png install -m644 icons/qemu-launcher-16x16.png $(DESTDIR)$(SHAREDIR)/window-icon.png install -m644 $(GLADEXML) $(DESTDIR)$(SHAREDIR) install -d $(DESTDIR)$(DOCSDIR) install -m644 $(DOCS) $(DESTDIR)$(DOCSDIR) install -d $(DESTDIR)$(MANDIR) install -m644 $(MANPAGE) $(DESTDIR)$(MANDIR) gzip --best $(DESTDIR)$(MANDIR)/$(MANPAGE) install -d $(DESTDIR)$(APPLICATIONSDIR) install -m644 $(MENUFILE) $(DESTDIR)$(APPLICATIONSDIR) install -d $(DESTDIR)$(PIXMAPSDIR) install -m644 icons/qemu-launcher-16x16.xpm $(DESTDIR)$(PIXMAPSDIR) install -m644 icons/qemu-launcher-32x32.xpm $(DESTDIR)$(PIXMAPSDIR) install -d $(DESTDIR)$(ICONSDIR)/scalable/apps install -m644 icons/qemu-launcher.svg $(DESTDIR)$(ICONSDIR)/scalable/apps/qemu-launcher.svg install -d $(DESTDIR)$(ICONSDIR)/16x16/apps install -m644 icons/qemu-launcher-16x16.png $(DESTDIR)$(ICONSDIR)/16x16/apps/qemu-launcher.png install -d $(DESTDIR)$(ICONSDIR)/48x48/apps install -m644 icons/qemu-launcher-48x48.png $(DESTDIR)$(ICONSDIR)/48x48/apps/qemu-launcher.png for POFILE in $(POFILES) ;\ do \ POBASE=`basename $$POFILE .po` ;\ install -d $(DESTDIR)$(LOCALEDIR)/$$POBASE/LC_MESSAGES ;\ msgfmt -c -o $(DESTDIR)$(LOCALEDIR)/$$POBASE/LC_MESSAGES/qemu-launcher.mo po/$$POFILE ;\ done uninstall: rm -f $(DESTDIR)$(BINDIR)/$(EXECUTABLE) rm -f $(DESTDIR)$(APPLICATIONSDIR)/$(MENUFILE) rm -f $(DESTDIR)$(MANDIR)/$(MANPAGE).gz rm -f $(DESTDIR)$(PIXMAPSDIR)/qemu-launcher-16x16.xpm rm -f $(DESTDIR)$(PIXMAPSDIR)/qemu-launcher-32x32.xpm rm -f $(DESTDIR)$(ICONSDIR)/scalable/apps/qemu-launcher.svg rm -f $(DESTDIR)$(ICONSDIR)/16x16/apps/qemu-launcher.png rm -f $(DESTDIR)$(ICONSDIR)/48x48/apps/qemu-launcher.png rm -rf $(DESTDIR)$(SHAREDIR) rm -rf $(DESTDIR)$(DOCSDIR) for POFILE in $(POFILES) ;\ do \ POBASE=`basename $$POFILE .po` ;\ rm -f $(DESTDIR)$(LOCALEDIR)/$$POBASE/LC_MESSAGES/qemu-launcher.mo ;\ done clean: rm -f executable rm -f gladexml rm -f $(EXECUTABLE) mv -f $(GLADEXML).orig $(GLADEXML) qemu-launcher-1.7.4/TODO0000644000175000017500000000036510632602574013770 0ustar linaslinasPriority: High: * A new simplified interface. * Support for USB devices. Medium: * Better integration with Qemuctl. * Eliminate useless reads/writes to disk. Low: * Split the application into components. Maybe: * Win32 port. qemu-launcher-1.7.4/glade/0000755000175000017500000000000010632603112014335 5ustar linaslinasqemu-launcher-1.7.4/glade/window-icon.png0000777000175000017500000000000010632603112024662 2../icons/qemu-launcher-16x16.pngustar linaslinasqemu-launcher-1.7.4/glade/qemulauncher.png0000777000175000017500000000000010632603112025130 2../icons/qemu-launcher-48x48.pngustar linaslinasqemu-launcher-1.7.4/glade/qemulauncher.glade0000644000175000017500000124600610632602574020050 0ustar linaslinas True Qemu Launcher window-icon.png True True True True 5 4 True 2 2 4 True Name for this virtual machine configuration. True True 6 1 2 GTK_FILL True True Description of this configuration. May be left blank. 6 1 2 1 2 GTK_FILL True 0 Configuration notes: 1 2 GTK_FILL GTK_FILL True 0 Configuration name: GTK_FILL GTK_FILL False 1 True True True 5 True True Write to temporary files instead of to disk images, unless you instruct the emulator to do so by pressing 'Ctrl+a s'. Snapshot mode True True False True True Use CD-ROM instead of hard disk 2. Use CD-ROM True True False 1 True False 6 2 True 4 True 0 Boot disk: False True Boot on floppy, hard disk, or CD-ROM. True 1 False 3 True False 6 4 True 3 3 4 True False True gtk-open True 2 3 2 3 GTK_FILL True True gtk-open True 2 3 1 2 GTK_FILL True True gtk-open True 2 3 GTK_FILL True False True Disk image or device file for CD-ROM. 6 1 2 2 3 True True Disk image or device file for second floppy disk. 6 1 2 1 2 True True Disk image or device file for first floppy disk. 6 1 2 True 0 CD-ROM: 2 3 GTK_FILL GTK_FILL True 0 Floppy B: 1 2 GTK_FILL GTK_FILL True 0 Floppy A: GTK_FILL GTK_FILL False 5 True False 6 6 True 4 4 4 True True gtk-open True 2 3 1 2 GTK_FILL True True Disk image or device file for fourth hard disk. 6 1 2 3 4 GTK_FILL True True Disk image or device file for third hard disk. 6 1 2 2 3 GTK_FILL True True Disk image or device file for second hard disk. 6 1 2 1 2 GTK_FILL True True Disk image or device file for first hard disk. 6 1 2 True True gtk-open True 2 3 3 4 GTK_FILL True True gtk-open True 2 3 2 3 GTK_FILL True True gtk-open True 2 3 GTK_FILL True True gtk-new True 3 4 3 4 GTK_FILL True True gtk-new True 3 4 2 3 GTK_FILL True True gtk-new True 3 4 1 2 GTK_FILL True True gtk-new True 3 4 GTK_FILL True 0 Hard disk 3: 3 4 GTK_FILL GTK_FILL True 0 Hard disk 2: 2 3 GTK_FILL GTK_FILL True 0 Hard disk 1: 1 2 GTK_FILL GTK_FILL True 0 Hard disk 0: GTK_FILL GTK_FILL False 7 True False 6 8 True 4 True 0 RAM (MB): False True True Amount of RAM in megabytes. 128 1 65536 1 16 16 1 True True False False 1 False 9 False True Disks and memory tab False False True 5 True True Boot an external Linux kernel image directly. Boot Linux kernel directly True True False True False 6 1 True 3 3 4 True False True Path to initial RAM disk image. 6 1 2 1 2 True False True gtk-open True 2 3 1 2 GTK_FILL True False True gtk-open True 2 3 GTK_FILL True False True Parameters passed to a kernel at boot time. 6 1 3 2 3 GTK_FILL True False True Path to Linux kernel image. 6 1 2 True 0 Kernel image: GTK_FILL GTK_FILL True 0 Kernel command line: 2 3 GTK_FILL GTK_FILL True 0 Initial RAM disk: 1 2 GTK_FILL GTK_FILL False 2 1 False True Linux boot tab 1 False False True 5 True 4 True 0 Number of network interface cards: False True True Number of network interface cards to emulate. Set to zero to disable networking. 1 0 8 1 1 1 1 True True False 1 False True False 6 1 True True True 5 True True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_ETCHED_IN True True True False True True True True Add redirection. gtk-add True False False True True True Remove selected redirection. gtk-remove True False False 1 True True True Write current values to selected redirection. gtk-apply True False False 2 False 2 1 True 0 True 0 0 12 6 True 4 True True True TCP protocol. TCP True True False False True True UDP protocol. UDP True True tcpprotoradiobutton False False 1 False True 0 port False False 1 True True Port on a host machine that will be redirected to a virtual machine. 1 1 65535 1 10 10 1 True True False False 2 True 0 to guest IP False False 3 True True IP address of a virtual machine. 6 4 True 0 port False False 5 True True Port on a virtual machine that packets will be forwarded to. 1 1 65535 1 10 10 1 True True False 6 True 0 0 Redirect True label_item False 1 True False 6 2 True 4 True 0 Allow SMB access to: False False True True When using the user mode network stack, activate a built-in SMB server so that SMB-aware operating systems can access to the host files in the specified directory transparently. 6 1 True True gtk-open True False False 2 False 3 False True Redirections tab False False True 5 True Connect the network interface card to a network using this method. True False True False 6 1 True 2 4 4 True True Connect the network interface card to this virtual LAN. 0 0 1000 1 10 10 1 True True 3 4 1 2 GTK_FILL GTK_FILL True True Connect to or listen on this port. 1 1 65535 1 10 10 1 True True 3 4 GTK_FILL GTK_FILL True 0 VLAN: 2 3 1 2 GTK_FILL GTK_FILL True True MAC address of the network interface card (the format is aa:bb:cc:dd:ee:ff in hex). Leave blank to use default. 6 1 2 1 2 GTK_FILL True 0 MAC address: 1 2 GTK_FILL GTK_FILL True 0 port: 2 3 GTK_FILL GTK_FILL True True IP address of a virtual machine. 6 1 2 GTK_FILL True 0 IP address: GTK_FILL GTK_FILL False 2 True False 6 3 True 2 3 4 True True gtk-open True 2 3 GTK_FILL True True TUN/TAP interface configuration script. The default is '/etc/qemu-ifup'. 6 1 2 GTK_FILL True True A name for a TAP interface. If name is not provided, the OS automatically provides one. 6 1 3 1 2 GTK_FILL True 0 Name of network interface: 1 2 GTK_FILL GTK_FILL True 0 TUN/TAP configuration script: GTK_FILL GTK_FILL False 4 True False 6 5 True 4 True 0 File descriptor: False True True File descriptor of an already open TCP or UDP socket, or TUN/TAP interface. 0 0 1000 1 10 10 1 True True False 1 False 6 1 False True Card 0 tab 1 False False 5 True Connect the network interface card to a network using this method. True False True False 6 1 True 2 4 4 True True Connect the network interface card to this virtual LAN. 0 0 1000 1 10 10 1 True True 3 4 1 2 GTK_FILL GTK_FILL True True Connect to or listen on this port. 1 1 65535 1 10 10 1 True True 3 4 GTK_FILL GTK_FILL True 0 VLAN: 2 3 1 2 GTK_FILL GTK_FILL True True MAC address of the network interface card (the format is aa:bb:cc:dd:ee:ff in hex). Leave blank to use default. 6 1 2 1 2 GTK_FILL True 0 MAC address: 1 2 GTK_FILL GTK_FILL True 0 port: 2 3 GTK_FILL GTK_FILL True True IP address of a virtual machine. 6 1 2 GTK_FILL True 0 IP address: GTK_FILL GTK_FILL False 2 True False 6 3 True 2 3 4 True True TUN/TAP interface configuration script. The default is '/etc/qemu-ifup'. 6 1 2 GTK_FILL True True A name for a TAP interface. If name is not provided, the OS automatically provides one. 6 1 3 1 2 GTK_FILL True True gtk-open True 2 3 GTK_FILL True 0 Name of network interface: 1 2 GTK_FILL GTK_FILL True 0 TUN/TAP configuration script: GTK_FILL GTK_FILL False 4 True False 6 5 True 4 True 0 File descriptor: False True True File descriptor of an already open TCP or UDP socket, or TUN/TAP interface. 0 0 1000 1 10 10 1 True True False 1 False 6 2 False True Card 1 tab 2 False False 5 True Connect the network interface card to a network using this method. True False True False 6 1 True 2 4 4 True True Connect the network interface card to this virtual LAN. 0 0 1000 1 10 10 1 True True 3 4 1 2 GTK_FILL GTK_FILL True True Connect to or listen on this port. 1 1 65535 1 10 10 1 True True 3 4 GTK_FILL GTK_FILL True 0 VLAN: 2 3 1 2 GTK_FILL GTK_FILL True True MAC address of the network interface card (the format is aa:bb:cc:dd:ee:ff in hex). Leave blank to use default. 6 1 2 1 2 GTK_FILL True 0 MAC address: 1 2 GTK_FILL GTK_FILL True 0 port: 2 3 GTK_FILL GTK_FILL True True IP address of a virtual machine. 6 1 2 GTK_FILL True 0 IP address: GTK_FILL GTK_FILL False 2 True False 6 3 True 2 3 4 True True TUN/TAP interface configuration script. The default is '/etc/qemu-ifup'. 6 1 2 GTK_FILL True True A name for a TAP interface. If name is not provided, the OS automatically provides one. 6 1 3 1 2 GTK_FILL True True gtk-open True 2 3 GTK_FILL True 0 Name of network interface: 1 2 GTK_FILL GTK_FILL True 0 TUN/TAP configuration script: GTK_FILL GTK_FILL False 4 True False 6 5 True 4 True 0 File descriptor: False True True File descriptor of an already open TCP or UDP socket, or TUN/TAP interface. 0 0 1000 1 10 10 1 True True False 1 False 6 3 False True Card 2 tab 3 False False 5 True Connect the network interface card to a network using this method. True False True False 6 1 True 2 4 4 True True Connect the network interface card to this virtual LAN. 0 0 1000 1 10 10 1 True True 3 4 1 2 GTK_FILL GTK_FILL True True Connect to or listen on this port. 1 1 65535 1 10 10 1 True True 3 4 GTK_FILL GTK_FILL True 0 VLAN: 2 3 1 2 GTK_FILL GTK_FILL True True MAC address of the network interface card (the format is aa:bb:cc:dd:ee:ff in hex). Leave blank to use default. 6 1 2 1 2 GTK_FILL True 0 MAC address: 1 2 GTK_FILL GTK_FILL True 0 port: 2 3 GTK_FILL GTK_FILL True True IP address of a virtual machine. 6 1 2 GTK_FILL True 0 IP address: GTK_FILL GTK_FILL False 2 True False 6 3 True 2 3 4 True True TUN/TAP interface configuration script. The default is '/etc/qemu-ifup'. 6 1 2 GTK_FILL True True A name for a TAP interface. If name is not provided, the OS automatically provides one. 6 1 3 1 2 GTK_FILL True True gtk-open True 2 3 GTK_FILL True 0 Name of network interface: 1 2 GTK_FILL GTK_FILL True 0 TUN/TAP configuration script: GTK_FILL GTK_FILL False 4 True False 6 5 True 4 True 0 File descriptor: False True True File descriptor of an already open TCP or UDP socket, or TUN/TAP interface. 0 0 1000 1 10 10 1 True True False 1 False 6 4 False True Card 3 tab 4 False False 5 True Connect the network interface card to a network using this method. True False True False 6 1 True 2 4 4 True True Connect the network interface card to this virtual LAN. 0 0 1000 1 10 10 1 True True 3 4 1 2 GTK_FILL GTK_FILL True True Connect to or listen on this port. 1 1 65535 1 10 10 1 True True 3 4 GTK_FILL GTK_FILL True 0 VLAN: 2 3 1 2 GTK_FILL GTK_FILL True True MAC address of the network interface card (the format is aa:bb:cc:dd:ee:ff in hex). Leave blank to use default. 6 1 2 1 2 GTK_FILL True 0 MAC address: 1 2 GTK_FILL GTK_FILL True 0 port: 2 3 GTK_FILL GTK_FILL True True IP address of a virtual machine. 6 1 2 GTK_FILL True 0 IP address: GTK_FILL GTK_FILL False 2 True False 6 3 True 2 3 4 True True TUN/TAP interface configuration script. The default is '/etc/qemu-ifup'. 6 1 2 GTK_FILL True True A name for a TAP interface. If name is not provided, the OS automatically provides one. 6 1 3 1 2 GTK_FILL True True gtk-open True 2 3 GTK_FILL True 0 Name of network interface: 1 2 GTK_FILL GTK_FILL True 0 TUN/TAP configuration script: GTK_FILL GTK_FILL False 4 True False 6 5 True 4 True 0 File descriptor: False True True File descriptor of an already open TCP or UDP socket, or TUN/TAP interface. 0 0 1000 1 10 10 1 True True False 1 False 6 5 False True Card 4 tab 5 False False 5 True Connect the network interface card to a network using this method. True False True False 6 1 True 2 4 4 True True Connect the network interface card to this virtual LAN. 0 0 1000 1 10 10 1 True True 3 4 1 2 GTK_FILL GTK_FILL True True Connect to or listen on this port. 1 1 65535 1 10 10 1 True True 3 4 GTK_FILL GTK_FILL True 0 VLAN: 2 3 1 2 GTK_FILL GTK_FILL True True MAC address of the network interface card (the format is aa:bb:cc:dd:ee:ff in hex). Leave blank to use default. 6 1 2 1 2 GTK_FILL True 0 MAC address: 1 2 GTK_FILL GTK_FILL True 0 port: 2 3 GTK_FILL GTK_FILL True True IP address of a virtual machine. 6 1 2 GTK_FILL True 0 IP address: GTK_FILL GTK_FILL False 2 True False 6 3 True 2 3 4 True True TUN/TAP interface configuration script. The default is '/etc/qemu-ifup'. 6 1 2 GTK_FILL True True A name for a TAP interface. If name is not provided, the OS automatically provides one. 6 1 3 1 2 GTK_FILL True True gtk-open True 2 3 GTK_FILL True 0 Name of network interface: 1 2 GTK_FILL GTK_FILL True 0 TUN/TAP configuration script: GTK_FILL GTK_FILL False 4 True False 6 5 True 4 True 0 File descriptor: False True True File descriptor of an already open TCP or UDP socket, or TUN/TAP interface. 0 0 1000 1 10 10 1 True True False 1 False 6 6 False True Card 5 tab 6 False False 5 True Connect the network interface card to a network using this method. True False True False 6 1 True 2 4 4 True True Connect the network interface card to this virtual LAN. 0 0 1000 1 10 10 1 True True 3 4 1 2 GTK_FILL GTK_FILL True True Connect to or listen on this port. 1 1 65535 1 10 10 1 True True 3 4 GTK_FILL GTK_FILL True 0 VLAN: 2 3 1 2 GTK_FILL GTK_FILL True True MAC address of the network interface card (the format is aa:bb:cc:dd:ee:ff in hex). Leave blank to use default. 6 1 2 1 2 GTK_FILL True 0 MAC address: 1 2 GTK_FILL GTK_FILL True 0 port: 2 3 GTK_FILL GTK_FILL True True IP address of a virtual machine. 6 1 2 GTK_FILL True 0 IP address: GTK_FILL GTK_FILL False 2 True False 6 3 True 2 3 4 True True TUN/TAP interface configuration script. The default is '/etc/qemu-ifup'. 6 1 2 GTK_FILL True True A name for a TAP interface. If name is not provided, the OS automatically provides one. 6 1 3 1 2 GTK_FILL True True gtk-open True 2 3 GTK_FILL True 0 Name of network interface: 1 2 GTK_FILL GTK_FILL True 0 TUN/TAP configuration script: GTK_FILL GTK_FILL False 4 True False 6 5 True 4 True 0 File descriptor: False True True File descriptor of an already open TCP or UDP socket, or TUN/TAP interface. 0 0 1000 1 10 10 1 True True False 1 False 6 7 False True Card 6 tab 7 False False 5 True Connect the network interface card to a network using this method. True False True False 6 1 True 2 4 4 True True Connect the network interface card to this virtual LAN. 0 0 1000 1 10 10 1 True True 3 4 1 2 GTK_FILL GTK_FILL True True Connect to or listen on this port. 1 1 65535 1 10 10 1 True True 3 4 GTK_FILL GTK_FILL True 0 VLAN: 2 3 1 2 GTK_FILL GTK_FILL True True MAC address of the network interface card (the format is aa:bb:cc:dd:ee:ff in hex). Leave blank to use default. 6 1 2 1 2 GTK_FILL True 0 MAC address: 1 2 GTK_FILL GTK_FILL True 0 port: 2 3 GTK_FILL GTK_FILL True True IP address of a virtual machine. 6 1 2 GTK_FILL True 0 IP address: GTK_FILL GTK_FILL False 2 True False 6 3 True 2 3 4 True True TUN/TAP interface configuration script. The default is '/etc/qemu-ifup'. 6 1 2 GTK_FILL True True A name for a TAP interface. If name is not provided, the OS automatically provides one. 6 1 3 1 2 GTK_FILL True True gtk-open True 2 3 GTK_FILL True 0 Name of network interface: 1 2 GTK_FILL GTK_FILL True 0 TUN/TAP configuration script: GTK_FILL GTK_FILL False 4 True False 6 5 True 4 True 0 File descriptor: False True True File descriptor of an already open TCP or UDP socket, or TUN/TAP interface. 0 0 1000 1 10 10 1 True True False 1 False 6 8 False True Card 7 tab 8 False False 2 2 False True Network tab 2 False False True 5 True 4 True 0 System type: False True Hardware achitecture of a virtual machine. True 1 False True False 6 1 True True Set real time clock to local time, otherwise set to UTC time. This is needed to have correct date in operating systems that do not understand UTC time. Set clock to local time True True True False 2 True True Enable sound card emulation. It is disabled by default as it may cause problems with certain guest operating systems. Enable audio True True False 3 True True Disable graphical output of the emulator. The emulated serial port is redirected on the console. Disable graphical output True True False 4 True True Start emulator in full screen mode. Hit 'Ctrl+Alt+f' to return to window mode. Start in full screen mode True True False 5 True False 6 6 True 4 True 0 Number of CPUs: False True True Emulate a system with this number CPUs. On the PC target, SMP systems with up to 255 CPUs are supported. 1 1 255 1 10 10 1 True False 1 False False 7 True False 6 8 True 0 True 0 0 12 True True True Emulate a Cirrus Logic GD 5446 PCI VGA video card Cirrus Logic GD 5446 PCI VGA video card True True True False True True Emulate a standard VGA card with Bochs VBE extensions Standard VGA card with VESA Bochs extensions True True gfxpciradiobutton False 1 True Video card label_item False 9 True 0 True 0 0 12 True True False True Emulate a Creative Sound Blaster 16 sound card Creative Sound Blaster 16 sound card True True True False True False True Emulate a ENSONIQ AudioPCI ES1370 sound card ENSONIQ AudioPCI ES1370 sound card True True sndsbradiobutton False 1 True Sound card label_item False 10 True False 6 11 True 2 2 4 True Redirect virtual serial port to a host device. True 1 2 True Use specific keyboard layout language. This option is only needed where it is not easy to get raw PC keycodes (for example on Macs or with some X11 servers). True 1 2 1 2 True 0 Serial port: GTK_FILL GTK_FILL True 0 Keyboard layout: 1 2 GTK_FILL GTK_FILL False 12 3 False True Hardware tab 3 False False True 5 True 4 True 0 Process priority: False True True The 'nice' setting for the virtual machine process. Higher number means lower priority. 0 0 19 1 10 10 1 True GTK_UPDATE_IF_VALID False False 1 False True False 6 1 True True Open a panel for manipulating run time options of the emulator. Requires Qemuctl to be installed. Provide a control panel True True False 2 True True Do not start CPU at startup. You will need to enter 'c' in the monitor to start it. Start in stopped state True True False 3 True True Output log in '/tmp/qemu.log' file. Turn on logging True True False 4 True False 6 5 True 0 True 5 3 True False True Show generated host assembly code for each compiled TB. out__asm True True False True Show target assembly code for each compiled TB. in__asm True 1 True False True Show micro ops for each compiled TB (only usable if 'in_asm' is used). op True 2 True False True Show micro ops after optimization for each compiled TB. op__opt True 3 True False True Show interrupts and exceptions in short format. int True 4 True False True Show trace before each executed TB (lots of logs). exec True 5 True False True Show CPU state before bloc translation. cpu True 6 True False True Show protected mode far calls, returns, and exceptions. pcall True 7 True What to log True label_item False 6 True 0 True 0 0 12 True True True Do not use accelerator module. Everything will work as usual but will be slower. Disable True True False False True True Use accelerator module in standard mode. Makes no difference if the module is not available. Enable True True True acceloffradiobutton False False 1 True True Use accelerator module in full virtualization mode. It is the fastest, but does not work with all guest operating systems. Makes no difference if the module is not available. Full True True acceloffradiobutton False False 2 True 0 0 Acceleration True label_item False 7 True False 6 8 True 2 3 4 True True gtk-open True 2 3 GTK_FILL True True Start with a previously saved virtual machine state. 6 1 2 GTK_FILL True True Enter additional arguments here as they would be entered on the command line. 6 1 3 1 2 GTK_FILL True 0 Additional arguments: 1 2 GTK_FILL GTK_FILL True 0 Load state at startup: GTK_FILL GTK_FILL False 9 True False 6 10 True 4 True 0 Monitor device: False True Redirect monitor to a host device. The default device is 'vc' in graphical mode and 'stdio' in non graphical mode. True 1 False 11 4 False True Emulator tab 4 False False 2 True True GTK_BUTTONBOX_START True True True Exit application. gtk-quit True True 4 GTK_BUTTONBOX_END True True Save this configuration. gtk-save True True True Delete this configuration. gtk-delete True 1 True True True True Run with this configuration. True 0 0 0 0 True 2 True 0 0 gtk-media-play False False True 0 0 _Launch True False False 1 2 1 False GTK_PACK_END 2 False True Configurations tab False False True 5 5 True 5 3 4 True True Path to executable file of utility used for controling run time options. This is optional. 6 1 2 3 4 GTK_FILL True True Path to executable file used for disk image creation. 6 1 2 2 3 GTK_FILL True True Path to main executable file of the emulator. 6 1 2 1 2 GTK_FILL True True Default directory used for storing disk images, etc. 6 1 2 GTK_FILL True True Run this command before launching emulator. 6 1 3 4 5 GTK_FILL True True gtk-open True 2 3 3 4 GTK_FILL True True gtk-open True 2 3 2 3 GTK_FILL True True gtk-open True 2 3 1 2 GTK_FILL True True gtk-open True 2 3 GTK_FILL True 0 Pre-launch command: True 4 5 GTK_FILL GTK_FILL True 0 Path to 'qemuctl': 3 4 GTK_FILL GTK_FILL True 0 Path to 'qemu-img': True 2 3 GTK_FILL GTK_FILL True 0 Path to 'qemu': True 1 2 GTK_FILL GTK_FILL True 0 Data directory: True GTK_FILL GTK_FILL False 1 True 4 GTK_BUTTONBOX_END True True True Use this configuration but do not save to disk. gtk-apply True True True True Cancel changes. gtk-undo True 1 True True True Apply configuration and save to disk. gtk-save True 2 False GTK_PACK_END 1 1 False True Launcher settings tab 1 False False True True 0 15 qemulauncher.png False True 0 Placeholder True GTK_JUSTIFY_CENTER True False 1 2 False True About tab 2 False False Create disk image True GTK_WIN_POS_CENTER_ON_PARENT window-icon.png True 5 True 5 True True Native format. Supports optional AES encryption and zlib based compression. Create empty QCOW2 image True True True False True True This format has the advantage of being simple and easily exportable to all other emulators. Create empty raw image True True newcowradiobutton False 1 True True Create a new QCOW image from an existing raw disk image. Create QCOW2 image from a raw image True True newcowradiobutton False 2 True True Create a new QCOW image from a VMware version 3 and 4 compatible disk image. Create QCOW2 image from a VMware image True True newcowradiobutton False 3 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Create QCOW2 image form a QCOW image True True newcowradiobutton 4 True False 6 5 True 3 3 4 True True Location a new disk image will be created in. 1 2 2 3 GTK_FILL True False True Create a new disk image from this image. 1 2 GTK_FILL True True Name of a new disk image. 1 3 1 2 GTK_FILL True True gtk-open True 2 3 2 3 GTK_FILL True False True gtk-open True 2 3 GTK_FILL True 0 New image location: 2 3 GTK_FILL GTK_FILL True 0 New image name: 1 2 GTK_FILL GTK_FILL True 0 Original image: GTK_FILL GTK_FILL False 6 True False 6 7 True 4 True 0 New image size (MB): False True True Size of a new disk image in megabytes. 1000 1 1000000 1 10 100 1 True True False 1 False 8 True False 6 9 False 1 True 4 GTK_BUTTONBOX_END True True True Close this window. gtk-cancel True True True True Create and use this disk image. gtk-ok True 1 False False GTK_PACK_END 1 Question True GTK_WIN_POS_CENTER_ON_PARENT window-icon.png GDK_WINDOW_TYPE_HINT_DIALOG True True 4 5 True 0 0 gtk-dialog-question 6 False True Placeholder 1 False 2 True GTK_BUTTONBOX_END True True True gtk-cancel True -6 True True True gtk-ok True -5 1 False GTK_PACK_END Warning True GTK_WIN_POS_CENTER_ON_PARENT window-icon.png GDK_WINDOW_TYPE_HINT_DIALOG True True 4 5 True 0 0 gtk-dialog-warning 6 False True Placeholder 1 False 2 True GTK_BUTTONBOX_END True True True gtk-ok True -5 False GTK_PACK_END qemu-launcher-1.7.4/po/0000755000175000017500000000000010632603112013677 5ustar linaslinasqemu-launcher-1.7.4/po/lt.po0000644000175000017500000010507610632602574014702 0ustar linaslinas# Lithuanian translation of Qemu Launcher # Copyright (C) 2006, Linas Žvirblis <0x0007@gmail.com> # This file is distributed under the same license as the Qemu Launcher package. # Linas Žvirblis <0x0007@gmail.com>, 2006 - 2007. # # msgid "" msgstr "" "Project-Id-Version: Qemu Launcher 1.7.4\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-06-09 13:50+0300\n" "PO-Revision-Date: 2007-06-09 14:06+0300\n" "Last-Translator: Linas Žvirblis <0x0007@gmail.com>\n" "Language-Team: Lithuanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit" #: qemu-launcher.pl:46 glade/qemulauncher.glade:27 msgid "Qemu Launcher" msgstr "Qemu Paleidėjas" #: qemu-launcher.pl:52 msgid "Default settings" msgstr "Numatytosios nuostatos" #: qemu-launcher.pl:58 qemu-launcher.pl:514 qemu-launcher.pl:525 #: qemu-launcher.pl:583 qemu-launcher.pl:709 qemu-launcher.pl:719 #: qemu-launcher.pl:767 qemu-launcher.pl:2108 qemu-launcher.pl:2115 msgid "Default" msgstr "Numatytas" #: qemu-launcher.pl:60 msgid "These defaults can be modified and used as a base for new configs." msgstr "" "Šios nuostatos gali būti pakeistos ir naudojamos kaip šablonas naujoms " "konfigūracijoms." #: qemu-launcher.pl:230 #, perl-format msgid "Could not save configuration for %s." msgstr "Nepavyko išsaugoti konfigūracijos %s." #: qemu-launcher.pl:291 #, perl-format msgid "Could not read configuration for %s." msgstr "Nepavyko perskaityti konfigūracijos %s." #: qemu-launcher.pl:351 #, perl-format msgid "Delete '%s'?" msgstr "Ištrinti „%s“?" #: qemu-launcher.pl:366 #, perl-format msgid "Could not delete %s:" msgstr "Nepavyko ištrinti %s:" #: qemu-launcher.pl:798 msgid "Please enter a name for this configuration." msgstr "Prašau įvesti šios konfigūracijos pavadinimą." #: qemu-launcher.pl:849 #, perl-format msgid "Could not read configuration from %s" msgstr "Nepavyko perskaityti nuostatų iš %s" #: qemu-launcher.pl:908 #, perl-format msgid "Could not save configuration to %s" msgstr "Nepavyko išsaugoti nuostatų į %s" #: qemu-launcher.pl:944 msgid "Please enter a valid data directory." msgstr "Įveskite tinkamą duomenų katalogą." #: qemu-launcher.pl:945 qemu-launcher.pl:951 qemu-launcher.pl:962 #: qemu-launcher.pl:973 qemu-launcher.pl:984 msgid "Settings not applied." msgstr "Nuostatos nepritaikytos." #: qemu-launcher.pl:950 qemu-launcher.pl:961 qemu-launcher.pl:972 #: qemu-launcher.pl:983 #, perl-format msgid "%s does not exist." msgstr "%s neegzistuoja." #: qemu-launcher.pl:1365 msgid "Not a valid directory for 'New image location'." msgstr "Netinkama vieta naujam atvaizdui." #: qemu-launcher.pl:1371 msgid "Not a valid name for 'New image name'." msgstr "Netinkamas naujo atvaizdo pavadinimas." #: qemu-launcher.pl:1377 msgid "Not a valid image for 'Original image'." msgstr "Netinkamas originalus atvaizdas." #: qemu-launcher.pl:1426 msgid "An error occurred creating the disk image:" msgstr "Kuriant atvaizdą įvyko klaida:" #: qemu-launcher.pl:1473 #, perl-format msgid "No file specified for %s." msgstr "Nenurodytas failas įrenginiui %s." #: qemu-launcher.pl:1478 #, perl-format msgid "Not a valid file for %s." msgstr "Netinkamas failas įrenginiui %s." #: qemu-launcher.pl:1498 qemu-launcher.pl:1520 msgid "Select a File" msgstr "Pasirinkite failą" #: qemu-launcher.pl:1546 msgid "Select a Directory" msgstr "Pasirinkite katalogą" #: qemu-launcher.pl:1911 msgid "" "Some characters in the name are not valid.\n" " Use only letters, numbers, -, _, and space." msgstr "" "Kai kurie simboliai nėra tinkami.\n" " Naudokite tik raides, skaičius, -, _, ir tarpus." #: qemu-launcher.pl:2016 msgid "" "There was a problem reading the main configuration. Starting with defaults." msgstr "Skaitant pagrindines nuostatas įvyko klaida. Naudojamos numatytosios." #: qemu-launcher.pl:2037 #, perl-format msgid "A configuration named '%s' does not exist." msgstr "Konfigūracija pavadinimu „%s“ neegzistuoja." #: qemu-launcher.pl:2084 msgid "Floppy A" msgstr "Diskelis A" #: qemu-launcher.pl:2085 msgid "Hard disk 0" msgstr "Kietasis diskas 0" #: qemu-launcher.pl:2086 msgid "CD-ROM" msgstr "CD-ROM" #: qemu-launcher.pl:2093 msgid "PC, 32-bit (x86)" msgstr "PC, 32-ų bitų (x86)" #: qemu-launcher.pl:2094 msgid "PC, 64-bit (x86_64)" msgstr "PC, 64-ių bitų (x86-64)" #: qemu-launcher.pl:2095 msgid "ARM, little endian (arm)" msgstr "ARM, didėjantys baitai (arm)" #: qemu-launcher.pl:2096 msgid "ARM, big endian (armeb)" msgstr "ARM, mažėjantys baitai (armeb)" #: qemu-launcher.pl:2097 msgid "PowerPC, 32-bit (ppc)" msgstr "PowerPC, 32-ų bitų (ppc)" #: qemu-launcher.pl:2098 msgid "PowerPC, 64-bit (ppc64)" msgstr "PowerPC, 64-ių bitų (ppc64)" #: qemu-launcher.pl:2099 msgid "SPARC, 32-bit (sparc)" msgstr "SPARC, 32-ų bitų (sparc)" #: qemu-launcher.pl:2100 msgid "SPARC, 64-bit (sparc64)" msgstr "SPARC, 64-ių bitų (sparc64)" #: qemu-launcher.pl:2101 msgid "MIPS, big endian (mips)" msgstr "MIPS, mažėjantys baitai (mips)" #: qemu-launcher.pl:2102 msgid "MIPS, little endian (mipsel)" msgstr "MIPS, didėjantys baitai (mipsel)" #: qemu-launcher.pl:2130 msgid "Use the user mode network stack" msgstr "Naudoti naudotojo režimo tinklo steką" #: qemu-launcher.pl:2131 msgid "Open a TUN/TAP interface" msgstr "Atveri TUN/TAP sąsają" #: qemu-launcher.pl:2132 msgid "Use an already open TUN/TAP interface" msgstr "Naudoti jau atvirą TUN/TAP sąsają" #: qemu-launcher.pl:2133 msgid "Open a listening TCP socket" msgstr "Atverti besiklausančią TCP jungtį" #: qemu-launcher.pl:2134 msgid "Use an already open TCP socket" msgstr "Naudoti jau atvirą TCP jungtį" #: qemu-launcher.pl:2135 msgid "Connect to listening TCP socket" msgstr "Prisijungti prie besiklausančios TCP jungties" #: qemu-launcher.pl:2136 msgid "Create shared VLAN via UDP multicast socket" msgstr "Sukurti viešą VLAN per daugiaabonentinę UDP jungtį" #: qemu-launcher.pl:2137 msgid "Use an already open UDP multicast socket" msgstr "Naudoti jau atvirą daugiaabonentinę UDP jungtį" #: qemu-launcher.pl:2138 msgid "No connection" msgstr "Jokio prisijungimo" #: qemu-launcher.pl:2147 msgid "Protocol" msgstr "Protokolas" #: qemu-launcher.pl:2149 msgid "Host port" msgstr "Šeimininko prievadas" #: qemu-launcher.pl:2151 msgid "Guest IP" msgstr "Svečio IP" #: qemu-launcher.pl:2153 msgid "Guest port" msgstr "Svečio prievadas" #: qemu-launcher.pl:2166 qemu-launcher.pl:2168 msgid "Copyright (C)" msgstr "Kopijavimo teisės (C)" #: qemu-launcher.pl:2170 msgid "QEMU is a trademark of Fabrice Bellard" msgstr "QEMU yra Fabrice Bellard prekės ženklas" #: qemu-launcher.pl:2172 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version." msgstr "" "Ši programa yra laisva. Jūs galite ją platinti ir/arba modifikuoti " "remdamiesi Free Software Foundation paskelbtomis GNU Bendrosios Viešosios " "licencijos sąlygomis: 2 licencijos versija, arba (savo nuožiūra) bet kuria " "vėlesne versija." #: qemu-launcher.pl:2174 msgid "" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details." msgstr "" "Ši programa platinama su viltimi, kad ji bus naudinga, bet BE JOKIOS " "GARANTIJOS; be jokios numanomos PERKAMUMO ar TINKAMUMO KONKRETIEMS TIKSLAMS " "garantijos. Žiūrėkite GNU Bendrąją Viešąją licenciją norėdami sužinoti " "smulkmenas." #: qemu-launcher.pl:2392 msgid "" "Serial redirection cannot use 'stdio' at the same time as the monitor. " "Setting serial redirection to 'Default'." msgstr "" "Nuoseklaus prievado peradresavimas negali būti „stdio“ tuo pat metu kaip ir " "stebėjimo įrenginys. Nuoseklaus prievado peradresavimas nustatomas į " "numatytą." #: glade/qemulauncher.glade:50 msgid "Name for this virtual machine configuration." msgstr "Šios virtualios mašinos parinkties pavadinimas." #: glade/qemulauncher.glade:74 msgid "Description of this configuration. May be left blank." msgstr "Šios konfigūracijos apibūdinimas. Gali likti tuščias." #: glade/qemulauncher.glade:89 msgid "Configuration notes:" msgstr "Konfigūracijos pastabos:" #: glade/qemulauncher.glade:102 msgid "Configuration name:" msgstr "Konfigūracijos pavadinimas:" #: glade/qemulauncher.glade:127 msgid "" "Write to temporary files instead of to disk images, unless you instruct the " "emulator to do so by pressing 'Ctrl+a s'." msgstr "" "Rašyti į laikinus failus, one į diskų atvaizdus, nebent liepsite " "emuliatoriui tai padaryti paspausdami „Ctrl+a·s“." #: glade/qemulauncher.glade:128 msgid "Snapshot mode" msgstr "Kopijos režimas" #: glade/qemulauncher.glade:140 msgid "Use CD-ROM instead of hard disk 2." msgstr "Naudoti CD-ROM įrenginį vietoje kietojo disko 2." #: glade/qemulauncher.glade:141 msgid "Use CD-ROM" msgstr "Naudoti CD-ROM įrenginį" #: glade/qemulauncher.glade:168 msgid "Boot disk:" msgstr "Paleisties diskas:" #: glade/qemulauncher.glade:177 msgid "Boot on floppy, hard disk, or CD-ROM." msgstr "Paleisti iš diskelio, kietojo disko, ar CD-ROM įrenginio." #: glade/qemulauncher.glade:263 msgid "Disk image or device file for CD-ROM." msgstr "Disko atvaizdas arba įrenginio failas CD-ROM įrenginiui." #: glade/qemulauncher.glade:278 msgid "Disk image or device file for second floppy disk." msgstr "Disko atvaizdas arba įrenginio failas antram diskeliui." #: glade/qemulauncher.glade:293 msgid "Disk image or device file for first floppy disk." msgstr "Disko atvaizdas arba įrenginio failas pirmam diskeliui." #: glade/qemulauncher.glade:306 msgid "CD-ROM:" msgstr "CD-ROM:" #: glade/qemulauncher.glade:319 msgid "Floppy B:" msgstr "Diskelis B:" #: glade/qemulauncher.glade:332 msgid "Floppy A:" msgstr "Diskelis A:" #: glade/qemulauncher.glade:381 msgid "Disk image or device file for fourth hard disk." msgstr "Disko atvaizdas arba įrenginio failas ketvirtam kietajam diskui." #: glade/qemulauncher.glade:396 msgid "Disk image or device file for third hard disk." msgstr "Disko atvaizdas arba įrenginio failas trečiam kietajam diskui." #: glade/qemulauncher.glade:411 msgid "Disk image or device file for second hard disk." msgstr "Disko atvaizdas arba įrenginio failas antram kietajam diskui." #: glade/qemulauncher.glade:426 msgid "Disk image or device file for first hard disk." msgstr "Disko atvaizdas arba įrenginio failas pirmam kietajam diskui." #: glade/qemulauncher.glade:547 msgid "Hard disk 3:" msgstr "Kietasis diskas 3:" #: glade/qemulauncher.glade:560 msgid "Hard disk 2:" msgstr "Kietasis diskas 2:" #: glade/qemulauncher.glade:573 msgid "Hard disk 1:" msgstr "Kietasis diskas 1:" #: glade/qemulauncher.glade:586 msgid "Hard disk 0:" msgstr "Kietasis diskas 0:" #: glade/qemulauncher.glade:617 msgid "RAM (MB):" msgstr "Atmintis (MB):" #: glade/qemulauncher.glade:627 msgid "Amount of RAM in megabytes." msgstr "Operatyviosios atminties kiekis megabaitais." #: glade/qemulauncher.glade:653 msgid "Disks and memory" msgstr "Diskai ir atmintis" #: glade/qemulauncher.glade:669 msgid "Boot an external Linux kernel image directly." msgstr "Paleisti išorinį Linux branduolio atvaizdą tiesiogiai." #: glade/qemulauncher.glade:670 msgid "Boot Linux kernel directly" msgstr "Paleisti Linux branduolį tiesiogiai" #: glade/qemulauncher.glade:699 msgid "Path to initial RAM disk image." msgstr "Kelias iki pradinio RAM disko atvaizdo." #: glade/qemulauncher.glade:747 msgid "Parameters passed to a kernel at boot time." msgstr "Parametrai perduodami branduoliui paleisties metu." #: glade/qemulauncher.glade:763 msgid "Path to Linux kernel image." msgstr "Kelias iki Linux branduolio atvaizdo." #: glade/qemulauncher.glade:776 msgid "Kernel image:" msgstr "Branduolio atvaizdas:" #: glade/qemulauncher.glade:787 msgid "Kernel command line:" msgstr "Branduolio komandinė eilutė:" #: glade/qemulauncher.glade:800 msgid "Initial RAM disk:" msgstr "Pradinis RAM diskas:" #: glade/qemulauncher.glade:824 msgid "Linux boot" msgstr "Linux paleistis" #: glade/qemulauncher.glade:845 msgid "Number of network interface cards:" msgstr "Tinklo plokščių skaičius:" #: glade/qemulauncher.glade:855 msgid "" "Number of network interface cards to emulate. Set to zero to disable " "networking." msgstr "" "Emuliuojamų tinklo plokščių skaičius. Jei norite išjungti tinklą, " "nustatykite į nulį." #: glade/qemulauncher.glade:917 msgid "Add redirection." msgstr "Pridėti peradresavimą." #: glade/qemulauncher.glade:931 msgid "Remove selected redirection." msgstr "Pašalinti pasirinktą peradresavimą." #: glade/qemulauncher.glade:946 msgid "Write current values to selected redirection." msgstr "Įrašyti dabartines reikšmes į pasirinktą peradresavimą." #: glade/qemulauncher.glade:987 msgid "TCP protocol." msgstr "TCP protokolas." #: glade/qemulauncher.glade:1001 msgid "UDP protocol." msgstr "UDP protokolas." #: glade/qemulauncher.glade:1022 glade/qemulauncher.glade:1073 msgid "port" msgstr "prievadą" #: glade/qemulauncher.glade:1034 msgid "Port on a host machine that will be redirected to a virtual machine." msgstr "Šeimininko prievadas, kuris bus peradresuojamas į virtualią mašiną." #: glade/qemulauncher.glade:1050 msgid "to guest IP" msgstr "į svečio IP" #: glade/qemulauncher.glade:1062 glade/qemulauncher.glade:1320 #: glade/qemulauncher.glade:1627 glade/qemulauncher.glade:1934 #: glade/qemulauncher.glade:2241 glade/qemulauncher.glade:2548 #: glade/qemulauncher.glade:2855 glade/qemulauncher.glade:3162 #: glade/qemulauncher.glade:3469 msgid "IP address of a virtual machine." msgstr "Virtualios mašinos IP adresas." #: glade/qemulauncher.glade:1085 msgid "Port on a virtual machine that packets will be forwarded to." msgstr "Virtualios mašinos prievadas, į kurį bus peradresuojami duomenys." #: glade/qemulauncher.glade:1105 msgid "Redirect" msgstr "Peradresuoti" #: glade/qemulauncher.glade:1136 msgid "Allow SMB access to:" msgstr "Leisti SMB prieigą prie:" #: glade/qemulauncher.glade:1147 msgid "" "When using the user mode network stack, activate a built-in SMB server so " "that SMB-aware operating systems can access to the host files in the " "specified directory transparently." msgstr "" "Kai naudojamas naudotojo režimo tinklo stekas, įjungtį vidinį SMB serverį, " "kad SMB protokolą suprantančios operacinės sistemos galėtų pasiekti " "nurodytame kataloge esančius failus." #: glade/qemulauncher.glade:1181 msgid "Redirections" msgstr "Peradresavimai" #: glade/qemulauncher.glade:1196 glade/qemulauncher.glade:1503 #: glade/qemulauncher.glade:1810 glade/qemulauncher.glade:2117 #: glade/qemulauncher.glade:2424 glade/qemulauncher.glade:2731 #: glade/qemulauncher.glade:3038 glade/qemulauncher.glade:3345 msgid "Connect the network interface card to a network using this method." msgstr "Prijungti tinklo plokštę prie tinklo šiuo būdu." #: glade/qemulauncher.glade:1228 glade/qemulauncher.glade:1535 #: glade/qemulauncher.glade:1842 glade/qemulauncher.glade:2149 #: glade/qemulauncher.glade:2456 glade/qemulauncher.glade:2763 #: glade/qemulauncher.glade:3070 glade/qemulauncher.glade:3377 msgid "Connect the network interface card to this virtual LAN." msgstr "Prijungti tinklo plokštę prie šio virtualaus tinklo." #: glade/qemulauncher.glade:1247 glade/qemulauncher.glade:1554 #: glade/qemulauncher.glade:1861 glade/qemulauncher.glade:2168 #: glade/qemulauncher.glade:2475 glade/qemulauncher.glade:2782 #: glade/qemulauncher.glade:3089 glade/qemulauncher.glade:3396 msgid "Connect to or listen on this port." msgstr "Prisijungti prie arba klausytis per šį prievadą." #: glade/qemulauncher.glade:1264 glade/qemulauncher.glade:1571 #: glade/qemulauncher.glade:1878 glade/qemulauncher.glade:2185 #: glade/qemulauncher.glade:2492 glade/qemulauncher.glade:2799 #: glade/qemulauncher.glade:3106 glade/qemulauncher.glade:3413 msgid "VLAN:" msgstr "virtualus tinklas:" #: glade/qemulauncher.glade:1279 glade/qemulauncher.glade:1586 #: glade/qemulauncher.glade:1893 glade/qemulauncher.glade:2200 #: glade/qemulauncher.glade:2507 glade/qemulauncher.glade:2814 #: glade/qemulauncher.glade:3121 glade/qemulauncher.glade:3428 msgid "" "MAC address of the network interface card (the format is aa:bb:cc:dd:ee:ff " "in hex). Leave blank to use default." msgstr "" "Tinklo plokštės MAC adresas (formatas yra aa:bb:cc:dd:ee:ff šešioliktainiais " "skaičiais). Jei tuščias, bus naudojamas numatytasis." #: glade/qemulauncher.glade:1294 glade/qemulauncher.glade:1601 #: glade/qemulauncher.glade:1908 glade/qemulauncher.glade:2215 #: glade/qemulauncher.glade:2522 glade/qemulauncher.glade:2829 #: glade/qemulauncher.glade:3136 glade/qemulauncher.glade:3443 msgid "MAC address:" msgstr "MAC adresas:" #: glade/qemulauncher.glade:1307 glade/qemulauncher.glade:1614 #: glade/qemulauncher.glade:1921 glade/qemulauncher.glade:2228 #: glade/qemulauncher.glade:2535 glade/qemulauncher.glade:2842 #: glade/qemulauncher.glade:3149 glade/qemulauncher.glade:3456 msgid "port:" msgstr "prievadas:" #: glade/qemulauncher.glade:1333 glade/qemulauncher.glade:1640 #: glade/qemulauncher.glade:1947 glade/qemulauncher.glade:2254 #: glade/qemulauncher.glade:2561 glade/qemulauncher.glade:2868 #: glade/qemulauncher.glade:3175 glade/qemulauncher.glade:3482 msgid "IP address:" msgstr "IP adresas:" #: glade/qemulauncher.glade:1380 glade/qemulauncher.glade:1673 #: glade/qemulauncher.glade:1980 glade/qemulauncher.glade:2287 #: glade/qemulauncher.glade:2594 glade/qemulauncher.glade:2901 #: glade/qemulauncher.glade:3208 glade/qemulauncher.glade:3515 msgid "" "TUN/TAP interface configuration script. The default is '/etc/qemu-ifup'." msgstr "" "TUN/TAP sąsajos konfigūravimo skriptas. Numatytasis yra „/etc/qemu-ifup“." #: glade/qemulauncher.glade:1393 glade/qemulauncher.glade:1686 #: glade/qemulauncher.glade:1993 glade/qemulauncher.glade:2300 #: glade/qemulauncher.glade:2607 glade/qemulauncher.glade:2914 #: glade/qemulauncher.glade:3221 glade/qemulauncher.glade:3528 msgid "" "A name for a TAP interface. If name is not provided, the OS automatically " "provides one." msgstr "TAP sąsajos pavadinimas. Jei nenurodytas, OS jį parinks automatiškai." #: glade/qemulauncher.glade:1408 glade/qemulauncher.glade:1715 #: glade/qemulauncher.glade:2022 glade/qemulauncher.glade:2329 #: glade/qemulauncher.glade:2636 glade/qemulauncher.glade:2943 #: glade/qemulauncher.glade:3250 glade/qemulauncher.glade:3557 msgid "Name of network interface:" msgstr "Tinklo sąsajos pavadinimas:" #: glade/qemulauncher.glade:1421 glade/qemulauncher.glade:1728 #: glade/qemulauncher.glade:2035 glade/qemulauncher.glade:2342 #: glade/qemulauncher.glade:2649 glade/qemulauncher.glade:2956 #: glade/qemulauncher.glade:3263 glade/qemulauncher.glade:3570 msgid "TUN/TAP configuration script:" msgstr "TUN/TAP konfigūravimo skriptas:" #: glade/qemulauncher.glade:1452 glade/qemulauncher.glade:1759 #: glade/qemulauncher.glade:2066 glade/qemulauncher.glade:2373 #: glade/qemulauncher.glade:2680 glade/qemulauncher.glade:2987 #: glade/qemulauncher.glade:3294 glade/qemulauncher.glade:3601 msgid "File descriptor:" msgstr "Failo identifikatorius:" #: glade/qemulauncher.glade:1462 glade/qemulauncher.glade:1769 #: glade/qemulauncher.glade:2076 glade/qemulauncher.glade:2383 #: glade/qemulauncher.glade:2690 glade/qemulauncher.glade:2997 #: glade/qemulauncher.glade:3304 glade/qemulauncher.glade:3611 msgid "" "File descriptor of an already open TCP or UDP socket, or TUN/TAP interface." msgstr "" "Jau atviros TCP arba UDP jungties, arba TUN/TAP sąsajos failo " "identifikatorius." #: glade/qemulauncher.glade:1488 msgid "Card 0" msgstr "Plokštė 0" #: glade/qemulauncher.glade:1795 msgid "Card 1" msgstr "Plokštė 1" #: glade/qemulauncher.glade:2102 msgid "Card 2" msgstr "Plokštė 2" #: glade/qemulauncher.glade:2409 msgid "Card 3" msgstr "Plokštė 3" #: glade/qemulauncher.glade:2716 msgid "Card 4" msgstr "Plokštė 4" #: glade/qemulauncher.glade:3023 msgid "Card 5" msgstr "Plokštė 5" #: glade/qemulauncher.glade:3330 msgid "Card 6" msgstr "Plokštė 6" #: glade/qemulauncher.glade:3637 msgid "Card 7" msgstr "Plokštė 7" #: glade/qemulauncher.glade:3660 msgid "Network" msgstr "Tinklas" #: glade/qemulauncher.glade:3681 msgid "System type:" msgstr "Sistemos tipas:" #: glade/qemulauncher.glade:3690 msgid "Hardware achitecture of a virtual machine." msgstr "Virtualios mašinos aparatinės įrangos architektūra." #: glade/qemulauncher.glade:3721 msgid "" "Set real time clock to local time, otherwise set to UTC time. This is needed " "to have correct date in operating systems that do not understand UTC time." msgstr "" "Nustatyti realaus laiko laikrodį vietos laiku, priešingu atveju nustatyti " "UTC laiku. Šitai yra reikalinga norint turėti teisingą datą operacinėse " "sistemose, kurios nesupranta UTC laiko." #: glade/qemulauncher.glade:3722 msgid "Set clock to local time" msgstr "Nustatyti laikrodį vietos laiku" #: glade/qemulauncher.glade:3736 msgid "" "Enable sound card emulation. It is disabled by default as it may cause " "problems with certain guest operating systems." msgstr "" "Įjungti garso plokštės emuliavimą. Jis yra išjungtas pagal nutylėjimą, nes " "gali sukelti problemų tam tikroms svečio operacinėmis sistemomis." #: glade/qemulauncher.glade:3737 msgid "Enable audio" msgstr "Įjungti garsą" #: glade/qemulauncher.glade:3750 msgid "" "Disable graphical output of the emulator. The emulated serial port is " "redirected on the console." msgstr "" "Išjungti emuliatoriaus grafinę išvestį. Emuliuojamas nuoseklusis prievadas " "yra peradresuojamas į konsolę." #: glade/qemulauncher.glade:3751 msgid "Disable graphical output" msgstr "Išjungti grafinę išvestį" #: glade/qemulauncher.glade:3764 msgid "" "Start emulator in full screen mode. Hit 'Ctrl+Alt+f' to return to window " "mode." msgstr "" "Startuoti pilno ekrano režime. Norėdami palikti pilno ekrano režimą, " "spauskite „Ctrl+Alt+f“." #: glade/qemulauncher.glade:3765 msgid "Start in full screen mode" msgstr "Startuoti viso ekrano režime" #: glade/qemulauncher.glade:3792 msgid "Number of CPUs:" msgstr "Procesorių skaičius:" #: glade/qemulauncher.glade:3802 msgid "" "Emulate a system with this number CPUs. On the PC target, SMP systems with " "up to 255 CPUs are supported." msgstr "" "Emuliuoti sistemą su šitokiu skaičiumi procesorių. PC architektūroje " "palaikomos SMP sistemos su procesorių skaičiumi iki 255 imtinai." #: glade/qemulauncher.glade:3846 msgid "Emulate a Cirrus Logic GD 5446 PCI VGA video card" msgstr "Emuliuoti Cirrus Logic GD 5446 PCI VGA vaizdo plokštę" #: glade/qemulauncher.glade:3847 msgid "Cirrus Logic GD 5446 PCI VGA video card" msgstr "Cirrus Logic GD 5446 PCI VGA vaizdo plokštė" #: glade/qemulauncher.glade:3860 msgid "Emulate a standard VGA card with Bochs VBE extensions" msgstr "Emuliuoti standartinę VGA plokštę su Bochs VBE plėtiniais" #: glade/qemulauncher.glade:3861 msgid "Standard VGA card with VESA Bochs extensions" msgstr "Standartinė VGA plokštė su VESA Bochs plėtiniais" #: glade/qemulauncher.glade:3878 msgid "Video card" msgstr "Vaizdo plokštė" #: glade/qemulauncher.glade:3908 msgid "Emulate a Creative Sound Blaster 16 sound card" msgstr "Emuliuoti Creative Sound Blaster 16 garso plokštę" #: glade/qemulauncher.glade:3909 msgid "Creative Sound Blaster 16 sound card" msgstr "Creative Sound Blaster 16 garso plokštė" #: glade/qemulauncher.glade:3923 msgid "Emulate a ENSONIQ AudioPCI ES1370 sound card" msgstr "Emuliuoti ENSONIQ AudioPCI ES1370 garso plokštę" #: glade/qemulauncher.glade:3924 msgid "ENSONIQ AudioPCI ES1370 sound card" msgstr "ENSONIQ AudioPCI ES1370 garso plokštė" #: glade/qemulauncher.glade:3941 msgid "Sound card" msgstr "Garso plokštė" #: glade/qemulauncher.glade:3972 msgid "Redirect virtual serial port to a host device." msgstr "Peradresuoti virtualų nuoseklųjį prievadą į šeimininko įrenginį." #: glade/qemulauncher.glade:3988 msgid "" "Use specific keyboard layout language. This option is only needed where it " "is not easy to get raw PC keycodes (for example on Macs or with some X11 " "servers)." msgstr "" "Naudoti konkretų klaviatūros išdėstymą. Ši nuostata reikalinga tik tuomet, " "kai nėra lengva gauti klavišų kodus (pavyzdžiui Mac kompiuteriuose arba kai " "kuriuose X11 serveriuose)." #: glade/qemulauncher.glade:4007 msgid "Serial port:" msgstr "Nuoseklusis prievadas:" #: glade/qemulauncher.glade:4018 msgid "Keyboard layout:" msgstr "Klaviatūros išdėstymas:" #: glade/qemulauncher.glade:4042 msgid "Hardware" msgstr "Įranga" #: glade/qemulauncher.glade:4063 msgid "Process priority:" msgstr "Proceso prioritetas:" #: glade/qemulauncher.glade:4073 msgid "" "The 'nice' setting for the virtual machine process. Higher number means " "lower priority." msgstr "" "Virtualios mašinos proceso „nice“ vertė. Didesnis skaičius reiškia žemesnį " "prioritetą." #: glade/qemulauncher.glade:4104 msgid "" "Open a panel for manipulating run time options of the emulator. Requires " "Qemuctl to be installed." msgstr "" "Atverti pultelį emuliatoriaus eigos nuostatoms valdyti. Reikalauja, kad būtų " "įdiegta „Qemuctl“ programa." #: glade/qemulauncher.glade:4105 msgid "Provide a control panel" msgstr "Pateikti valdymo pultą" #: glade/qemulauncher.glade:4118 msgid "" "Do not start CPU at startup. You will need to enter 'c' in the monitor to " "start it." msgstr "" "Startuojant nepaleisti procesoriaus. Norėdami jį paleisti, stebėjimo " "įrenginyje turėsite įvesti „c“." #: glade/qemulauncher.glade:4119 msgid "Start in stopped state" msgstr "Startuoti sustabdytoje būklėje" #: glade/qemulauncher.glade:4132 msgid "Output log in '/tmp/qemu.log' file." msgstr "Vesti žurnalą „/tmp/qemu.log“ faile." #: glade/qemulauncher.glade:4133 msgid "Turn on logging" msgstr "Vesti žurnalą" #: glade/qemulauncher.glade:4166 msgid "Show generated host assembly code for each compiled TB." msgstr "" "Rodyti sugeneruotą šeimininko asemblerio kodą kiekvienam sukompiliuotam TB." #: glade/qemulauncher.glade:4176 msgid "Show target assembly code for each compiled TB." msgstr "Rodyti svečio asemblerio kodą kiekvienam sukompiliuotam TB." #: glade/qemulauncher.glade:4189 msgid "Show micro ops for each compiled TB (only usable if 'in_asm' is used)." msgstr "" "Rodyti mikro ops kiekvienam sukompiliuotam TB (veikia tik jei yra naudojamas " "„in_asm“)." #: glade/qemulauncher.glade:4202 msgid "Show micro ops after optimization for each compiled TB." msgstr "Rodyti mikro ops po optimizacijos kiekvienam sukompiliuotam TB." #: glade/qemulauncher.glade:4215 msgid "Show interrupts and exceptions in short format." msgstr "Rodyti pertraukimus ir išimtis trumpuoju formatu." #: glade/qemulauncher.glade:4228 msgid "Show trace before each executed TB (lots of logs)." msgstr "Rodyti pėdsaką prieš kiekvieną įvykdytą TB (daug duomenų)." #: glade/qemulauncher.glade:4241 msgid "Show CPU state before bloc translation." msgstr "Rodyti procesoriaus būklę prieš bloc perėjimą." #: glade/qemulauncher.glade:4254 msgid "Show protected mode far calls, returns, and exceptions." msgstr "Rodyti apsaugotą režimą kvietimams, sugrįžimams, ir išimtims." #: glade/qemulauncher.glade:4267 msgid "What to log" msgstr "Ką registruoti žurnale" #: glade/qemulauncher.glade:4297 msgid "" "Do not use accelerator module. Everything will work as usual but will be " "slower." msgstr "Nenaudoti greitintuvo modulio. Viskas veiks kaip įprasta, tik lėčiau." #: glade/qemulauncher.glade:4298 msgid "Disable" msgstr "Išjungtas" #: glade/qemulauncher.glade:4311 msgid "" "Use accelerator module in standard mode. Makes no difference if the module " "is not available." msgstr "" "Naudoti greitintuvo modulį standartiniu režimu. Neturi prasmės jei modulis " "nėra prieinamas." #: glade/qemulauncher.glade:4312 msgid "Enable" msgstr "Įjungtas" #: glade/qemulauncher.glade:4328 msgid "" "Use accelerator module in full virtualization mode. It is the fastest, but " "does not work with all guest operating systems. Makes no difference if the " "module is not available." msgstr "" "Naudoti greitintuvo modulį pilnos virtualizacijos režime. Šis yra " "greičiausias, bet neveikia su visomis svečio operacinėmis sistemomis. Neturi " "prasmės jei modulis nėra prieinamas." #: glade/qemulauncher.glade:4329 msgid "Full" msgstr "Pilnas" #: glade/qemulauncher.glade:4349 msgid "Acceleration" msgstr "Greitinimas" #: glade/qemulauncher.glade:4396 msgid "Start with a previously saved virtual machine state." msgstr "Startuoti naudojant ankščiau išsaugotą virtualios mašinos būklę." #: glade/qemulauncher.glade:4409 msgid "" "Enter additional arguments here as they would be entered on the command line." msgstr "" "Čia įveskite papildomus parametrus tarsi jie būtų įvedami komandinėje " "eilutėje." #: glade/qemulauncher.glade:4424 msgid "Additional arguments:" msgstr "Papildomi parametrai:" #: glade/qemulauncher.glade:4437 msgid "Load state at startup:" msgstr "Užkrauti būseną startuojant:" #: glade/qemulauncher.glade:4468 msgid "Monitor device:" msgstr "Stebėjimo įrenginys:" #: glade/qemulauncher.glade:4477 msgid "" "Redirect monitor to a host device. The default device is 'vc' in graphical " "mode and 'stdio' in non graphical mode." msgstr "" "Peradresuoti stebėjimo įrenginį į šeimininko įrenginį. Numatytasis yra „vc“ " "grafiniame režime ir „stdio“ negrafiniame režime." #: glade/qemulauncher.glade:4504 msgid "Emulator" msgstr "Emuliatorius" #: glade/qemulauncher.glade:4530 msgid "Exit application." msgstr "Išeiti iš programos." #: glade/qemulauncher.glade:4546 msgid "Save this configuration." msgstr "Išsaugoti šią konfigūraciją." #: glade/qemulauncher.glade:4555 msgid "Delete this configuration." msgstr "Ištrinti šią konfigūraciją." #: glade/qemulauncher.glade:4569 msgid "Run with this configuration." msgstr "Startuoti naudojant šias nuostatas." #: glade/qemulauncher.glade:4598 msgid "_Launch" msgstr "_Paleisti" #: glade/qemulauncher.glade:4636 msgid "Configurations" msgstr "Konfigūracijos" #: glade/qemulauncher.glade:4659 msgid "" "Path to executable file of utility used for controling run time options. " "This is optional." msgstr "" "Kelias iki įrankio, naudojamo emuliatoriaus eigos nuostatoms valdyti, " "vykdomojo failo. Šis nėra privalomas." #: glade/qemulauncher.glade:4674 msgid "Path to executable file used for disk image creation." msgstr "Kelias iki vykdomojo failo, naudojamo diskų atvaizdams kurti." #: glade/qemulauncher.glade:4689 msgid "Path to main executable file of the emulator." msgstr "Kelias iki pagrindinio emuliatoriaus vykdomojo failo." #: glade/qemulauncher.glade:4704 msgid "Default directory used for storing disk images, etc." msgstr "Standartinis katalogas naudojamas diskų atvaizdams laikyti ir pan." #: glade/qemulauncher.glade:4717 msgid "Run this command before launching emulator." msgstr "Įvykdyti šią komandą prieš paleidžiant emuliatorių." #: glade/qemulauncher.glade:4794 msgid "Pre-launch command:" msgstr "Komanda prieš startą:" #: glade/qemulauncher.glade:4808 msgid "Path to 'qemuctl':" msgstr "Kelias iki „qemuctl“" #: glade/qemulauncher.glade:4821 msgid "Path to 'qemu-img':" msgstr "Kelias iki „qemu-img“:" #: glade/qemulauncher.glade:4835 msgid "Path to 'qemu':" msgstr "Kelias iki „qemu“:" #: glade/qemulauncher.glade:4849 msgid "Data directory:" msgstr "Duomenų katalogas:" #: glade/qemulauncher.glade:4873 msgid "Use this configuration but do not save to disk." msgstr "Naudoti šias nuostatas, bet nesaugoti į diską." #: glade/qemulauncher.glade:4883 msgid "Cancel changes." msgstr "Atšaukti pakeitimus." #: glade/qemulauncher.glade:4896 msgid "Apply configuration and save to disk." msgstr "Pritaikyti nuostatas ir išsaugoti į diską." #: glade/qemulauncher.glade:4920 msgid "Launcher settings" msgstr "Paleidėjo nuostatos" #: glade/qemulauncher.glade:4966 msgid "About" msgstr "Apie" #: glade/qemulauncher.glade:4981 msgid "Create disk image" msgstr "Kurti disko atvaizdą" #: glade/qemulauncher.glade:4997 msgid "" "Native format. Supports optional AES encryption and zlib based compression." msgstr "" "Gimtasis formatas. Palaiko neprivalomą AES šifravimą ir zlib duomenų " "suspaudimą." #: glade/qemulauncher.glade:4998 msgid "Create empty QCOW2 image" msgstr "Kurti tuščią QCOW2 atvaizdą" #: glade/qemulauncher.glade:5011 msgid "" "This format has the advantage of being simple and easily exportable to all " "other emulators." msgstr "" "Šis formatas turi privalumą tame, kad jis yra paprastas ir lengvai " "eksportuojamas į kitus emuliatorius." #: glade/qemulauncher.glade:5012 msgid "Create empty raw image" msgstr "Kurti tuščią plokščią atvaizdą" #: glade/qemulauncher.glade:5026 msgid "Create a new QCOW image from an existing raw disk image." msgstr "Kurti naują QCOW atvaizdą iš egzistuojančio plokščio disko atvaizdo." #: glade/qemulauncher.glade:5027 msgid "Create QCOW2 image from a raw image" msgstr "Kurti QCOW2 atvaizdą iš plokščio atvaizdo" #: glade/qemulauncher.glade:5041 msgid "" "Create a new QCOW image from a VMware version 3 and 4 compatible disk image." msgstr "" "Kurti naują QCOW atvaizdą iš VMware versijos 3 ir 4 suderinamo disko " "atvaizdo." #: glade/qemulauncher.glade:5042 msgid "Create QCOW2 image from a VMware image" msgstr "Kurti QCOW2 atvaizdą iš VMware atvaizdo" #: glade/qemulauncher.glade:5057 msgid "Create QCOW2 image form a QCOW image" msgstr "Kurti QCOW2 atvaizdą iš QCOW atvaizdo" #: glade/qemulauncher.glade:5086 msgid "Location a new disk image will be created in." msgstr "Vieta, kurioje bus sukurtas naujas disko atvaizdas." #: glade/qemulauncher.glade:5101 msgid "Create a new disk image from this image." msgstr "Kurti naują disko atvaizdą iš šio atvaizdo." #: glade/qemulauncher.glade:5113 msgid "Name of a new disk image." msgstr "Naujo disko atvaizdo pavadinimas." #: glade/qemulauncher.glade:5158 msgid "New image location:" msgstr "Naujo atvaizdo vieta:" #: glade/qemulauncher.glade:5171 msgid "New image name:" msgstr "Naujo atvaizdo pavadinimas:" #: glade/qemulauncher.glade:5184 msgid "Original image:" msgstr "Originalus atvaizdas:" #: glade/qemulauncher.glade:5215 msgid "New image size (MB):" msgstr "Naujo atvaizdo dydis (MB):" #: glade/qemulauncher.glade:5225 msgid "Size of a new disk image in megabytes." msgstr "Naujo disko atvaizdo dydis megabaitais." #: glade/qemulauncher.glade:5268 msgid "Close this window." msgstr "Užverti šį langą." #: glade/qemulauncher.glade:5278 msgid "Create and use this disk image." msgstr "Sukurti ir naudoti šį disko atvaizdą." #: glade/qemulauncher.glade:5298 msgid "Question" msgstr "Klausimas" #: glade/qemulauncher.glade:5375 msgid "Warning" msgstr "Perspėjimas" qemu-launcher-1.7.4/po/qemu-launcher.pot0000644000175000017500000006054710632602574017220 0ustar linaslinas# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2007-06-09 13:50+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: qemu-launcher.pl:46 glade/qemulauncher.glade:27 msgid "Qemu Launcher" msgstr "" #: qemu-launcher.pl:52 msgid "Default settings" msgstr "" #: qemu-launcher.pl:58 qemu-launcher.pl:514 qemu-launcher.pl:525 #: qemu-launcher.pl:583 qemu-launcher.pl:709 qemu-launcher.pl:719 #: qemu-launcher.pl:767 qemu-launcher.pl:2108 qemu-launcher.pl:2115 msgid "Default" msgstr "" #: qemu-launcher.pl:60 msgid "These defaults can be modified and used as a base for new configs." msgstr "" #: qemu-launcher.pl:230 #, perl-format msgid "Could not save configuration for %s." msgstr "" #: qemu-launcher.pl:291 #, perl-format msgid "Could not read configuration for %s." msgstr "" #: qemu-launcher.pl:351 #, perl-format msgid "Delete '%s'?" msgstr "" #: qemu-launcher.pl:366 #, perl-format msgid "Could not delete %s:" msgstr "" #: qemu-launcher.pl:798 msgid "Please enter a name for this configuration." msgstr "" #: qemu-launcher.pl:849 #, perl-format msgid "Could not read configuration from %s" msgstr "" #: qemu-launcher.pl:908 #, perl-format msgid "Could not save configuration to %s" msgstr "" #: qemu-launcher.pl:944 msgid "Please enter a valid data directory." msgstr "" #: qemu-launcher.pl:945 qemu-launcher.pl:951 qemu-launcher.pl:962 #: qemu-launcher.pl:973 qemu-launcher.pl:984 msgid "Settings not applied." msgstr "" #: qemu-launcher.pl:950 qemu-launcher.pl:961 qemu-launcher.pl:972 #: qemu-launcher.pl:983 #, perl-format msgid "%s does not exist." msgstr "" #: qemu-launcher.pl:1365 msgid "Not a valid directory for 'New image location'." msgstr "" #: qemu-launcher.pl:1371 msgid "Not a valid name for 'New image name'." msgstr "" #: qemu-launcher.pl:1377 msgid "Not a valid image for 'Original image'." msgstr "" #: qemu-launcher.pl:1426 msgid "An error occurred creating the disk image:" msgstr "" #: qemu-launcher.pl:1473 #, perl-format msgid "No file specified for %s." msgstr "" #: qemu-launcher.pl:1478 #, perl-format msgid "Not a valid file for %s." msgstr "" #: qemu-launcher.pl:1498 qemu-launcher.pl:1520 msgid "Select a File" msgstr "" #: qemu-launcher.pl:1546 msgid "Select a Directory" msgstr "" #: qemu-launcher.pl:1911 msgid "" "Some characters in the name are not valid.\n" " Use only letters, numbers, -, _, and space." msgstr "" #: qemu-launcher.pl:2016 msgid "" "There was a problem reading the main configuration. Starting with defaults." msgstr "" #: qemu-launcher.pl:2037 #, perl-format msgid "A configuration named '%s' does not exist." msgstr "" #: qemu-launcher.pl:2084 msgid "Floppy A" msgstr "" #: qemu-launcher.pl:2085 msgid "Hard disk 0" msgstr "" #: qemu-launcher.pl:2086 msgid "CD-ROM" msgstr "" #: qemu-launcher.pl:2093 msgid "PC, 32-bit (x86)" msgstr "" #: qemu-launcher.pl:2094 msgid "PC, 64-bit (x86_64)" msgstr "" #: qemu-launcher.pl:2095 msgid "ARM, little endian (arm)" msgstr "" #: qemu-launcher.pl:2096 msgid "ARM, big endian (armeb)" msgstr "" #: qemu-launcher.pl:2097 msgid "PowerPC, 32-bit (ppc)" msgstr "" #: qemu-launcher.pl:2098 msgid "PowerPC, 64-bit (ppc64)" msgstr "" #: qemu-launcher.pl:2099 msgid "SPARC, 32-bit (sparc)" msgstr "" #: qemu-launcher.pl:2100 msgid "SPARC, 64-bit (sparc64)" msgstr "" #: qemu-launcher.pl:2101 msgid "MIPS, big endian (mips)" msgstr "" #: qemu-launcher.pl:2102 msgid "MIPS, little endian (mipsel)" msgstr "" #: qemu-launcher.pl:2130 msgid "Use the user mode network stack" msgstr "" #: qemu-launcher.pl:2131 msgid "Open a TUN/TAP interface" msgstr "" #: qemu-launcher.pl:2132 msgid "Use an already open TUN/TAP interface" msgstr "" #: qemu-launcher.pl:2133 msgid "Open a listening TCP socket" msgstr "" #: qemu-launcher.pl:2134 msgid "Use an already open TCP socket" msgstr "" #: qemu-launcher.pl:2135 msgid "Connect to listening TCP socket" msgstr "" #: qemu-launcher.pl:2136 msgid "Create shared VLAN via UDP multicast socket" msgstr "" #: qemu-launcher.pl:2137 msgid "Use an already open UDP multicast socket" msgstr "" #: qemu-launcher.pl:2138 msgid "No connection" msgstr "" #: qemu-launcher.pl:2147 msgid "Protocol" msgstr "" #: qemu-launcher.pl:2149 msgid "Host port" msgstr "" #: qemu-launcher.pl:2151 msgid "Guest IP" msgstr "" #: qemu-launcher.pl:2153 msgid "Guest port" msgstr "" #: qemu-launcher.pl:2166 qemu-launcher.pl:2168 msgid "Copyright (C)" msgstr "" #: qemu-launcher.pl:2170 msgid "QEMU is a trademark of Fabrice Bellard" msgstr "" #: qemu-launcher.pl:2172 msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version." msgstr "" #: qemu-launcher.pl:2174 msgid "" "This program is distributed in the hope that it will be useful, but WITHOUT " "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details." msgstr "" #: qemu-launcher.pl:2392 msgid "" "Serial redirection cannot use 'stdio' at the same time as the monitor. " "Setting serial redirection to 'Default'." msgstr "" #: glade/qemulauncher.glade:50 msgid "Name for this virtual machine configuration." msgstr "" #: glade/qemulauncher.glade:74 msgid "Description of this configuration. May be left blank." msgstr "" #: glade/qemulauncher.glade:89 msgid "Configuration notes:" msgstr "" #: glade/qemulauncher.glade:102 msgid "Configuration name:" msgstr "" #: glade/qemulauncher.glade:127 msgid "" "Write to temporary files instead of to disk images, unless you instruct the " "emulator to do so by pressing 'Ctrl+a s'." msgstr "" #: glade/qemulauncher.glade:128 msgid "Snapshot mode" msgstr "" #: glade/qemulauncher.glade:140 msgid "Use CD-ROM instead of hard disk 2." msgstr "" #: glade/qemulauncher.glade:141 msgid "Use CD-ROM" msgstr "" #: glade/qemulauncher.glade:168 msgid "Boot disk:" msgstr "" #: glade/qemulauncher.glade:177 msgid "Boot on floppy, hard disk, or CD-ROM." msgstr "" #: glade/qemulauncher.glade:263 msgid "Disk image or device file for CD-ROM." msgstr "" #: glade/qemulauncher.glade:278 msgid "Disk image or device file for second floppy disk." msgstr "" #: glade/qemulauncher.glade:293 msgid "Disk image or device file for first floppy disk." msgstr "" #: glade/qemulauncher.glade:306 msgid "CD-ROM:" msgstr "" #: glade/qemulauncher.glade:319 msgid "Floppy B:" msgstr "" #: glade/qemulauncher.glade:332 msgid "Floppy A:" msgstr "" #: glade/qemulauncher.glade:381 msgid "Disk image or device file for fourth hard disk." msgstr "" #: glade/qemulauncher.glade:396 msgid "Disk image or device file for third hard disk." msgstr "" #: glade/qemulauncher.glade:411 msgid "Disk image or device file for second hard disk." msgstr "" #: glade/qemulauncher.glade:426 msgid "Disk image or device file for first hard disk." msgstr "" #: glade/qemulauncher.glade:547 msgid "Hard disk 3:" msgstr "" #: glade/qemulauncher.glade:560 msgid "Hard disk 2:" msgstr "" #: glade/qemulauncher.glade:573 msgid "Hard disk 1:" msgstr "" #: glade/qemulauncher.glade:586 msgid "Hard disk 0:" msgstr "" #: glade/qemulauncher.glade:617 msgid "RAM (MB):" msgstr "" #: glade/qemulauncher.glade:627 msgid "Amount of RAM in megabytes." msgstr "" #: glade/qemulauncher.glade:653 msgid "Disks and memory" msgstr "" #: glade/qemulauncher.glade:669 msgid "Boot an external Linux kernel image directly." msgstr "" #: glade/qemulauncher.glade:670 msgid "Boot Linux kernel directly" msgstr "" #: glade/qemulauncher.glade:699 msgid "Path to initial RAM disk image." msgstr "" #: glade/qemulauncher.glade:747 msgid "Parameters passed to a kernel at boot time." msgstr "" #: glade/qemulauncher.glade:763 msgid "Path to Linux kernel image." msgstr "" #: glade/qemulauncher.glade:776 msgid "Kernel image:" msgstr "" #: glade/qemulauncher.glade:787 msgid "Kernel command line:" msgstr "" #: glade/qemulauncher.glade:800 msgid "Initial RAM disk:" msgstr "" #: glade/qemulauncher.glade:824 msgid "Linux boot" msgstr "" #: glade/qemulauncher.glade:845 msgid "Number of network interface cards:" msgstr "" #: glade/qemulauncher.glade:855 msgid "" "Number of network interface cards to emulate. Set to zero to disable " "networking." msgstr "" #: glade/qemulauncher.glade:917 msgid "Add redirection." msgstr "" #: glade/qemulauncher.glade:931 msgid "Remove selected redirection." msgstr "" #: glade/qemulauncher.glade:946 msgid "Write current values to selected redirection." msgstr "" #: glade/qemulauncher.glade:987 msgid "TCP protocol." msgstr "" #: glade/qemulauncher.glade:1001 msgid "UDP protocol." msgstr "" #: glade/qemulauncher.glade:1022 glade/qemulauncher.glade:1073 msgid "port" msgstr "" #: glade/qemulauncher.glade:1034 msgid "Port on a host machine that will be redirected to a virtual machine." msgstr "" #: glade/qemulauncher.glade:1050 msgid "to guest IP" msgstr "" #: glade/qemulauncher.glade:1062 glade/qemulauncher.glade:1320 #: glade/qemulauncher.glade:1627 glade/qemulauncher.glade:1934 #: glade/qemulauncher.glade:2241 glade/qemulauncher.glade:2548 #: glade/qemulauncher.glade:2855 glade/qemulauncher.glade:3162 #: glade/qemulauncher.glade:3469 msgid "IP address of a virtual machine." msgstr "" #: glade/qemulauncher.glade:1085 msgid "Port on a virtual machine that packets will be forwarded to." msgstr "" #: glade/qemulauncher.glade:1105 msgid "Redirect" msgstr "" #: glade/qemulauncher.glade:1136 msgid "Allow SMB access to:" msgstr "" #: glade/qemulauncher.glade:1147 msgid "" "When using the user mode network stack, activate a built-in SMB server so " "that SMB-aware operating systems can access to the host files in the " "specified directory transparently." msgstr "" #: glade/qemulauncher.glade:1181 msgid "Redirections" msgstr "" #: glade/qemulauncher.glade:1196 glade/qemulauncher.glade:1503 #: glade/qemulauncher.glade:1810 glade/qemulauncher.glade:2117 #: glade/qemulauncher.glade:2424 glade/qemulauncher.glade:2731 #: glade/qemulauncher.glade:3038 glade/qemulauncher.glade:3345 msgid "Connect the network interface card to a network using this method." msgstr "" #: glade/qemulauncher.glade:1228 glade/qemulauncher.glade:1535 #: glade/qemulauncher.glade:1842 glade/qemulauncher.glade:2149 #: glade/qemulauncher.glade:2456 glade/qemulauncher.glade:2763 #: glade/qemulauncher.glade:3070 glade/qemulauncher.glade:3377 msgid "Connect the network interface card to this virtual LAN." msgstr "" #: glade/qemulauncher.glade:1247 glade/qemulauncher.glade:1554 #: glade/qemulauncher.glade:1861 glade/qemulauncher.glade:2168 #: glade/qemulauncher.glade:2475 glade/qemulauncher.glade:2782 #: glade/qemulauncher.glade:3089 glade/qemulauncher.glade:3396 msgid "Connect to or listen on this port." msgstr "" #: glade/qemulauncher.glade:1264 glade/qemulauncher.glade:1571 #: glade/qemulauncher.glade:1878 glade/qemulauncher.glade:2185 #: glade/qemulauncher.glade:2492 glade/qemulauncher.glade:2799 #: glade/qemulauncher.glade:3106 glade/qemulauncher.glade:3413 msgid "VLAN:" msgstr "" #: glade/qemulauncher.glade:1279 glade/qemulauncher.glade:1586 #: glade/qemulauncher.glade:1893 glade/qemulauncher.glade:2200 #: glade/qemulauncher.glade:2507 glade/qemulauncher.glade:2814 #: glade/qemulauncher.glade:3121 glade/qemulauncher.glade:3428 msgid "" "MAC address of the network interface card (the format is aa:bb:cc:dd:ee:ff " "in hex). Leave blank to use default." msgstr "" #: glade/qemulauncher.glade:1294 glade/qemulauncher.glade:1601 #: glade/qemulauncher.glade:1908 glade/qemulauncher.glade:2215 #: glade/qemulauncher.glade:2522 glade/qemulauncher.glade:2829 #: glade/qemulauncher.glade:3136 glade/qemulauncher.glade:3443 msgid "MAC address:" msgstr "" #: glade/qemulauncher.glade:1307 glade/qemulauncher.glade:1614 #: glade/qemulauncher.glade:1921 glade/qemulauncher.glade:2228 #: glade/qemulauncher.glade:2535 glade/qemulauncher.glade:2842 #: glade/qemulauncher.glade:3149 glade/qemulauncher.glade:3456 msgid "port:" msgstr "" #: glade/qemulauncher.glade:1333 glade/qemulauncher.glade:1640 #: glade/qemulauncher.glade:1947 glade/qemulauncher.glade:2254 #: glade/qemulauncher.glade:2561 glade/qemulauncher.glade:2868 #: glade/qemulauncher.glade:3175 glade/qemulauncher.glade:3482 msgid "IP address:" msgstr "" #: glade/qemulauncher.glade:1380 glade/qemulauncher.glade:1673 #: glade/qemulauncher.glade:1980 glade/qemulauncher.glade:2287 #: glade/qemulauncher.glade:2594 glade/qemulauncher.glade:2901 #: glade/qemulauncher.glade:3208 glade/qemulauncher.glade:3515 msgid "" "TUN/TAP interface configuration script. The default is '/etc/qemu-ifup'." msgstr "" #: glade/qemulauncher.glade:1393 glade/qemulauncher.glade:1686 #: glade/qemulauncher.glade:1993 glade/qemulauncher.glade:2300 #: glade/qemulauncher.glade:2607 glade/qemulauncher.glade:2914 #: glade/qemulauncher.glade:3221 glade/qemulauncher.glade:3528 msgid "" "A name for a TAP interface. If name is not provided, the OS automatically " "provides one." msgstr "" #: glade/qemulauncher.glade:1408 glade/qemulauncher.glade:1715 #: glade/qemulauncher.glade:2022 glade/qemulauncher.glade:2329 #: glade/qemulauncher.glade:2636 glade/qemulauncher.glade:2943 #: glade/qemulauncher.glade:3250 glade/qemulauncher.glade:3557 msgid "Name of network interface:" msgstr "" #: glade/qemulauncher.glade:1421 glade/qemulauncher.glade:1728 #: glade/qemulauncher.glade:2035 glade/qemulauncher.glade:2342 #: glade/qemulauncher.glade:2649 glade/qemulauncher.glade:2956 #: glade/qemulauncher.glade:3263 glade/qemulauncher.glade:3570 msgid "TUN/TAP configuration script:" msgstr "" #: glade/qemulauncher.glade:1452 glade/qemulauncher.glade:1759 #: glade/qemulauncher.glade:2066 glade/qemulauncher.glade:2373 #: glade/qemulauncher.glade:2680 glade/qemulauncher.glade:2987 #: glade/qemulauncher.glade:3294 glade/qemulauncher.glade:3601 msgid "File descriptor:" msgstr "" #: glade/qemulauncher.glade:1462 glade/qemulauncher.glade:1769 #: glade/qemulauncher.glade:2076 glade/qemulauncher.glade:2383 #: glade/qemulauncher.glade:2690 glade/qemulauncher.glade:2997 #: glade/qemulauncher.glade:3304 glade/qemulauncher.glade:3611 msgid "" "File descriptor of an already open TCP or UDP socket, or TUN/TAP interface." msgstr "" #: glade/qemulauncher.glade:1488 msgid "Card 0" msgstr "" #: glade/qemulauncher.glade:1795 msgid "Card 1" msgstr "" #: glade/qemulauncher.glade:2102 msgid "Card 2" msgstr "" #: glade/qemulauncher.glade:2409 msgid "Card 3" msgstr "" #: glade/qemulauncher.glade:2716 msgid "Card 4" msgstr "" #: glade/qemulauncher.glade:3023 msgid "Card 5" msgstr "" #: glade/qemulauncher.glade:3330 msgid "Card 6" msgstr "" #: glade/qemulauncher.glade:3637 msgid "Card 7" msgstr "" #: glade/qemulauncher.glade:3660 msgid "Network" msgstr "" #: glade/qemulauncher.glade:3681 msgid "System type:" msgstr "" #: glade/qemulauncher.glade:3690 msgid "Hardware achitecture of a virtual machine." msgstr "" #: glade/qemulauncher.glade:3721 msgid "" "Set real time clock to local time, otherwise set to UTC time. This is needed " "to have correct date in operating systems that do not understand UTC time." msgstr "" #: glade/qemulauncher.glade:3722 msgid "Set clock to local time" msgstr "" #: glade/qemulauncher.glade:3736 msgid "" "Enable sound card emulation. It is disabled by default as it may cause " "problems with certain guest operating systems." msgstr "" #: glade/qemulauncher.glade:3737 msgid "Enable audio" msgstr "" #: glade/qemulauncher.glade:3750 msgid "" "Disable graphical output of the emulator. The emulated serial port is " "redirected on the console." msgstr "" #: glade/qemulauncher.glade:3751 msgid "Disable graphical output" msgstr "" #: glade/qemulauncher.glade:3764 msgid "" "Start emulator in full screen mode. Hit 'Ctrl+Alt+f' to return to window " "mode." msgstr "" #: glade/qemulauncher.glade:3765 msgid "Start in full screen mode" msgstr "" #: glade/qemulauncher.glade:3792 msgid "Number of CPUs:" msgstr "" #: glade/qemulauncher.glade:3802 msgid "" "Emulate a system with this number CPUs. On the PC target, SMP systems with " "up to 255 CPUs are supported." msgstr "" #: glade/qemulauncher.glade:3846 msgid "Emulate a Cirrus Logic GD 5446 PCI VGA video card" msgstr "" #: glade/qemulauncher.glade:3847 msgid "Cirrus Logic GD 5446 PCI VGA video card" msgstr "" #: glade/qemulauncher.glade:3860 msgid "Emulate a standard VGA card with Bochs VBE extensions" msgstr "" #: glade/qemulauncher.glade:3861 msgid "Standard VGA card with VESA Bochs extensions" msgstr "" #: glade/qemulauncher.glade:3878 msgid "Video card" msgstr "" #: glade/qemulauncher.glade:3908 msgid "Emulate a Creative Sound Blaster 16 sound card" msgstr "" #: glade/qemulauncher.glade:3909 msgid "Creative Sound Blaster 16 sound card" msgstr "" #: glade/qemulauncher.glade:3923 msgid "Emulate a ENSONIQ AudioPCI ES1370 sound card" msgstr "" #: glade/qemulauncher.glade:3924 msgid "ENSONIQ AudioPCI ES1370 sound card" msgstr "" #: glade/qemulauncher.glade:3941 msgid "Sound card" msgstr "" #: glade/qemulauncher.glade:3972 msgid "Redirect virtual serial port to a host device." msgstr "" #: glade/qemulauncher.glade:3988 msgid "" "Use specific keyboard layout language. This option is only needed where it " "is not easy to get raw PC keycodes (for example on Macs or with some X11 " "servers)." msgstr "" #: glade/qemulauncher.glade:4007 msgid "Serial port:" msgstr "" #: glade/qemulauncher.glade:4018 msgid "Keyboard layout:" msgstr "" #: glade/qemulauncher.glade:4042 msgid "Hardware" msgstr "" #: glade/qemulauncher.glade:4063 msgid "Process priority:" msgstr "" #: glade/qemulauncher.glade:4073 msgid "" "The 'nice' setting for the virtual machine process. Higher number means " "lower priority." msgstr "" #: glade/qemulauncher.glade:4104 msgid "" "Open a panel for manipulating run time options of the emulator. Requires " "Qemuctl to be installed." msgstr "" #: glade/qemulauncher.glade:4105 msgid "Provide a control panel" msgstr "" #: glade/qemulauncher.glade:4118 msgid "" "Do not start CPU at startup. You will need to enter 'c' in the monitor to " "start it." msgstr "" #: glade/qemulauncher.glade:4119 msgid "Start in stopped state" msgstr "" #: glade/qemulauncher.glade:4132 msgid "Output log in '/tmp/qemu.log' file." msgstr "" #: glade/qemulauncher.glade:4133 msgid "Turn on logging" msgstr "" #: glade/qemulauncher.glade:4166 msgid "Show generated host assembly code for each compiled TB." msgstr "" #: glade/qemulauncher.glade:4176 msgid "Show target assembly code for each compiled TB." msgstr "" #: glade/qemulauncher.glade:4189 msgid "Show micro ops for each compiled TB (only usable if 'in_asm' is used)." msgstr "" #: glade/qemulauncher.glade:4202 msgid "Show micro ops after optimization for each compiled TB." msgstr "" #: glade/qemulauncher.glade:4215 msgid "Show interrupts and exceptions in short format." msgstr "" #: glade/qemulauncher.glade:4228 msgid "Show trace before each executed TB (lots of logs)." msgstr "" #: glade/qemulauncher.glade:4241 msgid "Show CPU state before bloc translation." msgstr "" #: glade/qemulauncher.glade:4254 msgid "Show protected mode far calls, returns, and exceptions." msgstr "" #: glade/qemulauncher.glade:4267 msgid "What to log" msgstr "" #: glade/qemulauncher.glade:4297 msgid "" "Do not use accelerator module. Everything will work as usual but will be " "slower." msgstr "" #: glade/qemulauncher.glade:4298 msgid "Disable" msgstr "" #: glade/qemulauncher.glade:4311 msgid "" "Use accelerator module in standard mode. Makes no difference if the module " "is not available." msgstr "" #: glade/qemulauncher.glade:4312 msgid "Enable" msgstr "" #: glade/qemulauncher.glade:4328 msgid "" "Use accelerator module in full virtualization mode. It is the fastest, but " "does not work with all guest operating systems. Makes no difference if the " "module is not available." msgstr "" #: glade/qemulauncher.glade:4329 msgid "Full" msgstr "" #: glade/qemulauncher.glade:4349 msgid "Acceleration" msgstr "" #: glade/qemulauncher.glade:4396 msgid "Start with a previously saved virtual machine state." msgstr "" #: glade/qemulauncher.glade:4409 msgid "" "Enter additional arguments here as they would be entered on the command line." msgstr "" #: glade/qemulauncher.glade:4424 msgid "Additional arguments:" msgstr "" #: glade/qemulauncher.glade:4437 msgid "Load state at startup:" msgstr "" #: glade/qemulauncher.glade:4468 msgid "Monitor device:" msgstr "" #: glade/qemulauncher.glade:4477 msgid "" "Redirect monitor to a host device. The default device is 'vc' in graphical " "mode and 'stdio' in non graphical mode." msgstr "" #: glade/qemulauncher.glade:4504 msgid "Emulator" msgstr "" #: glade/qemulauncher.glade:4530 msgid "Exit application." msgstr "" #: glade/qemulauncher.glade:4546 msgid "Save this configuration." msgstr "" #: glade/qemulauncher.glade:4555 msgid "Delete this configuration." msgstr "" #: glade/qemulauncher.glade:4569 msgid "Run with this configuration." msgstr "" #: glade/qemulauncher.glade:4598 msgid "_Launch" msgstr "" #: glade/qemulauncher.glade:4636 msgid "Configurations" msgstr "" #: glade/qemulauncher.glade:4659 msgid "" "Path to executable file of utility used for controling run time options. " "This is optional." msgstr "" #: glade/qemulauncher.glade:4674 msgid "Path to executable file used for disk image creation." msgstr "" #: glade/qemulauncher.glade:4689 msgid "Path to main executable file of the emulator." msgstr "" #: glade/qemulauncher.glade:4704 msgid "Default directory used for storing disk images, etc." msgstr "" #: glade/qemulauncher.glade:4717 msgid "Run this command before launching emulator." msgstr "" #: glade/qemulauncher.glade:4794 msgid "Pre-launch command:" msgstr "" #: glade/qemulauncher.glade:4808 msgid "Path to 'qemuctl':" msgstr "" #: glade/qemulauncher.glade:4821 msgid "Path to 'qemu-img':" msgstr "" #: glade/qemulauncher.glade:4835 msgid "Path to 'qemu':" msgstr "" #: glade/qemulauncher.glade:4849 msgid "Data directory:" msgstr "" #: glade/qemulauncher.glade:4873 msgid "Use this configuration but do not save to disk." msgstr "" #: glade/qemulauncher.glade:4883 msgid "Cancel changes." msgstr "" #: glade/qemulauncher.glade:4896 msgid "Apply configuration and save to disk." msgstr "" #: glade/qemulauncher.glade:4920 msgid "Launcher settings" msgstr "" #: glade/qemulauncher.glade:4966 msgid "About" msgstr "" #: glade/qemulauncher.glade:4981 msgid "Create disk image" msgstr "" #: glade/qemulauncher.glade:4997 msgid "" "Native format. Supports optional AES encryption and zlib based compression." msgstr "" #: glade/qemulauncher.glade:4998 msgid "Create empty QCOW2 image" msgstr "" #: glade/qemulauncher.glade:5011 msgid "" "This format has the advantage of being simple and easily exportable to all " "other emulators." msgstr "" #: glade/qemulauncher.glade:5012 msgid "Create empty raw image" msgstr "" #: glade/qemulauncher.glade:5026 msgid "Create a new QCOW image from an existing raw disk image." msgstr "" #: glade/qemulauncher.glade:5027 msgid "Create QCOW2 image from a raw image" msgstr "" #: glade/qemulauncher.glade:5041 msgid "" "Create a new QCOW image from a VMware version 3 and 4 compatible disk image." msgstr "" #: glade/qemulauncher.glade:5042 msgid "Create QCOW2 image from a VMware image" msgstr "" #: glade/qemulauncher.glade:5057 msgid "Create QCOW2 image form a QCOW image" msgstr "" #: glade/qemulauncher.glade:5086 msgid "Location a new disk image will be created in." msgstr "" #: glade/qemulauncher.glade:5101 msgid "Create a new disk image from this image." msgstr "" #: glade/qemulauncher.glade:5113 msgid "Name of a new disk image." msgstr "" #: glade/qemulauncher.glade:5158 msgid "New image location:" msgstr "" #: glade/qemulauncher.glade:5171 msgid "New image name:" msgstr "" #: glade/qemulauncher.glade:5184 msgid "Original image:" msgstr "" #: glade/qemulauncher.glade:5215 msgid "New image size (MB):" msgstr "" #: glade/qemulauncher.glade:5225 msgid "Size of a new disk image in megabytes." msgstr "" #: glade/qemulauncher.glade:5268 msgid "Close this window." msgstr "" #: glade/qemulauncher.glade:5278 msgid "Create and use this disk image." msgstr "" #: glade/qemulauncher.glade:5298 msgid "Question" msgstr "" #: glade/qemulauncher.glade:5375 msgid "Warning" msgstr ""