wwine 0.4 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (7) hide show
  1. checksums.yaml +4 -4
  2. data/COPYING +12 -14
  3. data/README.md +20 -0
  4. data/wwine +158 -26
  5. data/wwine.1 +12 -3
  6. metadata +4 -4
  7. data/README +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ddfd32972c75b495e5bbbbe50ae199142e9f9d362602fca83f2c41264e894690
4
- data.tar.gz: 8685c5b8731666a8ff21c263278c1714c78f9d71220d452241dcbb3a79365e8f
3
+ metadata.gz: 7894308cde683c0f748cb6d99aff493061300abc648b593d5b660b0ebe3a8df6
4
+ data.tar.gz: f93f04f10160712750868fb4f78499c0d1cd825fb741352265bc3b7a267b41f6
5
5
  SHA512:
6
- metadata.gz: 684934489489f1d4cd122efe06c08b69a9733c556fb035b09f3d7a396b15744e8b6bace63820b24eee7cc55bd0feb034f26bf03d34cc6ef33a3bd467e76172a8
7
- data.tar.gz: 2d10e6dcc66feb60791f0f45a720f93d3ecf1ec7fcfece501074512a746d873dd14512470f9730c1a66798d0d8bcb7e5de75672098e61c3d9f1b9c1febe2a5ef
6
+ metadata.gz: '068d62047e7c777409859e99758d372cfbf2be563956a88e738ee3f0aef2a103b1096686e2d9cd304e61fe12543bc22a13fd391d6fabb07607687af17ef1e9ed'
7
+ data.tar.gz: 840ac03026a7f696950d0c2f31fb8e07dcc55bd056d8ff65c1dcfb52d83335ffbaaa106e708fcf6a6f6d97b7406d6342cfe88e198d6ce6f878e66cf0279723c4
data/COPYING CHANGED
@@ -1,12 +1,11 @@
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 3, 29 June 2007
1
3
 
2
- GNU GENERAL PUBLIC LICENSE
3
- Version 3, 29 June 2007
4
-
5
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
4
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
6
5
  Everyone is permitted to copy and distribute verbatim copies
7
6
  of this license document, but changing it is not allowed.
8
7
 
9
- Preamble
8
+ Preamble
10
9
 
11
10
  The GNU General Public License is a free, copyleft license for
12
11
  software and other kinds of works.
@@ -69,7 +68,7 @@ patents cannot be used to render the program non-free.
69
68
  The precise terms and conditions for copying, distribution and
70
69
  modification follow.
71
70
 
72
- TERMS AND CONDITIONS
71
+ TERMS AND CONDITIONS
73
72
 
74
73
  0. Definitions.
75
74
 
@@ -77,7 +76,7 @@ modification follow.
77
76
 
78
77
  "Copyright" also means copyright-like laws that apply to other kinds of
79
78
  works, such as semiconductor masks.
80
-
79
+
81
80
  "The Program" refers to any copyrightable work licensed under this
82
81
  License. Each licensee is addressed as "you". "Licensees" and
83
82
  "recipients" may be individuals or organizations.
@@ -510,7 +509,7 @@ actual knowledge that, but for the patent license, your conveying the
510
509
  covered work in a country, or your recipient's use of the covered work
511
510
  in a country, would infringe one or more identifiable patents in that
512
511
  country that you have reason to believe are valid.
513
-
512
+
514
513
  If, pursuant to or in connection with a single transaction or
515
514
  arrangement, you convey, or propagate by procuring conveyance of, a
516
515
  covered work, and grant a patent license to some of the parties
@@ -619,9 +618,9 @@ an absolute waiver of all civil liability in connection with the
619
618
  Program, unless a warranty or assumption of liability accompanies a
620
619
  copy of the Program in return for a fee.
621
620
 
622
- END OF TERMS AND CONDITIONS
621
+ END OF TERMS AND CONDITIONS
623
622
 
624
- How to Apply These Terms to Your New Programs
623
+ How to Apply These Terms to Your New Programs
625
624
 
626
625
  If you develop a new program, and you want it to be of the greatest
627
626
  possible use to the public, the best way to achieve this is to make it
@@ -646,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
646
645
  GNU General Public License for more details.
647
646
 
