• Stars
    star
    169
  • Rank 224,453 (Top 5 %)
  • Language
    Python
  • License
    Creative Commons ...
  • Created over 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

System76 Pop icon theme for Linux

Pop_Icons

Pop_Icons are the standard icons for Pop!_OS. It uses a semi-flat design with raised 3D motifs to help give depth to icons. Included in the theme are flat symbolic (single-color) icons as well as full-color stylized icons.

Pop_Icons take inspiration from the Adwaita GNOME Icons.

Copying or Reusing

This project has mixed licencing. You are free to copy, redistribute and/or modify aspects of this work under the terms of each licence accordingly (unless otherwise specified).

The icon assets (any and all source .svg files or rendered .png files) are licenced under the terms of the Creative Commons Attribution-ShareAlike 4.0 License.

Included scripts are free software licenced under the terms of the GNU General Public License, version 3.

When reusing this work please include a proper attribution:

"Pop Icons" by System76 is licensed under CC-SA-4.0

Downloading Pop

It is recommended to install Pop_Icons through your system package manager, e.g.:

sudo apt update
sudo apt install pop-icon-theme

If your OS does not package Pop_Icons, you can install them from git:

git clone https://github.com/pop-os/icon-theme pop-icon-theme
cd pop-icon-theme
meson build
sudo ninja -C "build" install

By default the theme installs to /usr/, but you can specify a different directory with a prefix like /usr/local or $HOME/.local, for example:

meson -Dprefix=$HOME/.local build
ninja -C "build" install

After which you should be able to pick Pop as your icon or cursor theme in GNOME Tweaks, or you can set either from a terminal with:

# set the icon theme
gsettings set org.gnome.desktop.interface icon-theme "Pop"
# or the cursor theme
gsettings set org.gnome.desktop.interface cursor-theme "Pop"

Uninstalling Pop

To uninstall Pop, simply run the following. (If you installed it without superuser priveleges just omit the sudo.)

sudo ninja -C "build" uninstall

Once uninstalled you can reset your icon and cursor theme to the default setting by running the following.

# reset icon theme to default
gsettings reset org.gnome.desktop.interface icon-theme
# reset cursor theme to default
gsettings reset org.gnome.desktop.interface cursor-theme

Modifying the theme

Pop uses the meson build system, and can be built using:

meson build
ninja -C build install

Icons and cursors are shipped pre-rendered in order to save time in the event of modifications to the theme as well as reducing build-load on the Pop_OS build servers. Most modifications are rendered using ./master-render.py. For making/rendering modifications:

General Rendering

The ./master-render.py script takes care of rendering each different type of file in the theme. Running it by default will render any missing icon files and any updated full-color icons. You can render specific parts of the theme by using the following flags:

  -a, --all        Render all items (Default)
  -f, --fullcolor  Render fullcolor icons
  -s, --symbolics  Render Symbolic Icons
  -x, --cursors    Render Cursors
  -l, --links      Generate Theme Symlinks
  -m, --metadata   Generate Metadata

Using the -c, --clean option will erase the currently rendered/generated files in the specified, rendering context, which is helpful in the event a source-file is not rendering when it should be. Using it will re-render all files in the specified context, which can take a long time, so use with care. Using the -c flag with -a, --all or without another context will erase all files in the theme and require re-rendering all of them, so be extra careful.

Multiple contexts can be combined to render/clean multiple context in one pass, except that any contexts other than -a, --all will disable --all so keep that in mind.

Rendering Dependencies

The following packages are required to render all of the files within the theme:

python # Running main, full-color, and cursor render scripts
ruby # Running symbolic icons render script
bash # Running symlink script
inkscape # Renders source files to output
python3-pil # Renders cursors
x11-apps # Rendering cursors

Additionally, the following are optional, but will improve the output of the rendering:

scour # Cleaning up unused definitions from full-color/symbolic SVGs
svgo # Optimizing full-color and symbolic SVGs
symlinks # Remove empty symlinks

Full-color icons

The full-color icons are stored within the src/fullcolor folder, and are organized into subdirectories for each category of icon. After making a modification to a source icon, the changes will automatically be rendered into the required icon files by ./master-render.py; if the script is not rendering your icon, double-check that the file timestamp has been updated and that the source file follows the related formatting requirements in src/fullcolor/README.md.

