Skip to content

Commit

Permalink
Merge pull request #2 from gnunn1/master
Browse files Browse the repository at this point in the history
  • Loading branch information
psokol committed May 8, 2016
2 parents e6eacf6 + 662e3c3 commit c6ff097
Show file tree
Hide file tree
Showing 73 changed files with 20,878 additions and 5,422 deletions.
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@ __dummy.html
*.o
*.obj
*.zip
./terminix
/terminix
__test__library__
.vscode
backup
terminix.gresource
data/pkg/arch/pkg
data/pkg/arch/src
data/pkg/desktop/com.gexperts.Terminix.desktop
data/appdata/com.gexperts.Terminix.appdata.xml
*.pkg.tar.xz
*~
*.xdgapp
build/builddir
.xdg-app-builder
35 changes: 24 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ Terminix is a tiling terminal emulator which uses the VTE GTK+ 3 widget with the
* Transparent background
* Supports notifications when processes are completed out of view. Requires the Fedora notification patches for VTE

The application was written using GTK 3 and an effort was made to conform to Gnome Human Interface Guidelines (HIG). As a result, it does use CSD (i.e. the GTK HeaderBar) though it can be disabled if necessary. Other then Gnome, only Unity and has been tested officially though users have had success with other desktop environments.
The application was written using GTK 3 and an effort was made to conform to Gnome Human Interface Guidelines (HIG). As a result, it does use CSD (i.e. the GTK HeaderBar) though it can be disabled if necessary. Other than Gnome, only Unity and has been tested officially though users have had success with other desktop environments.

At this point in time the application should be considered mid alpha and has been tested to varying degrees with the following distros:
At this point in time the application should be considered beta and has been tested to varying degrees with the following distros:

* Arch Linux (primary test platform, works)
* Ubuntu 16.04 (secondary, works)
Expand All @@ -32,36 +32,49 @@ At this point in time the application should be considered mid alpha and has bee

