Giter Club home page Giter Club logo

winmin-tools's Introduction

Winmin Tools

Winmin is a set of scripts and tools for installing, managing, and running Windows on Linux applications using libvirt virtual machines.

Build Dependencies

  • python3

Building

Build and install with:

$ meson build
$ ninja -C build install

Runtime Dependencies

  • python3
  • python3-magic
  • python-is-python3
  • libvirt-clients
  • libvirt-daemon-system
  • virtinst
  • samba
  • winmin-viewer

Setup

In order to use Winmin, you need to set up a base VM using winmin-setup. To access the spice socket of the guest VM, the user must be part of the kvm group. This can be added using the following command.

$ sudo usermod -aG $USER kvm

In order to interact with the guest serial port, the user must be part of the tty group. This can be added using the following command.

$ sudo usermod -aG $USER tty

You may need to logout or reboot in order for group changes to take effect.

In order to transfer files between the host and guest, a samba server must be set up. To set this up, add the following to the end of /etc/samba/smb.conf.

[winmin]
  comment = VM Filesystem
  path = /
  browseable = yes
  read only = no

After changing the samba config, add an smb account for your user.

$ sudo smbpasswd -a $USER

Then restart the samba service.

$ sudo systemctl restart smbd

Enable the service if not automatically enabled

$ sudo systemctl enable smbd

Running

winmin-install

Installs a package given an exe or msi file. This will create a new vm with the base created using winmin-setup as a backing file. The --web flag will open a link in the guest's default web browser where a user can manually download an installer (This is useful for applications that require sign-in to download).

Usage

winmin-install [-h] [--web] input shortname

Examples

winmin-install ./vs_community.exe visualstudiocommunity
winmin-install --web https://office.com/ ms-office

winmin-yml-install

This tool installs a package given a Winmin .yaml package file. This tool also automatically creates .desktop files for the packages specefied within the .yaml files.

Usage

winmin-yml-install [-h] input

Examples

winmin-yml-install ./ms-office.yaml

winmin-run

This tool runs an installed application in the specified Winmin VM. By default, the VM is destroyed once its window is closed. Using the --save flag changes this so the VM is saved instead (Saving takes a longer time, and attempting to open an application while its VM is being saved will not work). This tool can be run with input file.

Usage

winmin-run [-h] [--save] vm program name [input]

Examples

winmin-run winmin-msoffice Word Word ./File.docx
winmin-run winmin-msoffice Outlook Outlook --save

TODO

  • Add direct binding to libvirt virtual machines using the python libvirt API
  • Add a yaml file generator similar to that of winget
  • Fix install file logic in winmin-yml-install
  • Add options for more descriptive .desktop files in .yaml files
  • Add and test arument support (other than input files)

winmin-tools's People

Contributors

vlinkz avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.