Skip to content

Commit

Permalink
Add dmg building
Browse files Browse the repository at this point in the history
  • Loading branch information
xylix committed Jan 27, 2020
1 parent eca1c03 commit 3657247
Show file tree
Hide file tree
Showing 3 changed files with 147 additions and 1 deletion.
7 changes: 6 additions & 1 deletion aw.spec
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ awa_location = "aw-watcher-afk/"
aww_location = "aw-watcher-window/"

icon = aw_qt_location + 'media/logo/logo.ico'
macos_icon = aw_qt_location + 'media/logo/icon.icns'
block_cipher = None

extra_pathex = []
Expand Down Expand Up @@ -186,8 +187,12 @@ if platform.system() == "Darwin":
awa_coll,
aws_coll,
name="ActivityWatch.app",
icon=icon,
icon=macos_icon,
bundle_identifier="ActivityWatch",
info_plist={"CFBundleExecutable": "MacOS/aw-qt",
"CFBundleShortVersionString": aw_core.__about__.__version__,
"CFBundleVersion": aw_core.__about__.__version__ })
import subprocess
subprocess.run("dmgbuild -s config/dmgbuild-settings.py dist/ActivityWatch.app dist/ActivityWatch.dmg", shell=True)
# dmgbuild -s dmgbuild-settings.py dist/ActivityWatch.app dist/ActivityWatch.dmg

140 changes: 140 additions & 0 deletions dmgbuild-settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

import biplist
import os.path

# Use like this: dmgbuild -s settings.py "Test Volume" test.dmg

# You can actually use this file for your own application (not just TextEdit)
# by doing e.g.
#
# dmgbuild -s settings.py -D app=/path/to/My.app "My Application" MyApp.dmg

# .. Useful stuff ..............................................................

application = defines.get('app', 'dist/ActivityWatch.app')
appname = os.path.basename(application)

def icon_from_app(app_path):
plist_path = os.path.join(app_path, 'Contents', 'Info.plist')
plist = biplist.readPlist(plist_path)
icon_name = plist['CFBundleIconFile']
icon_root,icon_ext = os.path.splitext(icon_name)
if not icon_ext:
icon_ext = '.icns'
icon_name = icon_root + icon_ext
return os.path.join(app_path, 'Contents', 'Resources', icon_name)

# .. Basics ....................................................................

# Uncomment to override the output filename
# filename = 'test.dmg'

# Uncomment to override the output volume name
# volume_name = 'Test'

# Volume format (see hdiutil create -help)
format = defines.get('format', 'UDBZ')

# Volume size
size = defines.get('size', None)

# Files to include
files = [ application ]

# Symlinks to create
symlinks = { 'Applications': '/Applications' }

# Volume icon
#
# You can either define icon, in which case that icon file will be copied to the
# image, *or* you can define badge_icon, in which case the icon file you specify
# will be used to badge the system's Removable Disk icon
#
#icon = '/path/to/icon.icns'
badge_icon = icon_from_app(application)

# Where to put the icons
icon_locations = {
appname: (140, 120),
'Applications': (500, 120)
}

show_status_bar = False
show_tab_view = False
show_toolbar = False
show_pathbar = False
show_sidebar = False
sidebar_width = 180

# Window position in ((x, y), (w, h)) format
window_rect = ((100, 100), (640, 280))

default_view = 'icon-view'

show_icon_preview = False

# Set these to True to force inclusion of icon/list view settings (otherwise
# we only include settings for the default view)
include_icon_view_settings = 'auto'
include_list_view_settings = 'auto'

# .. Icon view configuration ...................................................

arrange_by = None
grid_offset = (0, 0)
grid_spacing = 100
scroll_position = (0, 0)
label_pos = 'bottom' # or 'right'
text_size = 16
icon_size = 128

# .. List view configuration ...................................................

# Column names are as follows:
#
# name
# date-modified
# date-created
# date-added
# date-last-opened
# size
# kind
# label
# version
# comments
#
list_icon_size = 16
list_text_size = 12
list_scroll_position = (0, 0)
list_sort_by = 'name'
list_use_relative_dates = True
list_calculate_all_sizes = False,
list_columns = ('name', 'date-modified', 'size', 'kind', 'date-added')
list_column_widths = {
'name': 300,
'date-modified': 181,
'date-created': 181,
'date-added': 181,
'date-last-opened': 181,
'size': 97,
'kind': 115,
'label': 100,
'version': 75,
'comments': 300,
}

list_column_sort_directions = {
'name': 'ascending',
'date-modified': 'descending',
'date-created': 'descending',
'date-added': 'descending',
'date-last-opened': 'descending',
'size': 'descending',
'kind': 'ascending',
'label': 'ascending',
'version': 'ascending',
'comments': 'ascending',
}

1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# Currently use `pip install https://github.com/pyinstaller/pyinstaller/tarball/develop`
# To install develop version of pyinstaller which has multi-bundles fixed
pyinstaller==4.0.dev0+55c8855d9d
dmgbuild

0 comments on commit 3657247

Please sign in to comment.