648
647
  You should have received a copy of the GNU General Public License
649
- along with this program. If not, see <http://www.gnu.org/licenses/>.
648
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
650
649
 
651
650
  Also add information on how to contact you by electronic and paper mail.
652
651
 
@@ -665,12 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
665
664
  You should also get your employer (if you work as a programmer) or school,
666
665
  if any, to sign a "copyright disclaimer" for the program, if necessary.
667
666
  For more information on this, and how to apply and follow the GNU GPL, see
668
- <http://www.gnu.org/licenses/>.
667
+ <https://www.gnu.org/licenses/>.
669
668
 
670
669
  The GNU General Public License does not permit incorporating your program
671
670
  into proprietary programs. If your program is a subroutine library, you
672
671
  may consider it more useful to permit linking proprietary applications with
673
672
  the library. If this is what you want to do, use the GNU Lesser General
674
673
  Public License instead of this License. But first, please read
675
- <http://www.gnu.org/philosophy/why-not-lgpl.html>.
676
-
674
+ <https://www.gnu.org/licenses/why-not-lgpl.html>.
data/README.md ADDED
@@ -0,0 +1,20 @@
1
+ # wwine - a wrapper for wine
2
+
3
+ wwine (wrapped wine) is a wrapper for the Windows compatibility layer
4
+ [wine](http://www.winehq.com/). It wraps various flavours of wine into a
5
+ single unified interface, complete with full bottle support for all of them.
6
+
7
+ It integrates well with how the various flavours mange their bottles, so for
8
+ instance applications isntalled using crossover will be manageable through the
9
+ usual crossover interface.
10
+
11
+ For vanilla wine, lutris and PlayOnLinux it uses WINEPREFIX to achieve bottle
12
+ support, creating bottles as ~/.wwinebottles/[BOTTLE NAME]
13
+
14
+ It supports the following flavours of wine:
15
+
16
+ - [vanilla wine (winehq)](http://www.winehq.com/)
17
+ - [wine-staging](https://github.com/wine-staging/wine-staging)
18
+ - [Crossover](https://codeweavers.com/)
19
+ - [wine from lutris](https://lutris.net/)
20
+ - [wine from PlayOnLinux](https://www.playonlinux.com/en/)
data/wwine CHANGED
@@ -19,8 +19,10 @@
19
19
  require 'getoptlong'
20
20
  # To read info for --debuginfo
21
21
  require 'open3'
22
+ # Needed to make symlinks
23
+ require 'fileutils'
22
24
  # Application version
23
- $version = '0.4'
25
+ $version = '0.5'
24
26
  # The wine flavour to use
25
27
  $wine = nil
26
28
  # The bottle to use
@@ -58,8 +60,10 @@ def killWine (signal)
58
60
  end
59
61
  # Open a pipe to ps to read processes
60
62
  wines = IO.popen('ps uxw')
61
- # True if we have killed something
62
- killed = false
63
+ # The result of our ps parsing
64
+ wineResult = []
65
+ # The length of the "wine" name, used to format the output well
66
+ wineLength = 10
63
67
  # The name of the signal being sent
64
68
  sigName = 'SIGTERM'
65
69
  # Get an integer version of signal parameter
@@ -85,8 +89,6 @@ def killWine (signal)
85
89
  if !dryRun
86
90
  print 'Sending '+sigName+' to the following processes:'+"\n\n"
87
91
  end
88
- format = "%-10s %-12s %-8s %-20s\n"
89
- printf(format,'Wine','Bottle','PID','Command')
90
92
  # Go through each line in the 'ps' output
91
93
  wines.each do |line|
92
94
  # True if we *require* /proc to be read for this process.
@@ -149,19 +151,36 @@ def killWine (signal)
149
151
  elsif $bottle && $bottle != extra['bottle']
150
152
  next
151
153
  end
154
+ resolvedWine = resolveWine(extra['wine'])
152
155
  # Output information
153
- printf(format,extra['wine'],extra['bottle'],pid,name)
156
+ wineResult.push({
157
+ 'wine' => resolvedWine,
158
+ 'bottle' => extra['bottle'],
159
+ 'pid' => pid,
160
+ 'name' => name
161
+ })
162
+
163
+ if resolvedWine.length > wineLength
164
+ wineLength = resolvedWine.length
165
+ end
166
+ end
167
+ # The format of the output
168
+ format = "%-"+wineLength.to_s+"s %-12s %-8s %-20s\n"
169
+ # Header
170
+ printf(format,'Wine','Bottle','PID','Command')
171
+ # Display or send signals to each entry
172
+ wineResult.each do |entry|
173
+ printf(format,entry['wine'],entry['bottle'],entry['pid'],entry['name'])
154
174
  # Send SIGTERM (or output information if in dryRun mode)
155
175
  if !dryRun
156
176
  begin
157
- Process.kill(signal,pid.to_i)
158
- rescue
159
- puts('Error while attempting to send signal to '+pid+': '+$!)
177
+ Process.kill(signal,entry['pid'].to_i)
178
+ rescue
179
+ puts('Error while attempting to send signal to '+entry['pid']+': '+$!)
160
180
  end
161
181
  end
162
- killed = true
163
182
  end
164
- if ! killed
183
+ if wineResult.length < 0
165
184
  puts 'No wine processes found.'
166
185
  end
167
186
  end
@@ -180,27 +199,32 @@ def getFromEnviron(path)
180
199
  env[key] = value
181
200
  end
182
201
 
183
- if env['CX_BOTTLE']
184
- info['bottle'] = env['CX_BOTTLE']
185
- elsif env['WINEPREFIX']
186
- info['bottle'] = File.basename(env['WINEPREFIX'])
187
- elsif env['__WWINE_INT_XBOTTLE']
188
- info['bottle'] = env['__WWINE_INT_XBOTTLE']
189
- else
190
- info['bottle'] = '(default)'
191
- end
192
- if env['CX_ROOT'] && env['CX_ROOT'].match(/cxoffice/)
202
+ if env['__WWINE_INT_XWINE']
203
+ info['wine'] = env['__WWINE_INT_XWINE']
204
+ elsif env['CX_ROOT'] && env['CX_ROOT'].match(/cxoffice/)
193
205
  info['wine'] = 'crossover'
194
206
  elsif env['CX_ROOT'] && env['CX_ROOT'].match(/cxgames/)
195
207
  info['wine'] = 'cxgames'
196
- elsif env['__WWINE_INT_XWINE']
197
- info['wine'] = env['__WWINE_INT_XWINE']
208
+ elsif env['WINE']
209
+ info['wine'] = env['WINE']
198
210
  elsif env['WINELOADER']
199
211
  info['wine'] = 'wine'
200
212
  elsif info['bottle'] == '.wine-pipelight'
201
213
  info['wine'] = 'pipelight'
202
214
  info['bottle'] = '(pipelight)'
203
215
  end
216
+ if env['CX_BOTTLE']
217
+ info['bottle'] = env['CX_BOTTLE']
218
+ elsif env['__WWINE_INT_XBOTTLE']
219
+ info['bottle'] = env['__WWINE_INT_XBOTTLE']
220
+ elsif env['WINEPREFIX']
221
+ info['bottle'] = File.basename(env['WINEPREFIX'])
222
+ if info['bottle'] == 'pfx' && info['wine'] =~ /proton/i
223
+ info['bottle'] = File.basename(File.dirname(ENV['WINEPREFIX']))
224
+ end
225
+ else
226
+ info['bottle'] = '(default)'
227
+ end
204
228
  end
205
229
  return info
206
230
  end
@@ -360,6 +384,8 @@ def writeWrapper (targetFile, wwineCommand, otherCommand, cwd, wwineInfo, args,
360
384
  file.puts("\t"+'export WINESERVER='+shellQuote(path+'/bin/wineserver'))
361
385
  file.puts("\t"+'export WINELOADER='+shellQuote(path+'/bin/wine'))
362
386
  file.puts("\t"+'export WINEDLLPATH='+shellQuote(path+'/lib/wine'))
387
+ elsif wwineInfo['Wine'] =~ /^proton/
388
+ file.puts("\t"+'export STEAM_COMPAT_DATA_PATH='+shellQuote(ENV['STEAM_COMPAT_DATA_PATH']))
363
389
  elsif wwineInfo['Wine'] == 'wine' || wineprefix
364
390
  if ENV['WINEDEBUG'] != nil
365
391
  file.puts("\t"+"export WINEDEBUG="+shellQuote(ENV['WINEDEBUG']))
@@ -669,7 +695,7 @@ def parseWwineDataV1 (rawData)
669
695
  info['Wine'] = info['Cxinstalldir']
670
696
  end
671
697
  end
672
-
698
+
673
699
  cmd = []
674
700
 
675
701
  unquoteShellArray(rawData['Cmd'],cmd)
@@ -868,7 +894,7 @@ end
868
894
  def getCXVersionsFrom (source,wantString = false)
869
895
  cxVer = nil
870
896
  cxwVer = nil
871
- if source != nil
897
+ if source != nil
872
898
  begin
873
899
  # Store the binfile for use later
874
900
  binFile = source[0]
@@ -1011,6 +1037,12 @@ def listWines(debug = false)
1011
1037
  end
1012
1038
  end
1013
1039
 
1040
+ protons = getProtons()
1041
+ protons.each do |entry,path|
1042
+ version = entry.sub(/^proton-/,'')
1043
+ printf(outFormat,'proton-'+version,getWineVersion(path+'/dist/bin/wine'))
1044
+ end
1045
+
1014
1046
  if $wine != nil && debug
1015
1047
  version = nil
1016
1048
  if File.directory?($wine)
@@ -1044,7 +1076,7 @@ def handleException(ex)
1044
1076
  end
1045
1077
 
1046
1078
  # Purpose: Get parameters for wine
1047
- def getWineWithParams (wine,bottle, missingIsFatal = true, playOnLinux = false)
1079
+ def getWineWithParams (wine,bottle, missingIsFatal = true, playOnLinux = false, proton = false)
1048
1080
  final = []
1049
1081
  possibleWines = []
1050
1082
  if wine =~ /^wine(64|32|-unstable(32|64)?)$/
@@ -1326,6 +1358,100 @@ def getCustomwithParams(wine,bottle, type = 'POL', missingIsFatal = true, return
1326
1358
  return getWineWithParams(detectedWine,bottle,missingIsFatal,polMode)
1327
1359
  end
1328
1360
 
1361
+ # Purpose: Get parameters for Proton
1362
+ def getProtonWithParams(wine,bottle, missingIsFatal = true)
1363
+ command = []
1364
+ protons = getProtons()
1365
+ if !protons[wine]
1366
+ if missingIsFatal
1367
+ puts("Could not find a proton version matching \""+wine+"\"")
1368
+ exit(1)
1369
+ else
1370
+ return nil
1371
+ end
1372
+ end
1373
+
1374
+ if bottle == nil
1375
+ bottle = 'wwine-proton-default-bottle'
1376
+ end
1377
+
1378
+ runtimeWrapper = ENV['HOME']+'/.steam/root/ubuntu12_32/steam-runtime/run.sh'
1379
+
1380
+ if ENV.has_key?('STEAM_RUNTIME') && ENV['STEAM_RUNTIME'] == "0"
1381
+ vputs(V_DBG,"Skipping Steam runtime for proton because of the STEAM_RUNTIME env var")
1382
+ elsif !File.exists?(runtimeWrapper)
1383
+ vputs(V_DBG, "Did not find Steam runtime wrapper script, skipping steam runtime")
1384
+ else
1385
+ command.push(runtimeWrapper)
1386
+ end
1387
+
1388
+ command.push( protons[wine]+'/proton','run')
1389
+
1390
+ bottleRoot = ENV['HOME']+'/.wwinebottles/'
1391
+ if !File.exists?(bottleRoot)
1392
+ vputs(V_INFO,bottleRoot+': does not exist, creating')
1393
+ begin
1394
+ Dir.mkdir(bottleRoot)
1395
+ rescue SystemCallError
1396
+ puts('Failed to create directory "'+bottleRoot+": "+$!)
1397
+ puts('Unable to continue.')
1398
+ exit(1)
1399
+ end
1400
+ end
1401
+ if !File.exists?(bottleRoot+bottle)
1402
+ vputs(V_INFO,bottleRoot+bottle+': does not exist, creating')
1403
+ begin
1404
+ Dir.mkdir(bottleRoot)
1405
+ rescue SystemCallError
1406
+ puts('Failed to create directory "'+bottleRoot+": "+$!)
1407
+ puts('Unable to continue.')
1408
+ exit(1)
1409
+ end
1410
+ end
1411
+ # Proton always uses /pfx, we make that a symlink to the base bottle
1412
+ if !File.exists?(bottleRoot+bottle+'/pfx')
1413
+ FileUtils.ln_s(bottleRoot+bottle,bottleRoot+bottle+'/pfx')
1414
+ end
1415
+ # Proton uses STEAM_COMPAT_DATA_PATH to point to the bottle location
1416
+ envPut('STEAM_COMPAT_DATA_PATH',bottleRoot+bottle)
1417
+
1418
+ # Disable wineArch support. Proton uses its own.
1419
+ $wineArch = nil
1420
+
1421
+ vputs(V_DBG,'Detected proton: '+command.join(' '))
1422
+ return command
1423
+ end
1424
+
1425
+ # Purpose: Get a list of installed proton versions
1426
+ def getProtons ()
1427
+ # Proton gets installed in the same "steam library" directory that the first game
1428
+ # that used said version of Proton is installed to. Thus we need to parse out where
1429
+ # all of Steam's library directories are to be able to produce a complete list.
1430
+ dirs = [ ENV['HOME']+'/.steam/root/SteamApps/common' ]
1431
+ steamConfigFile = ENV['HOME']+'/.steam/root/config/config.vdf'
1432
+ if File.exists?(steamConfigFile)
1433
+ source = File.open(steamConfigFile)
1434
+ source.each("\n") do |entry|
1435
+ if entry =~ /\s*\"BaseInstallFolder_\d+\"\s*/
1436
+ dir = entry.sub(/^\s*\"BaseInstallFolder_\d+\"\s*\"(.*)\"/,'\1').chomp
1437
+ dirs.push(dir+'/steamapps/common')
1438
+ end
1439
+ end
1440
+ end
1441
+ protons = {}
1442
+ # Note: In the case of several identical proton versions we'll just use the last one
1443
+ # we find
1444
+ dirs.each do |entry|
1445
+ Dir.glob(entry+'/Proton*') do |instance|
1446
+ if File.executable?(instance+'/proton')
1447
+ version = instance.sub(/.*Proton\s+(\d+\.\d+).*/,'\1')
1448
+ protons['proton-'+version] = instance
1449
+ end
1450
+ end
1451
+ end
1452
+ return protons
1453
+ end
1454
+
1329
1455
  # Purpose: Detect which wine to use and get parameters for that one
1330
1456
  # Returns: type,cmd
1331
1457
  def getAutoWithParams (bottle, missingIsFatal = true, returnFlavour = false)
@@ -1397,6 +1523,8 @@ def runWine (wine,bottle,args)
1397
1523
  elsif wine =~ /^(pol|lutris)[-:]?/i
1398
1524
  realWine = wine.sub(/^(pol|lutris)[-:]?/i,'')
1399
1525
  cmd = getCustomwithParams(realWine,bottle,wine)
1526
+ elsif wine =~ /^proton-/
1527
+ cmd = getProtonWithParams(wine,bottle)
1400
1528
  else
1401
1529
  puts('Unknown --wine: '+wine)
1402
1530
  if File.directory?(wine)
@@ -1515,6 +1643,10 @@ def resolveWine(wine)
1515
1643
  if(map[wine])
1516
1644
  wine = map[wine]
1517
1645
  end
1646
+ if wine =~ /\.local\/share\/lutris/
1647
+ remapped = wine.sub!(/^.*\.local\/share\/lutris\/runners\/wine\/([^\/]+).*/,'\1')
1648
+ return 'lutris-'+remapped
1649
+ end
1518
1650
  return wine
1519
1651
  end
1520
1652
 
data/wwine.1 CHANGED
@@ -1,5 +1,5 @@
1
1
  .IX Title "WWINE 1"
2
- .TH WWINE 1 "2018-04-21" "wwine 0.4" ""
2
+ .TH WWINE 1 "2018-08-28" "wwine 0.5" ""
3
3
  .\" For nroff, turn off justification. Always turn off hyphenation; it makes
4
4
  .\" way too many mistakes in technical documents.
5
5
  .if n .ad l
@@ -11,7 +11,7 @@ wwine \- a simple wine(1) wrapper
11
11
  wwine \fI(\s-1WWINE PARAMETERS\s0)\fR \fI\s-1PROGRAM\s0\fR \*(-- \fI[\s-1PROGRAM ARGUMENTS\s0]\fR
12
12
  .SH "DESCRIPTION"
13
13
  .IX Header "DESCRIPTION"
14
- \&\fBwwine\fR is a a \fIwine\fR\|(1) wrapper. It wraps various flavours of wine
14
+ \&\fBwwine\fR is a a \fBwine\fR\|(1) wrapper. It wraps various flavours of wine
15
15
  (including vanilla wine and crossover) into a single
16
16
  unified interface, complete with full bottle support for all
17
17
  of them (including vanilla wine).
@@ -174,7 +174,7 @@ to enable wwine debugging output).
174
174
  .IX Item "--man"
175
175
  Show the manpage. Normally 'man wwine' would do, but when wwine is
176
176
  installed from a rubygem the wwine manpage isn't placed anywhere
177
- in \fIman\fR\|(1)'s path, this will autodetect its location and issue man
177
+ in \fBman\fR\|(1)'s path, this will autodetect its location and issue man
178
178
  directly on the wwine.1 file (and thus work even when 'man wwine'
179
179
  does not).
180
180
  .IP "\fB\-\-debuginfo\fR" 4
@@ -247,6 +247,15 @@ Regular wine. <http://www.winehq.org/>
247
247
  .IX Item "Crossover and Crossover Office/Games"
248
248
  The commercial Crossover release from Codeweavers, as well as the legacy
249
249
  versions \*(L"Crossover Office\*(R" and \*(L"Crossover Games\*(R". <http://www.codeweavers.com/>
250
+ .IP "\fBProton\fR (Steam Play)" 4
251
+ .IX Item "Proton (Steam Play)"
252
+ The wine version used by Steam Play to run Windows games in the native Steam
253
+ client. Note that this does not obey \-\-winearch or \-\-debug, since proton uses
254
+ its own builtin arch detection and debug method. <https://steampowered.com>
255
+ and <https://github.com/ValveSoftware/Proton>.
256
+ .IP "\fBLutris\fR" 4
257
+ .IX Item "Lutris"
258
+ Wine packages installed via Lutris. <https://lutris.net/>
250
259
  .IP "\fBPlayOnLinux\fR" 4
251
260
  .IX Item "PlayOnLinux"
252
261
  Wine packages installed via PlayOnLinux. <http://www.playonlinux.com/>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wwine
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.4'
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eskild Hustvedt
8
8
  autorequire:
9
9
  bindir: "."
10
10
  cert_chain: []
11
- date: 2018-04-21 00:00:00.000000000 Z
11
+ date: 2018-08-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: wwine is a a wine(1) wrapper. It wraps various flavours of wine (including
14
14
  vanilla wine and crossover) into a single unified interface, complete with full
@@ -21,7 +21,7 @@ extra_rdoc_files: []
21
21
  files:
22
22
  - "./wwine"
23
23
  - COPYING
24
- - README
24
+ - README.md
25
25
  - wwine
26
26
  - wwine.1
27
27
  homepage: http://random.zerodogg.org/wwine
@@ -44,7 +44,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
44
44
  version: '0'
45
45
  requirements: []
46
46
  rubyforge_project:
47
- rubygems_version: 2.7.6
47
+ rubygems_version: 2.7.7
48
48
  signing_key:
49
49
  specification_version: 4
50
50
  summary: wwine is a simple wine wrapper.
data/README DELETED
@@ -1,11 +0,0 @@
1
- wwine (wrapped wine) is a a wine wrapper. It wraps various flavours of wine
2
- (including vanilla wine and crossover office/games) into a single
3
- unified interface, complete with full bottle support for all
4
- of them (including vanilla wine).
5
-
6
- It integrates well with all flavours, so for instance applications
7
- installed using crossover will be managable through the usual crossover
8
- interface.
9
-
10
- For vanilla wine it uses WINEPREFIX to achieve bottle support,
11
- creating bottles as ~/.wwinebottles/[BOTTLE_NAME]