Symbolic Icons

The symbolic/single-color icons are stored within the src/scalable/source-symbolic.svg file. The file has separate layer for each different category of icon within the theme. Ensure when you modify the file, that your icon is located within the correct layer for it to end up in the correct output directory.

Symbolic icons require that you remove the corresponding output icon from the Pop/scalable folder in order for the master-render.py script to re-render. The reason for this is that because there is only a single symbolic source-file, we can't re-render a single icon automatically. If you prefer to let the icons re-render automatically and don't mind waiting for all of the symbolics to render, you can do so using ./master-render.py -cls

Additional information about the symbolic icons can be found in src/scalable/README.md

Cursors

Cursors are stored in the src/cursors directory. Because cursors are somewhat complicated/difficult to render as they are often animated, and because they use a single source file, they need to be re-rendered each time using ./master-render.py -cx. You can also manually delete the Pop/cursors directory. Additional information about rendering the cursors is found in src/cursors/README.md

Symbolic Links

Pop_Icons uses symbolic links to save on disk space and match a larger number of icon names without needing as many unique icons.

Symbolic link definitions are separated out into fullcolor for the full-color icons, and scalable for the symbolic icons. Each directory contains a .list file for each icon category. Each line in a .list file defines exactly one output symlink. The format for each line is link-target link-name similar to the ln command. For more information regarding symlinks, see the src/symlinks/README.md file.

Metadata

Currently theme metadata is stored in the main folder within index.theme.in and cursor.theme.in. When the output files of these is generated, these are copied directly into the output folder without modification; automatic generation is a planned feature for a later release. In the meantime, modify these files directly and use ./master-render.py to copy them to the correct locations.

Pull Requests

We happily consider all pull requests sent our way. When submitting a PR, be sure to abide by our Code of Conduct, as submissions in violation will be rejected.

To improve the quality of your submission and increase the chances of acceptance, please consider the following guidelines:

  • Ensure that your contribution is of a generally finished quality. PRs and contributions requiring further development by the Pop_OS team may not be accepted.

  • Follow existing code and design style where possible. Submissions which don't follow our code or design style may require changes to be accepted. Ensure that icons follow our design language and generally "fit in" with the other Pop Icons. When in doubt, mark your PR as a draft and request assistance from a Pop Icons maintainer.

  • Ensure that your changes to icons/cursors follow our in-place development practices. Submissions which add/remove/rename icons within the Pop folder without corresponding changes in the src folder will not be accepted.

  • Ensure that your icons are rendered out before submitting. Un-render changes will not be visible in the installed theme.

  • Consider doing a full-render of the theme before you submit a PR (./master-render.py -c). This will erase any existing output files and ensure the theme is in a good, maintainable state and that your changes have been applied in a way which ensures that they will be carried over in the future. Contributions where running ./master-render.py -c creates a diff verses the git HEAD commit will not be accepted! Performing this step prior to submitting your PR will catch many of the above problems before they appear.

Missing Icons & Requests

You can file an icon request as a GitHub issue. Filing an icon request or reporting a missing icon, please take care in providing the following useful information:

  • A screenshot of your issue or an image of the original icon you are requesting to be themed
  • The file name for the missing icon or the requested icon, for example image-adjust.svg or system-shutdown.svg

Note: Pop does not supply icons for third-party applications, only those which come with Pop!_OS.

Donate & Support

Pop_Icons use Sam Hewitt's Paper icons as an architectural base, although the icon artwork is new. If you would like to support development by making a donation you can do so here or by becoming a supporter on Patreon or Liberapay.

More Repositories

1

shell

Pop!_OS Shell
TypeScript
4,276
star
2

cosmic-epoch

Next generation Cosmic desktop environment
Just
2,766
star
3

pop

A project for managing all Pop!_OS sources
Rust
2,128
star
4

cosmic-text

Pure Rust multi-line text handling
Rust
1,571
star
5

cosmic

Computer Operating System Main Interface Components
JavaScript
1,066
star
6

