mirror of
https://github.com/rozniak/xfce-winxp-tc.git
synced 2026-01-26 11:39:44 +00:00
Cleaning: Fixes #85, General tidy up: documentation packaging
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -4,5 +4,4 @@
|
||||
*.kra
|
||||
*~
|
||||
[Bb]uild/
|
||||
packaging/debian
|
||||
packaging/.sass-cache
|
||||
.sass-cache/
|
||||
|
||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "submodules/xfce-winxp-tc-panel"]
|
||||
path = submodules/xfce-winxp-tc-panel
|
||||
url = https://github.com/rozniak/xfce-winxp-tc-panel
|
||||
26
README.md
26
README.md
@@ -1,23 +1,23 @@
|
||||
# xfce-winxp-tc
|
||||
This is my little chipping-away spot for a Windows XP Total Conversion for XFCE.
|
||||
|
||||

|
||||
|
||||
|
||||
## What?
|
||||
Essentially this repo is a 'project' to replicate the XP experience on XFCE / Linux in general. I'm working on themes at the moment (easier said than done), and potentially programs later down the line.
|
||||
Essentially this repo is a 'project' to replicate the XP experience on XFCE / Linux in general. This includes everything from desktop themes, icons, cursors, all the way to programs and the shell itself.
|
||||
|
||||
## Why?
|
||||
I used to use Luna theme ports back when Windows 7 was still supported - it's no longer supported and customisability is non-existent on Windows 10 and whilst ports for XP themes do exist for Linux, I don't think they're particularly great. I want the theme to be close to pixel-perfect, limitations with GTK and XFCE notwithstanding.
|
||||
I used to use Luna theme ports back when Windows 7 was still supported - it's no longer supported and customisability is non-existent on Windows 10. Whilst ports for XP themes do exist for Linux, I don't think they're particularly great. I want to replicate the Windows XP experience, as close to pixel perfect as possible.
|
||||
|
||||
The ports I've seen do a very minimal job leaving most of the UI looking very GNOME-ish, I want a clearly XP-style look. The themes here should be comprehensive.
|
||||
As part of my aim this includes writing programs and panel plugins to achieve this goal, such as the Start menu shown in the screenshot above.
|
||||
|
||||
## Building / Installation
|
||||
Right now the build process targets Debian (as a `.deb`) - I have an issue open #35 to resolve this in future for other package managers.
|
||||
Make sure to clone this repository recursively so that `/submodules` is populated! (use `git clone <url> --recurse-submodules`)
|
||||
|
||||
For now - Debian users can use these steps to build and install:
|
||||
```
|
||||
cd packaging
|
||||
./build-deb.sh
|
||||
sudo dpkg -i debian.deb
|
||||
```
|
||||
The build process involves packaging for each component, and then installing those packages. At the moment, I have only implemented `.deb` packaging, though I have [issue #35](https://github.com/rozniak/xfce-winxp-tc/issues/35) open to sort out other package managers eventually.
|
||||
|
||||
The packaging is, of course, [found under `/packaging`](https://github.com/rozniak/xfce-winxp-tc/tree/master/packaging) (except for `/submodules`), with each directory explaining how to use the relevant script. In general, have a poke around in this repository, there are `README`s in each directory that will explain what things are, and how to install them. 😁
|
||||
|
||||
## The theme(s) are buggy!
|
||||
This is almost certainly true, especially seeing as [theming GTK isn't really a supported feature](https://stopthemingmy.app/). If you're using themes from this repository and programs look broken, you should file issues here rather than pestering the developers of said program.
|
||||
@@ -27,11 +27,15 @@ I hope to cover theming for standard GTK widgets across the board, but there wil
|
||||
The theme is now based directly from Adwaita to hopefully maximise compatibility and make it easier to fix theme bugs. A refactored form of Adwaita from the upstream GTK 3 sources exists in this repo to make it easier to base themes from/fix problems.
|
||||
|
||||
## Roadmap?
|
||||
I don't have a fancy looking roadmap document for this repo - like I said I am just chipping away here and there. Where I remember to I have been creating issues for things I will or would like to do in future. Most of which is related to theming but it would be nice to have some programs / `xfce-panel` plugins one day as well.
|
||||
I don't have a fancy looking roadmap document for this repo - there's too much to list really. Essentially, if something was in Windows XP, it's on my mind.
|
||||
|
||||
As part of that, user-friendliness is always a target - besides themes and programs, I aim to one day have a nice setup application/process akin to XP's. And perhaps an OOBE if I can figure that out (mostly for the nostalgic music).
|
||||
|
||||
## Screenshots?
|
||||
It's still early days, whilst I do use the in-progress `Luna (Blue)` theme as my daily, it is by no means complete. It's usable, but not 'pretty'.
|
||||
|
||||
These screenshots are quite old, but generally reflect the current status of the desktop theme (due to working on things like the Start menu). I will be resuming the theming work shortly, so keep an eye out. 😉
|
||||
|
||||
In any case, here are some screenshots of the current state (as of 2021-07-19):
|
||||
|
||||

|
||||
|
||||
37
cursors/README.MD
Normal file
37
cursors/README.MD
Normal file
@@ -0,0 +1,37 @@
|
||||
# Cursors
|
||||
This directory contains the source files used to generate cursor themes.
|
||||
|
||||
## Structure
|
||||
For each cursor theme (eg. `standard`), there are two variants: one with a pointer shadow, and one without. The reason for separate themes for the variants is to replicate the `Enable pointer shadows` option in Windows XP.
|
||||
|
||||
Within each directory (eg. `with-shadow/standard`), these are the contents:
|
||||
|
||||
`cfg/` - contains config files that are passed to `xcursorgen` for each cursor ([see the man page for details](https://www.x.org/releases/current/doc/man/man1/xcursorgen.1.xhtml))
|
||||
|
||||
`res/` - contains the actual PNG images for each cursor, which are passed to `xcursorgen`
|
||||
|
||||
`debian-control` - the `control` file used in Debian packaging to provide metadata about the package
|
||||
|
||||
`index.theme` - the actual freedesktop theme config file (that gets deployed to `/usr/share/icons`)
|
||||
|
||||
`mappings` - since there are lots of X cursors that are basically the same, the mappings file maps X cursor names to the cursor names found under `cfg/` and `res/` (formatted as `(xcursor name)-->(cusor filename minus extension)`)
|
||||
|
||||
## Installation
|
||||
See the `README.MD` under `/packaging/deb/cursors` for packaging and installation.
|
||||
|
||||
## Developing a cursor theme
|
||||
Armed with the above info it should make sense to you how to create a cursor theme:
|
||||
- Choose a name appropriate for the theme, create directories under `with-shadow` and `without-shadow` (create both `/with-shadow/<theme>` and `/without-shadow/<theme>`)
|
||||
- Create a PNG image for each cursor under `<theme>/res` (eg. `/without-shadow/<theme>/res/<cursorname>.png`)
|
||||
- (if you're working on the `with-shadows` variant, use the Krita settings below to generate the shadow)
|
||||
- Create the `xcursorgen` configuration for each cursor under `<theme>/cfg` (eg. `/without-shadow/<theme>/res/<cursorname>.cfg`)
|
||||
- Create the `index.theme` file for both variants, please keep the naming/description uniform with the `standard` theme
|
||||
- Basically the `with-shadow` variant should have an identical name/description to `without-shadow`, except the name should have `(with pointer shadows)` appended, and the description should have `, with pointer shadows` appended
|
||||
- Create the `mappings` file to map each X cursor name to the theme's cursor names, use the `standard` theme as a guide
|
||||
|
||||
Once this is all done, you should be able to package using the script. The structure of theme sources allows the script to work without any specific configuration.
|
||||
|
||||
### (Useful) Generating an XP-accurate pointer shadow in Krita
|
||||
You should be able to replicate an XP-accurate pointer shadow using Krita on the cursor images. Add a `Drop Shadow` layer style and use these settings:
|
||||
|
||||

|
||||
5
cursors/no-shadow/standard/README.MD
Normal file
5
cursors/no-shadow/standard/README.MD
Normal file
@@ -0,0 +1,5 @@
|
||||
# Standard Cursor Theme (no pointer shadows)
|
||||
This directory contains the source files for the standard cursor theme, without pointer shadows.
|
||||
|
||||
## Preview
|
||||
<img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/arrow.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/arrow-wait.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/busy.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/hand.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/text-select.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/handwriting.png"> <img src="https://github.com/rozniak/xfce-winxp-tc/blob/master/cursors/no-shadow/standard/res/unavailable.png">
|
||||
6
cursors/no-shadow/standard/debian-control
Normal file
6
cursors/no-shadow/standard/debian-control
Normal file
@@ -0,0 +1,6 @@
|
||||
Package: cursor-theme-standard-no-shadows
|
||||
Version: 0.0.1
|
||||
Maintainer: Rory Fewell <roryf@oddmatics.uk>
|
||||
Architecture: all
|
||||
Section: non-free
|
||||
Description: The standard Windows XP cursor theme.
|
||||
5
cursors/with-shadow/standard/README.MD
Normal file
5
cursors/with-shadow/standard/README.MD
Normal file
@@ -0,0 +1,5 @@
|
||||
# Standard Cursor Theme (with pointer shadows)
|
||||
This directory contains the source files for the standard cursor theme, with pointer shadows.
|
||||
|
||||
## Preview
|
||||
<img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/arrow.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/arrow-wait.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/busy.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/hand.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/text-select.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/handwriting.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/unavailable.png">
|
||||
6
cursors/with-shadow/standard/debian-control
Normal file
6
cursors/with-shadow/standard/debian-control
Normal file
@@ -0,0 +1,6 @@
|
||||
Package: cursor-theme-standard-with-shadows
|
||||
Version: 0.0.1
|
||||
Maintainer: Rory Fewell <roryf@oddmatics.uk>
|
||||
Architecture: all
|
||||
Section: non-free
|
||||
Description: The standard Windows XP cursor theme, with pointer shadows.
|
||||
25
icons/README.MD
Normal file
25
icons/README.MD
Normal file
@@ -0,0 +1,25 @@
|
||||
# Icons
|
||||
This directory contains the source files used to generate icon themes.
|
||||
|
||||
## Under Construction
|
||||
Icon themes are still under construction - checkout branch `feat-72` if you would like to be *cutting edge* and use the latest work (until that work is done and merged into `master`, at least).
|
||||
|
||||
## Structure
|
||||
Within each directory (eg. `luna`) these are the contents:
|
||||
|
||||
`res/` - contains the PNG images for each icon, divided into subfolders based on the icon size
|
||||
|
||||
`debian-control` - the `control` file used in Debian packaging to provide metadata about the package
|
||||
|
||||
`index.theme` - the actual freedesktop theme config file (that gets deployed to `/usr/share/icons`)
|
||||
|
||||
`mappings` - since there are lots of Freedesktop icon names that map to the same icon, the mappings file maps those Freedesktop icon names to the icons found under `/res` (formatted as `(freedesktop icon name)-->(icon filename minus extension)`)
|
||||
|
||||
## Installation
|
||||
If you would like to install the icon theme (bearing in mind it's incomplete!) you should:
|
||||
- `git checkout feat-72` (to get yourself on the feature branch with the icons)
|
||||
- `cd` over to the `/packaging/deb/icons` directory
|
||||
- `./packicon.sh luna` (to build the Luna icon package)
|
||||
- `sudo dpkg -i <the package>.deb` (to install the package)
|
||||
|
||||
Sorry this is very rough, it will be updated once I finish the `feat-72` branch. Which may be some time because there are a LOT of icons to get through...
|
||||
10
packaging/README.MD
Normal file
10
packaging/README.MD
Normal file
@@ -0,0 +1,10 @@
|
||||
# Packaging
|
||||
This directory contains scripts for creating packages for all the various components found in this repository.
|
||||
|
||||
## Structure
|
||||
Each 'type' of component has its own packaging script, in a subdirectory with appropriate notes (cursors, desktop theme, programs etc.). Explore the contents below here and you should find `README`s explaining how to use the scripts and install the components.
|
||||
|
||||
## Support?
|
||||
At the moment you'll notice there is only a `deb` subdirectory. I personally use Debian, so I have got package scripts that generate `.deb` packages so far - if you're also a Debian user, or you use a derivative such as Ubuntu, then you should be good to go.
|
||||
|
||||
For users on Linux distributions that use other package managers, I will get around to supporting those one day, it just takes a lot of work and a lot of testing. This `README` will be updated to reflect the status of package manager support when the work is done.
|
||||
@@ -1,30 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Luna (Blue) Package
|
||||
#
|
||||
SOURCE_ROOT='../themes/luna/blue'
|
||||
TARGET_ROOT='debian'
|
||||
|
||||
DEBIAN_ROOT="${TARGET_ROOT}/DEBIAN"
|
||||
LUNA_BLUE_ROOT="${TARGET_ROOT}/usr/share/themes/Luna"
|
||||
|
||||
if [ -d $TARGET_ROOT ]
|
||||
then
|
||||
rm -rf $TARGET_ROOT
|
||||
fi
|
||||
|
||||
mkdir -p $DEBIAN_ROOT
|
||||
mkdir -p $LUNA_BLUE_ROOT
|
||||
mkdir -p "${LUNA_BLUE_ROOT}/gtk-3.0"
|
||||
|
||||
cp "${SOURCE_ROOT}/debian-control" "${TARGET_ROOT}/DEBIAN/control"
|
||||
|
||||
cp -r "${SOURCE_ROOT}/gtk-2.0" "${LUNA_BLUE_ROOT}/gtk-2.0"
|
||||
cp -r "${SOURCE_ROOT}/Resources" "${LUNA_BLUE_ROOT}/Resources"
|
||||
cp -r "${SOURCE_ROOT}/xfwm4" "${LUNA_BLUE_ROOT}/xfwm4"
|
||||
|
||||
scss "${SOURCE_ROOT}/gtk-3.0/main.scss" "${LUNA_BLUE_ROOT}/gtk-3.0/gtk.css" --sourcemap=none
|
||||
|
||||
fakeroot dpkg-deb -v --build $TARGET_ROOT
|
||||
|
||||
echo "Package has been built."
|
||||
18
packaging/deb/cursors/README.MD
Normal file
18
packaging/deb/cursors/README.MD
Normal file
@@ -0,0 +1,18 @@
|
||||
# Cursor Theme Packaging (.deb)
|
||||
This directory contains the cursor theme packaging script for Debian and derivatives (e.g. Ubuntu).
|
||||
|
||||
## Usage
|
||||
Simply run the script, and pass in the path of the theme(s) you would like to build, relative to the `/cursors` directory.
|
||||
|
||||
For example:
|
||||
```bash
|
||||
./packcurs.sh no-shadow/standard shadow/standard
|
||||
```
|
||||
|
||||
This will build and output packages for the standard cursor theme with, and without, pointer shadows. You can then install the package(s) with:
|
||||
```bash
|
||||
sudo dpkg -i <cursor-theme-xxx-yyy.deb>
|
||||
```
|
||||
|
||||
## Any Problems?
|
||||
If you have problems running the script, feel free to [submit an issue](https://github.com/rozniak/xfce-winxp-tc/issues) and include the generated log file. 😁
|
||||
@@ -83,6 +83,31 @@ do
|
||||
theme_shadows="${BASH_REMATCH[1]}"
|
||||
theme_scheme="${BASH_REMATCH[2]}"
|
||||
|
||||
log_path="${CURDIR}/${theme_scheme}-${theme_shadows}.log"
|
||||
|
||||
if [[ ! -d "${theme_cfg_dir}" ]]
|
||||
then
|
||||
echo "Cannot find xcursorgen configs for ${themestr}, skipping."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ ! -f "${theme_map_path}" ]]
|
||||
then
|
||||
echo "Cannot find mappings file for ${themestr}, skipping."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ -f "${log_path}" ]]
|
||||
then
|
||||
rm -f "${log_path}"
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Failed to delete ${log_path}, skipping."
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set up our package's working directory
|
||||
#
|
||||
pkg_theme_dir="${PKG_DIR}/usr/share/icons/${theme_scheme}-${theme_shadows}"
|
||||
@@ -95,17 +120,18 @@ do
|
||||
rm -rf "${PKG_DIR}"
|
||||
fi
|
||||
|
||||
mkdir "${PKG_DIR}"
|
||||
mkdir -p "${PKG_DIR}"
|
||||
mkdir -p "${pkg_cursor_dir}"
|
||||
mkdir -p "${pkg_curres_dir}"
|
||||
mkdir "${pkg_debian_dir}"
|
||||
mkdir -p "${pkg_debian_dir}"
|
||||
|
||||
# Generate X cursors, shift them to our working dir and remove the '.out' ext
|
||||
#
|
||||
cd "${theme_dir}"
|
||||
|
||||
find "${theme_cfg_dir}" -type f -exec xcursorgen '{}' '{}.out' \; > /dev/null 2>&1
|
||||
mv "${theme_cfg_dir}"/*.out "${pkg_curres_dir}"
|
||||
find "${pkg_curres_dir}" -type f -execdir rename 's/(.*)\.cfg\.out/\1/' '{}' \; > /dev/null 2>&1
|
||||
find "${theme_cfg_dir}" -type f -exec xcursorgen '{}' '{}.out' \; > "${log_path}" 2>&1
|
||||
mv "${theme_cfg_dir}"/*.out "${pkg_curres_dir}" > "${log_path}" 2>&1
|
||||
find "${pkg_curres_dir}" -type f -execdir rename 's/(.*)\.cfg\.out/\1/' '{}' \; > "${log_path}" 2>&1
|
||||
|
||||
# Create symbolic links
|
||||
#
|
||||
@@ -123,45 +149,52 @@ do
|
||||
pkg_res_target="res/${resname}"
|
||||
pkg_xcur_source="${pkg_cursor_dir}/${xcurname}"
|
||||
|
||||
ln -s "${pkg_res_target}" "${pkg_xcur_source}"
|
||||
ln -s "${pkg_res_target}" "${pkg_xcur_source}" > "${log_path}" 2>&1
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
"Failed to create symlink for ${xcurname} in ${themestr}."
|
||||
continue
|
||||
fi
|
||||
else
|
||||
echo "Invalid mapping '${mapping}' in ${theme_map_path}."
|
||||
continue
|
||||
fi
|
||||
done
|
||||
|
||||
# Copy across index.theme
|
||||
# Copy files
|
||||
#
|
||||
cp "${theme_dir}/index.theme" "${pkg_theme_dir}"
|
||||
pkg_setup_result=0
|
||||
|
||||
# Create CONTROL file
|
||||
cp "${theme_dir}/index.theme" "${pkg_theme_dir}" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
cp "${theme_dir}/debian-control" "${pkg_debian_dir}/control" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
# Check package setup good
|
||||
#
|
||||
# FIXME: One day this should probably read the description and maintainer(?)
|
||||
# from a file in the cursor theme's directory
|
||||
#
|
||||
debian_control=`cat <<EOF
|
||||
Package: cursor-theme-${theme_shadows}-${theme_scheme}
|
||||
Version: 0.0.1
|
||||
Maintainer: Rory Fewell <roryf@oddmatics.uk>
|
||||
Architecture: all
|
||||
Section: non-free
|
||||
Description: A Windows XP cursor theme.
|
||||
EOF
|
||||
`
|
||||
echo "${debian_control}" > "${pkg_debian_dir}/control"
|
||||
if [[ $pkg_setup_result -gt 0 ]]
|
||||
then
|
||||
echo "Failed to copy files for ${themestr}, see ${log_path} for output."
|
||||
rm -rf "${PKG_DIR}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Compile package
|
||||
#
|
||||
cd "${CURDIR}"
|
||||
|
||||
fakeroot dpkg-deb -v --build "${PKG_DIR}" > /dev/null 2>&1
|
||||
fakeroot dpkg-deb -v --build "${PKG_DIR}" >> "${log_path}" 2>&1
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
"Failed to build package for ${themestr}."
|
||||
"Failed to build package for ${themestr}, see ${log_path} for output."
|
||||
continue
|
||||
fi
|
||||
|
||||
# Tidy
|
||||
#
|
||||
mv "${PKG_DIR}.deb" "cursor-theme-${theme_shadows}-${theme_scheme}.deb"
|
||||
|
||||
rm -rf "${PKG_DIR}"
|
||||
|
||||
20
packaging/deb/libs/README.MD
Normal file
20
packaging/deb/libs/README.MD
Normal file
@@ -0,0 +1,20 @@
|
||||
# Shared Library Packaging (.deb)
|
||||
This directory contains the shared library packaging script for Debian and derivatives (e.g. Ubuntu).
|
||||
|
||||
## Usage
|
||||
Simply run the script, and pass in the name of the library/libraries you would like to build.
|
||||
|
||||
For example:
|
||||
```bash
|
||||
./packlibs.sh comgtk exec
|
||||
```
|
||||
|
||||
This will build and output packages for `libwintc-comgtk` and `libwintc-exec`. You can then install the package(s) with:
|
||||
```bash
|
||||
sudo dpkg -i <libname.deb>
|
||||
```
|
||||
|
||||
## Any Problems?
|
||||
You may encounter issues if you have not already installed dependencies for the library/libraries you are building. A log file is generated as part of the script's build process, review it, and see if you are missing dependencies.
|
||||
|
||||
If you have any other problems, feel free to [submit an issue](https://github.com/rozniak/xfce-winxp-tc/issues) and include the generated log file. 😁
|
||||
@@ -85,7 +85,7 @@ do
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set up working directory
|
||||
# Set up build directory
|
||||
#
|
||||
build_dir="${lib_dir}/build"
|
||||
|
||||
@@ -121,6 +121,13 @@ do
|
||||
pkg_lib_dir="${PKG_DIR}${libdir}"
|
||||
pkg_pkgconfig_dir="${PKG_DIR}${pkgconfigdir}"
|
||||
|
||||
if [[ -d "${PKG_DIR}" ]]
|
||||
then
|
||||
rm -rf "${PKG_DIR}"
|
||||
fi
|
||||
|
||||
cd "${CURDIR}"
|
||||
|
||||
mkdir -p "${pkg_debian_dir}"
|
||||
mkdir -p "${pkg_include_dir}"
|
||||
mkdir -p "${pkg_lib_dir}"
|
||||
@@ -128,12 +135,28 @@ do
|
||||
|
||||
# Copy files
|
||||
#
|
||||
cd "${CURDIR}"
|
||||
pkg_setup_result=0
|
||||
|
||||
cp "${build_dir}/debian-control" "${pkg_debian_dir}/control"
|
||||
cp "${build_dir}/"*.h "${pkg_include_dir}"
|
||||
cp "${build_dir}/"*.so* "${pkg_lib_dir}"
|
||||
cp "${build_dir}/"*.pc "${pkg_pkgconfig_dir}"
|
||||
cp "${build_dir}/debian-control" "${pkg_debian_dir}/control" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
cp "${build_dir}/"*.h "${pkg_include_dir}" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
cp "${build_dir}/"*.so* "${pkg_lib_dir}" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
cp "${build_dir}/"*.pc "${pkg_pkgconfig_dir}" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
# Check package setup good
|
||||
#
|
||||
if [[ $pkg_setup_result -gt 0 ]]
|
||||
then
|
||||
echo "Failed to copy files for ${libstr}, see ${log_path} for output."
|
||||
rm -rf "${PKG_DIR}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Compile package
|
||||
#
|
||||
|
||||
20
packaging/deb/panel/README.MD
Normal file
20
packaging/deb/panel/README.MD
Normal file
@@ -0,0 +1,20 @@
|
||||
# XFCE Panel Plugin Packaging (.deb)
|
||||
This directory contains the XFCE panel plugin packaging script for Debian and derivatives (e.g. Ubuntu).
|
||||
|
||||
## Usage
|
||||
Simply run the script, and pass in the name of the panel plugin you would like to build, relative to the repository's root.
|
||||
|
||||
For example:
|
||||
```bash
|
||||
./packplug.sh shell/start shell/systray
|
||||
```
|
||||
|
||||
This will build and output packages for the Start menu and notification area panel plugins. You can then install the package(s) with:
|
||||
```bash
|
||||
sudo dpkg -i <xxx-yyy-plugin.deb>
|
||||
```
|
||||
|
||||
## Any Problems?
|
||||
You may encounter issues if you have not already installed dependencies for the panel plugins you are building. A log file is generated as part of the script's build process, review it, and see if you are missing dependencies.
|
||||
|
||||
If you have any other problems, feel free to [submit an issue](https://github.com/rozniak/xfce-winxp-tc/issues) and include the generated log file. 😁
|
||||
194
packaging/deb/panel/packplug.sh
Executable file
194
packaging/deb/panel/packplug.sh
Executable file
@@ -0,0 +1,194 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# packplug.sh - XFCE Panel Plugin Packaging Script (Debian)
|
||||
#
|
||||
# This source-code is part of Windows XP stuff for XFCE:
|
||||
# <<https://www.oddmatics.uk>>
|
||||
#
|
||||
# Author(s): Rory Fewell <roryf@oddmatics.uk>
|
||||
#
|
||||
|
||||
#
|
||||
# CONSTANTS
|
||||
#
|
||||
CORE_COUNT=`nproc`
|
||||
CURDIR=`realpath -s "./"`
|
||||
PKG_DIR=`realpath -s "./tmp.plug-pkg"`
|
||||
REQUIRED_PACKAGES=(
|
||||
'cmake'
|
||||
'fakeroot'
|
||||
'make'
|
||||
)
|
||||
SCRIPTDIR=`dirname "$0"`
|
||||
|
||||
REPO_ROOT=`realpath -s "${SCRIPTDIR}/../../.."`
|
||||
|
||||
|
||||
|
||||
#
|
||||
# PRE-FLIGHT CHECKS
|
||||
#
|
||||
for package in "${REQUIRED_PACKAGES[@]}"
|
||||
do
|
||||
dpkg -s $package > /dev/null 2>&1
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "You are missing package: ${package}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
|
||||
#
|
||||
# ARGUMENTS
|
||||
#
|
||||
if [[ $# -eq 0 ]]
|
||||
then
|
||||
echo 'Usage: packplug.sh [<name>]...'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
#
|
||||
# MAIN SCRIPT
|
||||
#
|
||||
|
||||
# The arguments passed to this script should specify the panel plugins to build, for
|
||||
# example:
|
||||
#
|
||||
# ./packplug.sh shell/start shell/systray
|
||||
#
|
||||
for plugstr in "$@"
|
||||
do
|
||||
plug_dir="${REPO_ROOT}/${plugstr}"
|
||||
plug_safename=${plugstr/\//-}
|
||||
log_path="${CURDIR}/${plug_safename}-build.log"
|
||||
|
||||
if [[ ! -d "${plug_dir}" ]]
|
||||
then
|
||||
echo "Can't find plugin: ${plugstr}."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ -f "${log_path}" ]]
|
||||
then
|
||||
rm -f "${log_path}"
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Failed to delete ${log_path}, skipping."
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set up build directory
|
||||
#
|
||||
build_dir="${plug_dir}/build"
|
||||
|
||||
cd "${plug_dir}"
|
||||
|
||||
if [[ -d "${build_dir}" ]]
|
||||
then
|
||||
rm -rf "${build_dir}"
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Failed to delete ${build_dir}, skipping."
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir "${build_dir}"
|
||||
cd "${build_dir}"
|
||||
|
||||
# Compile the source
|
||||
#
|
||||
cmake .. >> "${log_path}" 2>&1
|
||||
make -j${CORE_COUNT} >> "${log_path}" 2>&1
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Compilation failed for ${plugstr}, see ${log_path} for output."
|
||||
continue
|
||||
fi
|
||||
|
||||
# Set up our package's working directory
|
||||
#
|
||||
pkg_debian_dir="${PKG_DIR}/DEBIAN"
|
||||
pkg_desktop_dir="${PKG_DIR}/usr/share/xfce4/panel/plugins"
|
||||
pkg_plug_dir="${PKG_DIR}/usr/lib/x86_64-linux-gnu/xfce4/panel/plugins"
|
||||
pkg_res_dir="${PKG_DIR}/usr/share/winxp/shell-res"
|
||||
|
||||
if [[ -d "${PKG_DIR}" ]]
|
||||
then
|
||||
rm -rf "${PKG_DIR}"
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Failed to clear temp dir: ${PKG_DIR}, see ${log_path} for output."
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
cd "${CURDIR}"
|
||||
|
||||
mkdir -p "${PKG_DIR}"
|
||||
mkdir -p "${pkg_debian_dir}"
|
||||
mkdir -p "${pkg_desktop_dir}"
|
||||
mkdir -p "${pkg_plug_dir}"
|
||||
|
||||
# Copy files
|
||||
#
|
||||
pkg_setup_result=0
|
||||
|
||||
cp "${plug_dir}/debian-control" "${pkg_debian_dir}/control" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
cp "${plug_dir}/"*.desktop "${pkg_desktop_dir}" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
cp "${build_dir}/"*.so "${pkg_plug_dir}" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
if [[ -d "${plug_dir}/res" ]]
|
||||
then
|
||||
mkdir -p ${pkg_res_dir}
|
||||
|
||||
cp "${plug_dir}/res/"* "${pkg_res_dir}" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
fi
|
||||
|
||||
# Check package setup good
|
||||
#
|
||||
if [[ $pkg_setup_result -gt 0 ]]
|
||||
then
|
||||
echo "Failed to copy files for ${plugstr}, see ${log_path} for output."
|
||||
rm -rf "${PKG_DIR}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Compile package
|
||||
#
|
||||
fakeroot dpkg-deb -v --build "${PKG_DIR}" >> "${log_path}" 2>&1
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Failed to build package for ${plugdir}, see ${log_path} for output."
|
||||
rm -rf "${PKG_DIR}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Tidy
|
||||
#
|
||||
mv "${PKG_DIR}.deb" "${plug_safename}-plugin.deb"
|
||||
|
||||
rm -rf "${PKG_DIR}"
|
||||
|
||||
echo "Built ${plugstr}."
|
||||
done
|
||||
|
||||
echo "Packaging complete."
|
||||
20
packaging/deb/programs/README.MD
Normal file
20
packaging/deb/programs/README.MD
Normal file
@@ -0,0 +1,20 @@
|
||||
# Program Packaging (.deb)
|
||||
This directory contains the program packaging script for Debian and derivatives (e.g. Ubuntu).
|
||||
|
||||
## Usage
|
||||
Simply run the script and pass in the name of the program you would like to build, relative to the repository's root.
|
||||
|
||||
For example:
|
||||
```bash
|
||||
./packprog.sh shell/run shell/winver
|
||||
```
|
||||
|
||||
This will build and output packages for the `run` and `winver` programs. You can then install the package(s) with:
|
||||
```bash
|
||||
sudo dpkg -i <xxx-yyy.deb>
|
||||
```
|
||||
|
||||
## Any Problems?
|
||||
You may encounter issues if you have not already installed dependencies for the progams you are building. A log file is generated as part of the script's build process, review it, and see if you are missing dependencies.
|
||||
|
||||
If you have any other problems, feel free to [submit an issue](https://github.com/rozniak/xfce-winxp-tc/issues) and include the generated log file. 😁
|
||||
207
packaging/deb/programs/packprog.sh
Executable file
207
packaging/deb/programs/packprog.sh
Executable file
@@ -0,0 +1,207 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# packprog.sh - Program Packaging Script (Debian)
|
||||
#
|
||||
# This source-code is part of Windows XP stuff for XFCE:
|
||||
# <<https://www.oddmatics.uk>>
|
||||
#
|
||||
# Author(s): Rory Fewell <roryf@oddmatics.uk>
|
||||
#
|
||||
|
||||
#
|
||||
# CONSTANTS
|
||||
#
|
||||
CORE_COUNT=`nproc`
|
||||
CURDIR=`realpath -s "./"`
|
||||
PKG_DIR=`realpath -s "./tmp.prog-pkg"`
|
||||
REQUIRED_PACKAGES=(
|
||||
'cmake'
|
||||
'fakeroot'
|
||||
'make'
|
||||
)
|
||||
SCRIPTDIR=`dirname "$0"`
|
||||
|
||||
REPO_ROOT=`realpath -s "${SCRIPTDIR}/../../.."`
|
||||
|
||||
|
||||
|
||||
#
|
||||
# PRE-FLIGHT CHECKS
|
||||
#
|
||||
for package in "${REQUIRED_PACKAGES[@]}"
|
||||
do
|
||||
dpkg -s $package > /dev/null 2>&1
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "You are missing package: ${package}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
|
||||
#
|
||||
# ARGUMENTS
|
||||
#
|
||||
if [[ $# -eq 0 ]]
|
||||
then
|
||||
echo 'Usage: packprog.sh [<name>]...'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
#
|
||||
# MAIN SCRIPT
|
||||
#
|
||||
|
||||
# The arguments passed to this script should specify the program to build, for
|
||||
# example:
|
||||
#
|
||||
# ./packprog.sh shell/run windows/paint
|
||||
#
|
||||
for progstr in "$@"
|
||||
do
|
||||
prog_dir="${REPO_ROOT}/${progstr}"
|
||||
prog_name=""
|
||||
prog_safename=${progstr/\//-}
|
||||
prog_section=""
|
||||
log_path="${CURDIR}/${prog_safename}-build.log"
|
||||
|
||||
if [[ ! -d "${prog_dir}" ]]
|
||||
then
|
||||
echo "Can't find program: ${progstr}."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ -f "${log_path}" ]]
|
||||
then
|
||||
rm -rf "${log_path}"
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Failed to delete ${log_path}, skipping."
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$progstr" =~ ([A-Za-z0-9._-]+)/([A-Za-z0-9._-]+) ]]
|
||||
then
|
||||
prog_section="${BASH_REMATCH[1]}"
|
||||
prog_name="${BASH_REMATCH[2]}"
|
||||
else
|
||||
echo "Unrecognised program: ${progstr}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Set up build directory
|
||||
#
|
||||
build_dir="${prog_dir}/build"
|
||||
|
||||
cd "${prog_dir}"
|
||||
|
||||
if [[ -d "${build_dir}" ]]
|
||||
then
|
||||
rm -rf "${build_dir}"
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Failed to delete ${build_dir}, skipping."
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir "${build_dir}"
|
||||
cd "${build_dir}"
|
||||
|
||||
# Compile the source
|
||||
#
|
||||
cmake .. >> "${log_path}" 2>&1
|
||||
make -j${CORE_COUNT} >> "${log_path}" 2>&1
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Compilation failed for ${progstr}, see ${log_path} for output."
|
||||
continue
|
||||
fi
|
||||
|
||||
# Set up our packages working directory
|
||||
#
|
||||
pkg_debian_dir="${PKG_DIR}/DEBIAN"
|
||||
pkg_desktop_dir="${PKG_DIR}/usr/share/applications"
|
||||
pkg_prog_dir="${PKG_DIR}/usr/bin"
|
||||
pkg_res_dir="${PKG_DIR}/usr/share/winxp/shell-res"
|
||||
|
||||
if [[ -d "${PKG_DIR}" ]]
|
||||
then
|
||||
rm -rf "${PKG_DIR}"
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Failed to clear temp dir: ${PKG_DIR}, see ${log_path} for output."
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
cd "${CURDIR}"
|
||||
|
||||
mkdir -p "${PKG_DIR}"
|
||||
mkdir -p "${pkg_debian_dir}"
|
||||
mkdir -p "${pkg_prog_dir}"
|
||||
|
||||
# Copy files
|
||||
#
|
||||
pkg_setup_result=0
|
||||
|
||||
cp "${prog_dir}/debian-control" "${pkg_debian_dir}/control" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
cp "${build_dir}/${prog_name}" "${pkg_prog_dir}" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
if [[ -f "${prog_dir}/${prog_name}.desktop" ]]
|
||||
then
|
||||
mkdir -p "${pkg_desktop_dir}"
|
||||
|
||||
cp "${prog_dir}/${prog_name}.desktop" "${pkg_desktop_dir}" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
fi
|
||||
|
||||
if [[ -d "${prog_dir}/res" ]]
|
||||
then
|
||||
mkdir -p "${pkg_res_dir}"
|
||||
|
||||
cp "${prog_dir}/res/"* "${pkg_res_dir}" >> "${log_path}" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
fi
|
||||
|
||||
# Check package setup was good
|
||||
#
|
||||
if [[ $pkg_setup_result -gt 0 ]]
|
||||
then
|
||||
echo "Failed to copy files for ${progstr}, see ${log_path} for output."
|
||||
rm -rf "${PKG_DIR}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Compile package
|
||||
#
|
||||
fakeroot dpkg-deb -v --build "${PKG_DIR}" >> "${log_path}" 2>&1
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Failed to build package for ${progstr}, see ${log_path} for output."
|
||||
rm -rf "${PKG_DIR}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Tidy
|
||||
#
|
||||
mv "${PKG_DIR}.deb" "${prog_safename}.deb"
|
||||
|
||||
rm -rf "${PKG_DIR}"
|
||||
|
||||
echo "Built ${progstr}"
|
||||
done
|
||||
18
packaging/deb/themes/README.MD
Normal file
18
packaging/deb/themes/README.MD
Normal file
@@ -0,0 +1,18 @@
|
||||
# Desktop Theme Packaging (.deb)
|
||||
This directory contains the desktop theme packaging script for Debian and derivatives (e.g. Ubuntu).
|
||||
|
||||
## Usage
|
||||
Simply run the script. At the moment it will specifically build the Luna (Blue) theme.
|
||||
```bash
|
||||
./packthem.sh
|
||||
```
|
||||
|
||||
This will build and output the Luna (Blue) theme. You can then install the package with:
|
||||
```bash
|
||||
sudo dpkg -i xfce-theme-luna-blue.deb
|
||||
```
|
||||
|
||||
## Any Problems?
|
||||
The theme is still a WIP, and a lot of work is due (along with other themes). It's usable though.
|
||||
|
||||
If you come across a bug, [check the issues](https://github.com/rozniak/xfce-winxp-tc/issues), and if your particular problem is not there then file a new issue. 😁
|
||||
128
packaging/deb/themes/packthem.sh
Executable file
128
packaging/deb/themes/packthem.sh
Executable file
@@ -0,0 +1,128 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# packthem.sh - Desktop Theme Packaging Script (Debian)
|
||||
#
|
||||
# This source-code is part of Windows XP stuff for XFCE:
|
||||
# <<https://www.oddmatics.uk>>
|
||||
#
|
||||
# Author(s): Rory Fewell <roryf@oddmatics.uk>
|
||||
#
|
||||
|
||||
#
|
||||
# CONSTANTS
|
||||
#
|
||||
CURDIR=`realpath -s "./"`
|
||||
PKG_DIR=`realpath -s "./tmp.theme-pkg"`
|
||||
REQUIRED_PACKAGES=(
|
||||
'fakeroot'
|
||||
'ruby-sass'
|
||||
)
|
||||
SCRIPTDIR=`dirname "$0"`
|
||||
|
||||
REPO_ROOT=`realpath -s "${SCRIPTDIR}/../../.."`
|
||||
|
||||
|
||||
#
|
||||
# PRE-FLIGHT CHECKS
|
||||
#
|
||||
for package in "${REQUIRED_PACKAGES[@]}"
|
||||
do
|
||||
dpkg -s $package > /dev/null 2>&1
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "You are missing package: ${package}"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
#
|
||||
# ARGUMENTS
|
||||
#
|
||||
if [[ $# -gt 0 ]]
|
||||
then
|
||||
echo 'This script only builds Luna (Blue) currently! No args needed.'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# MAIN SCRIPT
|
||||
#
|
||||
|
||||
# This script is simply a reworking of the old build-deb.sh for now. We just build a
|
||||
# package for Luna (Blue).
|
||||
#
|
||||
# This will change once themes are improved to separate base XP structure vs. the
|
||||
# visual style specific stuff (bitmaps, colours, etc.)
|
||||
#
|
||||
|
||||
# Prepare working dir
|
||||
#
|
||||
debian_dir="${PKG_DIR}/DEBIAN"
|
||||
theme_dir="${PKG_DIR}/usr/share/themes/Luna"
|
||||
theme_gtk3_dir="${theme_dir}/gtk-3.0"
|
||||
|
||||
if [[ -d "${PKG_DIR}" ]]
|
||||
then
|
||||
rm -rf "${PKG_DIR}"
|
||||
fi
|
||||
|
||||
mkdir "${PKG_DIR}"
|
||||
mkdir -p "${debian_dir}"
|
||||
mkdir -p "${theme_dir}"
|
||||
mkdir -p "${theme_gtk3_dir}"
|
||||
|
||||
# Copy static content straight into package
|
||||
#
|
||||
pkg_setup_result=0
|
||||
theme_root="${REPO_ROOT}/themes/luna/blue"
|
||||
|
||||
cp -r "${theme_root}/gtk-2.0" "${theme_dir}/gtk-2.0"
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
cp -r "${theme_root}/Resources" "${theme_dir}/Resources"
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
cp -r "${theme_root}/xfwm4" "${theme_dir}/xfwm4"
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
# Compile SASS for GTK 3 theme
|
||||
#
|
||||
scss "${theme_root}/gtk-3.0/main.scss" "${theme_gtk3_dir}/gtk.css" --sourcemap=none >> "luna-blue.log" 2>&1
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
# Add CONTROL file
|
||||
#
|
||||
cp "${theme_root}/debian-control" "${debian_dir}/control"
|
||||
((pkg_setup_result+=$?))
|
||||
|
||||
# Check package setup is good
|
||||
#
|
||||
if [[ $pkg_setup_result -gt 0 ]]
|
||||
then
|
||||
echo "Failed to copy files for Luna (Blue), see ${log_path} for output."
|
||||
rm -rf "${PKG_DIR}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Compile package
|
||||
#
|
||||
fakeroot dpkg-deb -v --build "${PKG_DIR}" >> "luna-blue.log" 2>&1
|
||||
|
||||
if [[ $? -gt 0 ]]
|
||||
then
|
||||
echo "Failed to build package for Luna (Blue), see luna-blue.log for output."
|
||||
rm -rf "${PKG_DIR}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Tidy
|
||||
#
|
||||
mv "${PKG_DIR}.deb" "xfce-theme-luna-blue.deb"
|
||||
|
||||
rm -rf "${PKG_DIR}"
|
||||
|
||||
echo "Build Luna (Blue)"
|
||||
25
shared/README.MD
Normal file
25
shared/README.MD
Normal file
@@ -0,0 +1,25 @@
|
||||
# Shared Libraries
|
||||
This directory contains source code for the shared libraries used by various components.
|
||||
|
||||
## Structure
|
||||
Each library has its own directory in here. CMake is used as the build process, and there are a few input files dotted around that are filled in by variables set in the CMakeLists.txt files.
|
||||
|
||||
`debian-control.in` is a template file for the `CONTROL` document used by Debian packages - it's filled in by CMake.
|
||||
|
||||
Inside each directory are the following things:
|
||||
|
||||
`public/` - contains the public API header(s)
|
||||
|
||||
`src/` - contains the source code for the library
|
||||
|
||||
`CMakeLists.txt` - CMake instructions
|
||||
|
||||
`wintc-<lib>.pc.in` - template file for generating the PkgConfig document for the library
|
||||
|
||||
## Installation
|
||||
See the`README.MD` under `/packaging/deb/libs` for packaging and installation.
|
||||
|
||||
## Developing a library
|
||||
The needs for library APIs and/or new libraries altogether should be discussed in an issue beforehand. Forward planning to decide what common APIs will be needed and how best to implement them in future has to be thought out.
|
||||
|
||||
As for writing a library, it is just a case of working with the codebase as they are written in C and use CMake for building. There isn't much reason to make a start from library code - these libraries are developed when it makes sense based on other features. You should only really need to poke around in here to build, or if directed by an issue.
|
||||
@@ -11,6 +11,8 @@ else()
|
||||
message(FATAL_ERROR "No install dir defined for ${CMAKE_SYSTEM_PROCESSOR}!")
|
||||
endif()
|
||||
|
||||
set(DEB_DEPENDENCIES "libglib2.0-dev, libgtk-3-dev")
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
pkg_check_modules(GLIB REQUIRED glib-2.0)
|
||||
|
||||
7
shared/comgtk/README.MD
Normal file
7
shared/comgtk/README.MD
Normal file
@@ -0,0 +1,7 @@
|
||||
# libwintc-comgtk
|
||||
This directory contains the source code for the Common GLib/GTK Utilities library.
|
||||
|
||||
## Purpose
|
||||
This library provides convenience methods for various things across GLib and GTK. This includes things like macros for logging, some string (`gchar*`) manipulation functions, user profile methods etc.
|
||||
|
||||
Generally, common small GLib/GTK code snippets that works *with* the code rather than providing large things like full dialogs or features. These utility methods don't really need their own home, so they're collected in this library.
|
||||
@@ -3,10 +3,6 @@
|
||||
|
||||
#include "strings.h"
|
||||
|
||||
//
|
||||
// FORWARD DECLARATIONS
|
||||
//
|
||||
|
||||
//
|
||||
// PUBLIC FUNCTIONS
|
||||
//
|
||||
|
||||
@@ -4,3 +4,4 @@ Maintainer: Rory Fewell <roryf@oddmatics.uk>
|
||||
Architecture: @ARCH_NAME@
|
||||
Section: free
|
||||
Description: @PROJECT_DESCRIPTION@
|
||||
Depends: @DEB_DEPENDENCIES@
|
||||
|
||||
@@ -11,6 +11,8 @@ else()
|
||||
message(FATAL_ERROR "No install dir defined for ${CMAKE_SYSTEM_PROCESSOR}!")
|
||||
endif()
|
||||
|
||||
set(DEB_DEPENDENCIES "libglib2.0-dev, libgtk-3-dev, libwintc-comgtk-1.0")
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
pkg_check_modules(GDK REQUIRED gdk-3.0)
|
||||
|
||||
13
shared/exec/README.MD
Normal file
13
shared/exec/README.MD
Normal file
@@ -0,0 +1,13 @@
|
||||
# libwintc-exec
|
||||
This directory contains the source code for the Launcher library.
|
||||
|
||||
## Purpose
|
||||
This library provides code for launching programs and utility methods to help with doing so (such as looking up MIME types and associated programs). Various parts of the shell are able to launch programs, so this library implements functionality that would be expected to support that.
|
||||
|
||||
The reason for an entire library instead of just using `g_spawn_async`:
|
||||
|
||||
- Support for URI schemes (eg. `http://example.org`)
|
||||
- Support for UNC paths (eg. `\\MYPC\Stuff$` translates to `smb://MYPC/Stuff$`)
|
||||
- Support for opening files & folders (detects MIME type for files)
|
||||
|
||||
Any other requirements related to launching programs are to be implemented in this library rather than in components themselves.
|
||||
20
shell/README.MD
Normal file
20
shell/README.MD
Normal file
@@ -0,0 +1,20 @@
|
||||
# Shell Components
|
||||
This directory contains source code for the shell components.
|
||||
|
||||
## Structure
|
||||
Generally the structure under each subdirectory is that of a typical CMake project. In addition there are the following files:
|
||||
|
||||
`debian-control` - the `control` file used in Debian packaging to provide metadata about the package
|
||||
|
||||
`<name>.desktop` - for programs this file is optional, if included it will be added to `/usr/share/applications` to appear in the application launcher (which isn't relevant for all programs, like `run`). For panel plugins this is required and will be deployed to `/usr/share/xfce4/panel/plugins` so that the plugin is available to use.
|
||||
|
||||
## Installation
|
||||
This directory contains both XFCE panel plugins, and individual programs. Have a look in each directory, and check the `README.MD` on how to install the component.
|
||||
|
||||
## Developing Shell Components
|
||||
If you're planning to contribute by developing a program or plugin, then you should consider the following:
|
||||
- If you plan on writing a program, check that it is a shell component - things considered shell components are those that are typically part of explorer (including explorer itself) that are not really a program in their own right
|
||||
- This may sound vague, examples of this is: the run dialog, the autorun dialog, `winver`, explorer file browser, control panel (as part of explorer), etc.
|
||||
- If unsure, [check the issues page](https://github.com/rozniak/xfce-winxp-tc/issues?q=is%3Aissue+is%3Aopen+label%3Aadditional-program) for `additional-programs` tag to see if what you want to work on is there, if not, open a new issue and it can be discussed where it belongs
|
||||
- If you plan on writing a panel plugin, it is always considered a shell component, as the panel is part of the shell
|
||||
- If the program is not a shell component, it belongs under `/windows` rather than `/shell`
|
||||
26
shell/run/README.MD
Normal file
26
shell/run/README.MD
Normal file
@@ -0,0 +1,26 @@
|
||||
# run
|
||||
This directory contains the source code for the *Run* application.
|
||||
|
||||

|
||||
|
||||
## Installation
|
||||
See the `README.MD` under `/packaging/deb/programs` for packaging and installation.
|
||||
|
||||
## Building
|
||||
Standard CMake build:
|
||||
- `mkdir build`
|
||||
- `cd build`
|
||||
- `cmake ..`
|
||||
- (if you're missing libraries they will be mentioned here)
|
||||
- `make`
|
||||
|
||||
## Keyboard Shortcut
|
||||
You can add `run` to a keyboard shortcut on `Win`+`R`/`super`+`R` as follows:
|
||||
- Open *XFCE settings* (if using the Start menu, opening *Control Panel* will take you there)
|
||||
- Open the *Keyboard* section
|
||||
- Select the *Application Shortcuts* tab
|
||||
- Click *Add* (bottom left)
|
||||
- Type or browse for `/usr/bin/run`
|
||||
- Press the keyboard combination you would like to bind it with (typically `Win`+`R` / `super`+`R`)
|
||||
|
||||
Once done you should be able to press the keyboard shortcut, and the Run dialog will appear in the bottom left as expected.
|
||||
7
shell/run/debian-control
Normal file
7
shell/run/debian-control
Normal file
@@ -0,0 +1,7 @@
|
||||
Package: wintc-shell-run
|
||||
Version: 0.0.1
|
||||
Maintainer: Rory Fewell <roryf@oddmatics.uk>
|
||||
Architecture: amd64
|
||||
Section: non-free
|
||||
Description: Windows shell 'Run' application.
|
||||
Depends: libglib2.0-0, libgtk-3-0, libwintc-comgtk-1.0, libwintc-exec-1.0
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
project(startbutton-plugin)
|
||||
project(startmenu-plugin)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
@@ -33,7 +33,7 @@ link_directories(
|
||||
${XFCE4PANEL_LIBRARY_DIRS}
|
||||
${XFCE4UTIL_LIBRARY_DIRS})
|
||||
|
||||
add_library(startbutton-plugin MODULE
|
||||
add_library(startmenu-plugin MODULE
|
||||
src/action.h
|
||||
src/action.c
|
||||
src/placeslist.h
|
||||
@@ -51,7 +51,7 @@ add_library(startbutton-plugin MODULE
|
||||
src/util.h
|
||||
src/util.c)
|
||||
|
||||
target_link_libraries(startbutton-plugin
|
||||
target_link_libraries(startmenu-plugin
|
||||
PRIVATE ${GARCON_LIBRARIES}
|
||||
PRIVATE ${GARCON_GTK3_LIBRARIES}
|
||||
PRIVATE ${GDK_LIBRARIES}
|
||||
|
||||
25
shell/start/README.MD
Normal file
25
shell/start/README.MD
Normal file
@@ -0,0 +1,25 @@
|
||||
# libstartmenu-plugin
|
||||
This directory contains the source code for the Start menu XFCE panel plugin.
|
||||
|
||||

|
||||
|
||||
## Installation
|
||||
See the `README.MD` under `/packaging/deb/panel` for packaging and installation.
|
||||
|
||||
## Building
|
||||
Standard CMake build for the plugin:
|
||||
- `mkdir build`
|
||||
- `cd build`
|
||||
- `cmake ..`
|
||||
- (if you're missing libraries they will be mentioned here)
|
||||
- `make`
|
||||
|
||||
Then you must put the files in the right places in the filesystem:
|
||||
- Put the compiled `libstartmenu-plugin.so` in `/usr/lib/x86_64-linux-gnu/xfce4/panel/plugins` (adjust for your architecture)
|
||||
- Put `startmenu.desktop` in `/usr/share/xfce4/panel/plugins`
|
||||
- Copy files under `/res/*` to `/usr/share/winxp/shell-res` (you may need to create this directory)
|
||||
|
||||
Of course, with subsequent builds you will need to replace `libstartmenu.so` in the directory specified above, if you're developing.
|
||||
|
||||
## Keyboard Shortcut
|
||||
At the moment there is no ability to open the Start menu with the `super`/`Win` key - there is an issue open for this however: [#86](https://github.com/rozniak/xfce-winxp-tc/issues/86)
|
||||
7
shell/start/debian-control
Normal file
7
shell/start/debian-control
Normal file
@@ -0,0 +1,7 @@
|
||||
Package: xfce4-start-menu-plugin
|
||||
Version: 0.0.1
|
||||
Maintainer: Rory Fewell <roryf@oddmatics.uk>
|
||||
Architecture: amd64
|
||||
Section: non-free
|
||||
Description: Windows XP Start menu for XFCE.
|
||||
Depends: exo-utils, libgarcon-1-0, libgarcon-gtk3-1-0, libglib2.0-0, libgtk-3-0, libxfce4panel-2.0-4, libxfce4util7, xfce4-panel
|
||||
@@ -2,8 +2,8 @@
|
||||
Type=X-XFCE-PanelPlugin
|
||||
Encoding=UTF-8
|
||||
Name=Start button
|
||||
Comment=Windows XP Start button
|
||||
Comment=Windows XP Start menu
|
||||
Icon=start-logo
|
||||
X-XFCE-Module=startbutton-plugin
|
||||
X-XFCE-Module=startmenu-plugin
|
||||
X-XFCE-Internal=false
|
||||
X-XFCE-API=2.0
|
||||
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
project(systray-plugin)
|
||||
project(xpsystray-plugin)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
@@ -33,13 +33,13 @@ link_directories(
|
||||
${XFCE4PANEL_LIBRARY_DIRS}
|
||||
${XFCE4UTIL_LIBRARY_DIRS})
|
||||
|
||||
add_library(systray-plugin MODULE
|
||||
add_library(xpsystray-plugin MODULE
|
||||
src/clock.h
|
||||
src/clock.c
|
||||
src/plugin.h
|
||||
src/plugin.c)
|
||||
|
||||
target_link_libraries(systray-plugin
|
||||
target_link_libraries(xpsystray-plugin
|
||||
PRIVATE ${GARCON_LIBRARIES}
|
||||
PRIVATE ${GARCON_GTK3_LIBRARIES}
|
||||
PRIVATE ${GDK_LIBRARIES}
|
||||
|
||||
21
shell/systray/README.MD
Normal file
21
shell/systray/README.MD
Normal file
@@ -0,0 +1,21 @@
|
||||
# libxpsystray-plugin
|
||||
This directory contains the source code for the Notification Area XFCE panel plugin.
|
||||
|
||||

|
||||
|
||||
## Installation
|
||||
See the `README.MD` under `/packaging/deb/panel` for packaging and installation.
|
||||
|
||||
## Building
|
||||
Standard CMake build for the plugin:
|
||||
- `mkdir build`
|
||||
- `cd build`
|
||||
- `cmake ..`
|
||||
- (if you're missing libraries they will be mentioned here)
|
||||
- `make`
|
||||
|
||||
Then you must put the files in the right places in the filesystem:
|
||||
- Put the compiled `libxpsystray-plugin.so` in `/usr/lib/x86_64-linux-gnu/xfce4/panel/plugins` (adjust for your architecture)
|
||||
- Put `xpsystray.desktop` in `/usr/share/xfce4/panel/plugins`
|
||||
|
||||
Of course, with subsequent builds you will need to replace `libxpsystray-plugin.so` in the directory specified above, if you're developing.
|
||||
7
shell/systray/debian-control
Normal file
7
shell/systray/debian-control
Normal file
@@ -0,0 +1,7 @@
|
||||
Package: xfce4-xp-systray-plugin
|
||||
Version: 0.0.1
|
||||
Maintainer: Rory Fewell <roryf@oddmatics.uk>
|
||||
Architecture: amd64
|
||||
Section: non-free
|
||||
Description: Windows XP notification area for XFCE.
|
||||
Depends: libglib2.0-0, libgtk-3-0, libxfce4panel-2.0-4, libxfce4util7, xfce4-panel
|
||||
@@ -4,6 +4,6 @@ Encoding=UTF-8
|
||||
Name=Notification Area
|
||||
Comment=Windows XP notification area
|
||||
Icon=start-logo
|
||||
X-XFCE-Module=systray-plugin
|
||||
X-XFCE-Module=xpsystray-plugin
|
||||
X-XFCE-Internal=false
|
||||
X-XFCE-API=2.0
|
||||
15
shell/winver/README.MD
Normal file
15
shell/winver/README.MD
Normal file
@@ -0,0 +1,15 @@
|
||||
# winver
|
||||
This directory contains the source code for the `winver` application.
|
||||
|
||||

|
||||
|
||||
## Installation
|
||||
See the `README.MD` under `/packaging/deb/programs` for packaging and installation.
|
||||
|
||||
## Building
|
||||
Standard CMake build:
|
||||
- `mkdir build`
|
||||
- `cd build`
|
||||
- `cmake ..`
|
||||
- (if you're missing libraries they will be mentioned here)
|
||||
- `make`
|
||||
7
shell/winver/debian-control
Normal file
7
shell/winver/debian-control
Normal file
@@ -0,0 +1,7 @@
|
||||
Package: wintc-shell-winver
|
||||
Version: 0.0.1
|
||||
Maintainer: Rory Fewell <roryf@oddmatics.uk>
|
||||
Architecture: amd64
|
||||
Section: non-free
|
||||
Description: Windows shell 'winver' application.
|
||||
Depends: libglib2.0-0, libgtk-3-0
|
||||
21
submodules/README.MD
Normal file
21
submodules/README.MD
Normal file
@@ -0,0 +1,21 @@
|
||||
# Submodules / Forks
|
||||
This directory contains submodules referenced by this repository. Mostly forks of existing software tweaked to patch things to fix certain problems.
|
||||
|
||||
## Note about cloning
|
||||
If you simply `git clone`'d this repository these directories may be empty. If so, run `git submodule update --init --recursive` to make sure these submodules are also cloned.
|
||||
|
||||
## xfce-winxp-tc-panel
|
||||
This is a fork of `xfce4-panel` which patches a few things such as removing borders and fixing external plugin backgrounds. It is recommended to install this so that the Start button looks correct.
|
||||
|
||||
To install this fork:
|
||||
- `cd` into `xfce-winxp-tc-panel/packaging` (it should already be on the `test-borders` branch, but you can check with `git status`)
|
||||
- Build the packages by running these scripts:
|
||||
- `./pack-libxfce4panel-2.0.sh`
|
||||
- `./pack-xfce4-panel.sh`
|
||||
- Install the generated packages with:
|
||||
- `sudo dpkg -i libxfce4panel-2.0-4.deb`
|
||||
- `sudo dpkg -i xfce4-panel.deb`
|
||||
|
||||
You must then restart the panel, logging off and back on is sufficient to do this.
|
||||
|
||||
(In future I will hopefully tidy up the fork and see if the patches can be merged with upstream)
|
||||
1
submodules/xfce-winxp-tc-panel
Submodule
1
submodules/xfce-winxp-tc-panel
Submodule
Submodule submodules/xfce-winxp-tc-panel added at 57dd780e6f
8
themes/README.MD
Normal file
8
themes/README.MD
Normal file
@@ -0,0 +1,8 @@
|
||||
# Themes
|
||||
This directory contains the source files used to generate desktop themes (aka *visual styles*).
|
||||
|
||||
## Installation
|
||||
See the `README.MD` under `/packaging/deb/themes` for packaging and installation.
|
||||
|
||||
## Under construction
|
||||
Theme architecture will soon change, so there are no structure docs for the time being.
|
||||
Reference in New Issue
Block a user