Terminix requires the following libraries to be installed in order to run:
* GTK 3.14 or later
* GTK VTE Widget 0.42
* GTK VTE 0.42 or later
* Dconf
* GSettings
* [Nautilus-Python](https://wiki.gnome.org/Projects/NautilusPython) (Required For Nautilus integration)

### Localization

Terminix is localized using Weblate, please visit the Weblate hosted [Terminix translations site](https://hosted.weblate.org/projects/terminix/translations) in order to assist with translations, pease do not submit direct pull requests to this repository for translations.

### Building

Terminix is written in D and GTK 3 using the gtkd framework. This project uses dub to manage the build process including fetching the dependencies, thus there is no need to install dependencies manually. The only thing you need to install to build the application is the D tools (DMD and Phobos) along with dub itself.
Terminix is written in D and GTK 3 using the gtkd framework. This project uses dub to manage the build process including fetching the dependencies, thus there is no need to install dependencies manually. The only thing you need to install to build the application is the D tools (DMD and Phobos) along with dub itself. Note that D supports three compilers (DMD, GDC and LDC) and Terminix only supports DMD.

Once you have those installed, building the application is a one line command as follows:
Once you have those installed, compiling the application is a one line command as follows:

```
dub build --build=release
```

The application depends on various resources to function correctly, run sudo ./install.sh to compile and copy all of the resources to the correct locations. Note this has only been tested on Arch Linux, use with caution.
The application depends on various resources to function correctly, run sudo ./install.sh to build and copy all of the resources to the correct locations. Note this has only been tested on Arch Linux, use with caution.

#### Build Dependencies

Terminix depends on the following libraries as defined in dub.json:
* [gtkd](http://gtkd.org/) >= 3.2.2
* [gtkd](http://gtkd.org/) >= 3.3.0

### Install Terminix

Terminix is available in Arch Linux as the AUR package [terminix](https://aur.archlinux.org/packages/terminix), RPMs for Fedora 23 and CentOS 7 are available via the [OpenSUSE Build Service](https://software.opensuse.org/download.html?project=home%3Agnunn&package=terminix).
Terminix is available for the following distributions as a 64 bit application:

| Distribution | Package
|---|---|
|Arch|[AUR Terminix Package](https://aur.archlinux.org/packages/terminix)|
|Fedora|[COPR Repository](https://copr.fedorainfracloud.org/coprs/heikoada/terminix)|
|Cent OS 7.2|[EPEL Package via COPR](https://copr.fedorainfracloud.org/coprs/heikoada/terminix)|
|Ubuntu|[Not yet available](https://github.com/gnunn1/terminix/issues/25)|
|OpenSUSE|[Package Search](https://software.opensuse.org/package/terminix)|

For other 64 bit distros releases can be installed manually from the releases section by downloading terminix.zip and following these instructions:
For 64 bit distros where a package is not available, Terminix can be installed manually from the releases section by downloading terminix.zip and following these instructions:

```
sudo unzip terminix.zip -d /
glib-compile-schemas /usr/share/glib-2.0/schemas/
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
```

Note the project is actively looking for package maintainers, if you are interested in assuming this role for one or more distros please see [Issue #25](https://github.com/gnunn1/terminix/issues/25).
Expand All @@ -83,4 +96,4 @@ and then execute it:

```
sudo sh uninstall.sh
```
```
23 changes: 23 additions & 0 deletions build/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
### Building Terminix XDG-APP Bundle

This folder contains the scripts required to build Terminix as an XDG-APP bundle. XDG-APP allows desktop applications to be distributed independently of traditional Linux package managers, applications distributed in this way run in a sandboxed environment. Additional information on XDG-APP can be found [here](https://wiki.gnome.org/Projects/SandboxedApps).

The first step to building the Terminix XDG-APP Bundle is to install the xdg-app framework. This will vary by distribution, on Arch it is easily installed using the [xdg-app](https://aur.archlinux.org/packages/xdg-app) package from AUR as follows:

```yaourt xdg-app```

Once that is done you will need to install the Gnome and Freedesktop runtimes, this can be done by following the instructions on the [Gnome wiki](https://wiki.gnome.org/Projects/SandboxedApps#Gnome_sdk). The specific steps you need are as follows:
)
```
$ wget https://people.gnome.org/~alexl/keys/gnome-sdk.gpg
$ xdg-app --user remote-add gnome --gpg-key=gnome-sdk.gpg http://sdk.gnome.org/repo/
$ xdg-app --user install gnome org.gnome.Platform 3.20
$ xdg-app --user install gnome org.gnome.Sdk 3.20
$ xdg-app --user install gnome org.freedesktop.Platform 1.4
```
With all the dependencies in place, you can now build the bundle:

```
./build
```

14 changes: 14 additions & 0 deletions build/build
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#! /bin/sh

BUILD_DIR=builddir
JSON=terminix.json
REPO=$HOME/xdg-app-repos/terminix

echo "Removing build dir..."
rm -rf $BUILD_DIR

echo "Building with xdg-app-builder..."
xdg-app-builder --repo=$REPO $BUILD_DIR $JSON

echo "Creating bundle file..."
xdg-app build-bundle $REPO terminix.x86_64.xdgapp com.gexperts.Terminix master
13 changes: 13 additions & 0 deletions build/dmd-configure
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/sh

cat <<EOF >Makefile
all:
make -f posix.mak AUTO_BOOTSTRAP=1
install:
mkdir /app/bin
cp src/dmd /app/bin
echo -e "[Environment64]" > /app/bin/dmd.conf
echo -e "DFLAGS=-I/app/src/phobos -I/app/src/druntime/import -L-L/app/linux/release/64" >> /app/bin/dmd.conf
EOF
10 changes: 10 additions & 0 deletions build/druntime-configure
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/sh

cat <<EOF >Makefile
all:
make -f posix.mak DMD=/app/bin/dmd ROOT_OF_THEM_ALL=/app
install:
make -f posix.mak install DMD=/app/bin/dmd INSTALL_DIR=/app
EOF
10 changes: 10 additions & 0 deletions build/dub-configure
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/sh

cat <<EOF >Makefile
all:
/app/bin/dmd -ofbin/dub -w -version=DubUseCurl -Isource -L-L/app/linux/release/64/ -L-lphobos2 @build-files.txt
install:
cp bin/dub /app/bin
EOF
11 changes: 11 additions & 0 deletions build/phobos-configure
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/sh

cat <<EOF >Makefile
all:
echo "2.070" > VERSION
make -f posix.mak VERSION=VERSION DMD=/app/bin/dmd DRUNTIME_PATH=/app DMDEXTRAFLAGS=-I/app/src/druntime/import DRUNTIME=/app/linux/release/64/libdruntime.a ROOT_OF_THEM_ALL=/app CUSTOM_DRUNTIME=1
install:
make -f posix.mak install VERSION=VERSION DMD=/app/bin/dmd INSTALL_DIR=/app DRUNTIME_PATH=/app DRUNTIME=/app/linux/release/64/libdruntime.a DMDEXTRAFLAGS=-I/app/src/druntime/import CUSTOM_DRUNTIME=1
EOF
10 changes: 10 additions & 0 deletions build/terminix-configure
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/sh

cat <<EOF >Makefile
all:
LD_LIBRARY_PATH=/app/linux/release/64 dub build --build=release
install:
./install.sh /app
EOF
109 changes: 109 additions & 0 deletions build/terminix.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
{
"id": "com.gexperts.Terminix",
"version": "master",
"runtime": "org.gnome.Platform",
"runtime-version": "3.20",
"sdk": "org.gnome.Sdk",
"command": "terminix",
"tags": ["Terminal", "Tile"],
"cleanup-commands": ["rm -rf /app/lib",
"rm -rf /app/src",
"rm -rf /app/linux",
"rm -rf /app/share/nautilus-python",
"rm /app/bin/dmd",
"rm /app/bin/dmd.conf",
"rm /app/bin/dub",
"rm /app/*-LICENSE.txt"],
"finish-args": ["--filesystem=host",
"--share=ipc",
"--socket=x11",
"--socket=wayland",
"--socket=session-bus",
"--filesystem=~/.config/dconf:ro",
"--filesystem=xdg-run/dconf",
"--talk-name=ca.desrt.dconf",
"--env=DCONF_USER_CONFIG_DIR=.config/dconf"],
"modules": [
{
"name": "dmd",
"build-options": {
"build-args": ["--share=network"]
},
"sources": [
{
"type": "git",
"url": "http://github.com/D-Programming-Language/dmd",
"branch": "master"
},
{
"type": "file",
"path": "dmd-configure",
"dest-filename": "configure"
}
]
},
{
"name": "druntime",
"sources": [
{
"type": "git",
"url": "http://github.com/D-Programming-Language/druntime",
"branch": "master"
},
{
"type": "file",
"path": "druntime-configure",
"dest-filename": "configure"
}
]
},
{
"name": "phobos",
"sources": [
{
"type": "git",
"url": "http://github.com/D-Programming-Language/phobos",
"branch": "master"
},
{
"type": "file",
"path": "phobos-configure",
"dest-filename": "configure"
}
]
},
{
"name": "dub",
"sources": [
{
"type": "git",
"url": "http://github.com/D-Programming-Language/dub",
"branch": "master"
},
{
"type": "file",
"path": "dub-configure",
"dest-filename": "configure"
}
]
},
{
"name": "terminix",
"build-options": {
"build-args": ["--share=network"]
},
"sources": [
{
"type": "git",
"url": "http://github.com/gnunn1/terminix",
"branch": "master"
},
{
"type": "file",
"path": "terminix-configure",
"dest-filename": "configure"
}
]
}
]
}
38 changes: 38 additions & 0 deletions data/appdata/com.gexperts.Terminix.appdata.xml.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2016 Matthias Clasen -->
<component type="desktop">
<id type="desktop">com.gexperts.Terminix.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>MPL-2.0</project_license>
<name>Terminix</name>
<summary>A tiling terminal for GNOME</summary>
<description>
<p>
Terminix is a tiling terminal emulator.
</p>
<p>It lets you:</p>
<ul>
<li>Layout terminals in any fashion by splitting them horizontally or vertically</li>
<li>Terminals can be re-arranged using drag and drop both within and between windows</li>
<li>Terminals can be detached into a new window via drag and drop</li>
<li>Input can be synchronized between terminals so commands typed in one terminal are replicated to the others</li>
<li>The grouping of terminals can be saved and loaded from disk</li>
<li>Terminals support custom titles</li>
<li>Color schemes are stored in files and custom color schemes can be created by simply creating a new file</li>
<li>Transparent background</li>
<li>Supports notifications when processes are completed out of view</li>
</ul>
<p>
The application was written using GTK 3 and an effort was made to conform to
GNOME Human Interface Guidelines (HIG). As a result, it does use client-side-decorations, though it can be disabled if necessary.
</p>
<p>Terminix has been tested with GNOME and with Unity.</p>
</description>
<kudos>
<kudo>AppMenu</kudo>
<kudo>ModernToolkit</kudo>
</kudos>
<url type="homepage">https://github.com/gnunn1/terminix/</url>
<project_group>GNOME</project_group>
<translation type="gettext">terminix</translation>
</component>
Loading

0 comments on commit c6ff097

Please sign in to comment.