diff --git a/.gitignore b/.gitignore
index 2f7896d1..ce7463a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,25 @@
+# Cargo
+.cargo.
target/
+build/
+_build/
+builddir/
+vendor/
+vendor.tar
+
+build-aux/app
+build-aux/.flatpak-builder/
+.flatpak/
+flatpak_app
+.flatpak-builder
+
+.*
+debian/*
+!debian/*install
+!debian/*postinst
+!debian/changelog
+!debian/copyright
+!debian/control
+!debian/links
+!debian/rules
+!debian/source
diff --git a/applets/cosmic-applet-audio/data/com.system76.CosmicAppletAudio.desktop b/applets/cosmic-applet-audio/data/com.system76.CosmicAppletAudio.desktop
new file mode 100644
index 00000000..aca6cf6d
--- /dev/null
+++ b/applets/cosmic-applet-audio/data/com.system76.CosmicAppletAudio.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Name=Cosmic Dock App List
+Comment=Write a GTK + Rust application
+Type=Application
+Exec=cosmic-dock-app-list
+Terminal=false
+Categories=GNOME;GTK;
+Keywords=Gnome;GTK;
+# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
+Icon=com.system76.CosmicDockAppList.svg
+StartupNotify=true
+NoDisplay=true
diff --git a/applets/cosmic-applet-audio/data/icons/com.system76.CosmicAppletAudio.svg b/applets/cosmic-applet-audio/data/icons/com.system76.CosmicAppletAudio.svg
new file mode 100644
index 00000000..c2bd5b1b
--- /dev/null
+++ b/applets/cosmic-applet-audio/data/icons/com.system76.CosmicAppletAudio.svg
@@ -0,0 +1,60 @@
+
+
diff --git a/applets/cosmic-applet-audio/data/resources/resources.gresource.xml b/applets/cosmic-applet-audio/data/resources/resources.gresource.xml
new file mode 100644
index 00000000..2cf0970f
--- /dev/null
+++ b/applets/cosmic-applet-audio/data/resources/resources.gresource.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/applets/cosmic-applet-graphics/data/com.system76.CosmicAppletGraphics.desktop b/applets/cosmic-applet-graphics/data/com.system76.CosmicAppletGraphics.desktop
new file mode 100644
index 00000000..aca6cf6d
--- /dev/null
+++ b/applets/cosmic-applet-graphics/data/com.system76.CosmicAppletGraphics.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Name=Cosmic Dock App List
+Comment=Write a GTK + Rust application
+Type=Application
+Exec=cosmic-dock-app-list
+Terminal=false
+Categories=GNOME;GTK;
+Keywords=Gnome;GTK;
+# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
+Icon=com.system76.CosmicDockAppList.svg
+StartupNotify=true
+NoDisplay=true
diff --git a/applets/cosmic-applet-graphics/data/icons/com.system76.CosmicAppletGraphics.svg b/applets/cosmic-applet-graphics/data/icons/com.system76.CosmicAppletGraphics.svg
new file mode 100644
index 00000000..c2bd5b1b
--- /dev/null
+++ b/applets/cosmic-applet-graphics/data/icons/com.system76.CosmicAppletGraphics.svg
@@ -0,0 +1,60 @@
+
+
diff --git a/applets/cosmic-applet-graphics/data/resources/resources.gresource.xml b/applets/cosmic-applet-graphics/data/resources/resources.gresource.xml
new file mode 100644
index 00000000..2cf0970f
--- /dev/null
+++ b/applets/cosmic-applet-graphics/data/resources/resources.gresource.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/applets/cosmic-applet-network/data/com.system76.CosmicAppletNetwork.desktop b/applets/cosmic-applet-network/data/com.system76.CosmicAppletNetwork.desktop
new file mode 100644
index 00000000..aca6cf6d
--- /dev/null
+++ b/applets/cosmic-applet-network/data/com.system76.CosmicAppletNetwork.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Name=Cosmic Dock App List
+Comment=Write a GTK + Rust application
+Type=Application
+Exec=cosmic-dock-app-list
+Terminal=false
+Categories=GNOME;GTK;
+Keywords=Gnome;GTK;
+# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
+Icon=com.system76.CosmicDockAppList.svg
+StartupNotify=true
+NoDisplay=true
diff --git a/applets/cosmic-applet-network/data/icons/com.system76.CosmicAppletNetwork.svg b/applets/cosmic-applet-network/data/icons/com.system76.CosmicAppletNetwork.svg
new file mode 100644
index 00000000..c2bd5b1b
--- /dev/null
+++ b/applets/cosmic-applet-network/data/icons/com.system76.CosmicAppletNetwork.svg
@@ -0,0 +1,60 @@
+
+
diff --git a/applets/cosmic-applet-network/data/resources/resources.gresource.xml b/applets/cosmic-applet-network/data/resources/resources.gresource.xml
new file mode 100644
index 00000000..2cf0970f
--- /dev/null
+++ b/applets/cosmic-applet-network/data/resources/resources.gresource.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/applets/cosmic-applet-power/data/com.system76.CosmicAppletPower.desktop b/applets/cosmic-applet-power/data/com.system76.CosmicAppletPower.desktop
new file mode 100644
index 00000000..aca6cf6d
--- /dev/null
+++ b/applets/cosmic-applet-power/data/com.system76.CosmicAppletPower.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Name=Cosmic Dock App List
+Comment=Write a GTK + Rust application
+Type=Application
+Exec=cosmic-dock-app-list
+Terminal=false
+Categories=GNOME;GTK;
+Keywords=Gnome;GTK;
+# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
+Icon=com.system76.CosmicDockAppList.svg
+StartupNotify=true
+NoDisplay=true
diff --git a/applets/cosmic-applet-power/data/icons/com.system76.CosmicAppletPower.svg b/applets/cosmic-applet-power/data/icons/com.system76.CosmicAppletPower.svg
new file mode 100644
index 00000000..c2bd5b1b
--- /dev/null
+++ b/applets/cosmic-applet-power/data/icons/com.system76.CosmicAppletPower.svg
@@ -0,0 +1,60 @@
+
+
diff --git a/applets/cosmic-applet-power/data/resources/resources.gresource.xml b/applets/cosmic-applet-power/data/resources/resources.gresource.xml
new file mode 100644
index 00000000..2cf0970f
--- /dev/null
+++ b/applets/cosmic-applet-power/data/resources/resources.gresource.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 00000000..44f7780f
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+cosmic-applets (0.1.0) UNRELEASED; urgency=medium
+
+ * Initial release.
+
+ -- Ashley Wulber Thu, 07 Apr 2022 09:39:19 -0700
diff --git a/debian/control b/debian/control
new file mode 100644
index 00000000..0487dcd9
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,21 @@
+Source: cosmic-applets
+Section: admin
+Priority: optional
+Maintainer: system76
+Build-Depends:
+ debhelper (>= 11),
+ debhelper-compat (= 11),
+ rustc (>=1.57),
+ cargo,
+ libgtk-4-dev,
+ just,
+ pkg-config,
+Standards-Version: 4.3.0
+Homepage: https://github.com/pop-os/cosmic-applets
+
+Package: cosmic-applets
+Architecture: amd64 arm64
+Depends:
+ ${misc:Depends},
+ ${shlibs:Depends}
+Description: XDG Shell Wrapper
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 00000000..ac8bcd6e
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,9 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: cosmic-applets
+Source: https://github.com/pop-os/cosmic-applets
+
+Files: *
+Copyright: Copyright 2022 system76
+License: MPL-2.0
+ The complete text of the Mozilla Public License 2.0 can be found in
+ the file `/usr/share/common-licenses/MPL-2.0'.
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 00000000..c903bfe4
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,30 @@
+#!/usr/bin/make -f
+
+DESTDIR = debian/cosmic-applets
+CLEAN ?= 1
+VENDOR ?= 1
+
+%:
+ dh $@
+
+override_dh_shlibdeps:
+ dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
+
+override_dh_auto_clean:
+ if test "${CLEAN}" = "1"; then \
+ cargo clean; \
+ fi
+
+ if ! ischroot && test "${VENDOR}" = "1"; then \
+ mkdir -p .cargo; \
+ cargo vendor --sync Cargo.toml | head -n -1 > .cargo/config; \
+ echo 'directory = "vendor"' >> .cargo/config; \
+ tar pcf vendor.tar vendor; \
+ rm -rf vendor; \
+ fi
+
+override_dh_auto_build:
+ just rootdir=$(DESTDIR) debug=$(DEBUG) vendor=$(VENDOR)
+
+override_dh_auto_install:
+ just rootdir=$(DESTDIR) install
\ No newline at end of file
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 00000000..89ae9db8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/justfile b/justfile
new file mode 100644
index 00000000..5afda439
--- /dev/null
+++ b/justfile
@@ -0,0 +1,51 @@
+rootdir := ''
+prefix := '/usr'
+clean := '0'
+debug := '0'
+vendor := '0'
+target := if debug == '1' { 'debug' } else { 'release' }
+vendor_args := if vendor == '1' { '--frozen --offline' } else { '' }
+debug_args := if debug == '1' { '' } else { '--release' }
+cargo_args := vendor_args + ' ' + debug_args
+
+
+sharedir := rootdir + prefix + '/share'
+iconsdir := sharedir + '/icons/hicolor/scalable/apps'
+bindir := rootdir + prefix + '/bin'
+
+audio_id := 'com.system76.CosmicAppletAudio'
+graphics_id := 'com.system76.CosmicAppletGraphics'
+network_id := 'com.system76.CosmicAppletNetwork'
+power_id := 'com.system76.CosmicAppletPower'
+
+all: _extract_vendor
+ cargo build {{cargo_args}}
+
+# Installs files into the system
+install:
+ # audio
+ install -Dm0644 applets/cosmic-applet-audio/data/icons/{{audio_id}}.svg {{iconsdir}}/{{audio_id}}.svg
+ install -Dm0644 applets/cosmic-applet-audio/data/{{audio_id}}.desktop {{sharedir}}/applications/{{audio_id}}.desktop
+ install -Dm04755 target/release/cosmic-applet-audio {{bindir}}/cosmic-applet-audio
+
+ # graphics
+ install -Dm0644 applets/cosmic-applet-graphics/data/icons/{{graphics_id}}.svg {{iconsdir}}/{{graphics_id}}.svg
+ install -Dm0644 applets/cosmic-applet-graphics/data/{{graphics_id}}.desktop {{sharedir}}/applications/{{graphics_id}}.desktop
+ install -Dm04755 target/release/cosmic-applet-graphics {{bindir}}/cosmic-applet-graphics
+
+ # network
+ install -Dm0644 applets/cosmic-applet-network/data/icons/{{network_id}}.svg {{iconsdir}}/{{network_id}}.svg
+ install -Dm0644 applets/cosmic-applet-network/data/{{network_id}}.desktop {{sharedir}}/applications/{{network_id}}.desktop
+ install -Dm04755 target/release/cosmic-applet-network {{bindir}}/cosmic-applet-network
+
+ # power
+ install -Dm0644 applets/cosmic-applet-power/data/icons/{{power_id}}.svg {{iconsdir}}/{{power_id}}.svg
+ install -Dm0644 applets/cosmic-applet-power/data/{{power_id}}.desktop {{sharedir}}/applications/{{power_id}}.desktop
+ install -Dm04755 target/release/cosmic-applet-power {{bindir}}/cosmic-applet-power
+
+# Extracts vendored dependencies if vendor=1
+_extract_vendor:
+ #!/usr/bin/env sh
+ if test {{vendor}} = 1; then
+ rm -rf vendor; tar pxf vendor.tar
+ fi