gtk-theme

System76 Pop GTK+ Theme
SCSS
747
star
7

system76-scheduler

Auto-configure CFS and process priorities for improved desktop responsiveness
Rust
540
star
8

popsicle

Multiple USB File Flasher
Rust
520
star
9

system76-power

System76 Power Management
Rust
512
star
10

cosmic-comp

Compositor for the COSMIC desktop environment
Rust
466
star
11

iso

Pop!_OS ISO production
Makefile
439
star
12

libcosmic

WIP library for COSMIC applications
Rust
416
star
13

cosmic-term

WIP COSMIC terminal emulator
Rust
366
star
14

beta

Pop!_OS Beta
353
star
15

keyboard-configurator

Keyboard configuration UI
Rust
231
star
16

cosmic-edit

COSMIC Text Editor
Rust
225
star
17

distinst

Installer Backend
Rust
207
star
18

launcher

Modular IPC-based desktop launcher service
Rust
203
star
19

tensorman

Utility for easy management of Tensorflow containers
Rust
190
star
20

cosmic-applets

WIP applets for cosmic-panel
Rust
174
star
21

firmware-manager

Generic framework and GTK UI for firmware updates from system76-firmware and fwupd, written in Rust.
Rust
163
star
22

cosmic-settings

COSMIC Settings
Rust
151
star
23

wallpapers

Wallpapers for Pop!_OS
Makefile
149
star
24

cosmic-panel

WIP
Rust
110
star
25

nvidia-graphics-drivers

Pop!_OS NVIDIA Graphics Drivers
110
star
26

cosmic-launcher

WIP
Rust
102
star
27

system76-driver

System76 Driver for Pop!_OS
Python
101
star
28

cosmic-files

WIP COSMIC file manager
Rust
93
star
29

upgrade

Utility for upgrading Pop!_OS and its recovery partition to new releases.
Rust
90
star
30

cosmic-time

Animation Library for https://github.com/iced-rs/iced and https://github.com/pop-os/cosmic-epoch
Rust
86
star
31

gnome-shell-extension-system76-power

System76 Power Management Extension
TypeScript
74
star
32

cosmic-store

WIP COSMIC app store
Rust
72
star
33

system76-firmware

System76 Firmware Tool and Daemon
Rust
71
star
34

fonts

Fonts for the System76 Pop look, Fira and Roboto Slab
Makefile
68
star
35

cosmic-dock

Pop!_OS fork of https://github.com/micheleg/dash-to-dock/tree/ubuntu-dock
JavaScript
68
star
36

pop-arm64

Experimental scripts for building an Pop!_OS for ARM64 EFI platforms.
Shell
67
star
37

tiler

Generic tiling window manager library in Rust
Rust
65
star
38

cosmic-session

Session manager for the COSMIC desktop environment
Rust
65
star
39

core

WIP immutable base
Rust
56
star
40

cosmic-applibrary

WIP
Rust
55
star
41

shell-shortcuts

Application for displaying and demoing Pop Shell shortcuts
Rust
53
star
42

debrepbuild

A project for automatically generating and maintaining Debian repositories from a TOML spec.
Rust
53
star
43

cosmic-greeter

libcosmic greeter for greetd, which can be run inside cosmic-comp
Rust
50
star
44

theme

A metapackage including pop-fonts, pop-gtk-theme, and pop-icon-theme
42
star
45

desktop-widget

Pop Desktop Settings Widget
Fluent
41
star
46

touchegg

Pop!_OS fork of https://github.com/JoseExposito/touchegg
C++
36
star
47

async-fetcher

Rust crate for asynchronous file fetching, using optional fetching based on modified times and checksums
Rust
36
star
48

system76-dkms

System76 DKMS driver
C
36
star
49

sys-mount

High level FFI binding around the sys mount & umount2 calls, for Rust
Rust
36
star
50

url-scraper

Rust crate for scraping URLs from HTML pages
Rust
36
star
51

cosmic-wallpapers

Wallpapers for the COSMIC Desktop Environment
Makefile
36
star
52

gnome-shell-theme

The GNOME Shell theme for Pop!_OS
CSS
35
star
53

xdg-desktop-portal-cosmic

Rust
35
star
54

default-settings

Distribution Default Settings
Shell
35
star
55

cosmic-workspaces

Pop!_OS fork of https://github.com/RensAlthuis/vertical-overview
JavaScript
35
star
56

cosmic-app-template

Project template for creating applications for the COSMICâ„¢ desktop
Rust
34
star
57

linux-firmware

Pop!_OS fork of https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux-firmware
C
29
star
58

cosmic-reader

WIP COSMIC PDF reader
Rust
28
star
59

gnome-control-center

Pop!_OS fork of https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-control-center
C
27
star
60

bus-writer

Single-reader, multi-writer & single-reader, multi-verifier; broadcasts reads to multiple writeable destinations in parallel
Rust
27
star
61

website

The Pop!_OS website
Vue
27
star
62

system-updater

Systemd services for checking for and applying system updates.
Rust
27
star
63

pidfd

Rust crate providing Linux (>= 5.3) PID file descriptor support
Rust
27
star
64

cosmic-randr

Library and utility for displaying and configuring Wayland outputs
Rust
27
star
65

buildchain

Software for creating and managing a distributed and reproducible chain of builds
Rust
27
star
66

desktop

Desktop metapackage
25
star
67

cosmic-protocols

Addtional wayland-protocols used by the COSMIC desktop environment
Rust
25
star
68

cosmic-osd

Rust
25
star
69

cosmic-theme-editor

WIP
Rust
24
star
70

system76-oled

Control brightness on OLED displays
Rust
24
star
71

cosmic-player

WIP COSMIC media player
Rust
22
star
72

libparted

Rust wrappers for libparted
Rust
22
star
73

gnome-shell-extension-do-not-disturb

Enable or disable do not disturb mode.
JavaScript
21
star
74

gnome-shell

Pop!_OS fork of https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-shell
C
21
star
75

cosmic-workspaces-epoch

Rust
21
star
76

cosmic-screenshot

Utility for capturing screenshots via XDG Desktop Portal
Rust
21
star
77

theme-switcher

Pop!_OS GTK widget library / app for switching themes
Rust
20
star
78

cosmic-settings-daemon

Rust
20
star
79

progress-streams

Rust crate to extend io::Read & io::Write types with progress callbacks
Rust
19
star
80

freedesktop-desktop-entry

Rust crate for navigating Freedesktop desktop entries
Rust
19
star
81

cosmic-notifications

Rust
19
star
82

sysfs-class

Rust library for viewing /sys/class in an object-oriented format
Rust
18
star
83

system76-wallpapers

System76 Wallpapers
17
star
84

plymouth-theme

Plymouth splash screen themes
Shell
17
star
85

systemd-boot-conf

Rust crate for managing the systemd-boot loader configuration.
Rust
17
star
86

cosmic-bg

Rust
17
star
87

repo-release

Produces Pop release package repositories
Shell
16
star
88

dbus-udisks2

Rust library for interacting with the UDisks2 DBus API
Rust
16
star
89

cosmic-theme

WIP
Rust
16
star
90

libcosmic-book

Guide for starting development with libcosmic: https://pop-os.github.io/libcosmic-book/
16
star
91

system76-acpi-dkms

System76 ACPI Driver (DKMS)
C
15
star
92

gtk-extras

Rust crate containing an assortment of extra, unofficial GTK patterns, widgets, and traits.
Rust
13
star
93

as-result

Rust crate which provides the `AsResult<T, E>` and `IntoResult<T, E>` traits.
Rust
13
star
94

debarchive

Rust crate which provides direct access to files within a Debian archive
Rust
13
star
95

mutter-rs

Rust wrappers for Mutter and related projects
Rust
13
star
96

proc-mounts

Rust crate for fetching active mounts and swaps on a Linux system
Rust
13
star
97

os-release

Rust crate for parsing the /etc/os-release file, common with Linux distributions
Rust
13
star
98

iced-sctk

WIP
Rust
12
star
99

grub-theme

Grub bootloader theme
12
star
100

cog-stable-diffusion

Packaging for convenience of installation and setup of stable diffusion on Pop
Python
12
star