Skip to content

JakobHuemer/papertimed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Papertimed

Papaertimed is a little daemon to controll which wallpaper is shown at what time.

Installation

Currently, only installation via a nix flake is supported:

Add this flake input to your flake:

# flake.nix
{
  inputs.papertimed.url = "github:jakobhuemer/papertimed";
}

Then import the module and enable the service:

{
  imports = [
    inputs.papertimed.homeModules.default
  ];

  services.papertimed = {
    enable = true;
    
    # settings = { };
  };
}

Use the overlay:

{
  inputs.papertimed.url = "github:jakobhuemer/papertimed";

  outputs = { self, nixpkgs, papertimed, ... }: {
    nixosConfigurations.yourHost = nixpkgs.lib.nixosSystem {
      modules = [
        {
          nixpkgs.overlays = [ papertimed.overlays.default ];

          environment.systemPackages = with pkgs; [
            papertimed
          ];
        }
      ];
    };
  };
}

Configuration

First, make sure that your current background utility does not automatically switch wallpapers itself on a scheduled basis as this conflicts with papertimed.

The configuration file for papertimed is located at ~/.config/papertimed/config.yaml.

Supported file formats are: JSON, TOML, YAML, INI, RON, JSON5, CORN

An example of a valid configuration is in examples/config.yaml.

Supported Adapters

  • wpaperd: Overwrites the configuration at ~/.config/wpaperd/wallpaper.toml
  • hyprpaper: Required hyprpaper ipc to be turned on. More info on hyprpaper
  • custom: Define a custom shell command that is executed for every image on every monitor with monitor and image injected using MiniJinja for templating. e.g.: awww -o {{ monitor }} {{ image }}

global

wallpapers

An array of wallpapers where each element has:

  • filename: The filename of the background image
  • schedules: An array of schedule ids when the immage should be shown

schedules

An array of all schedules that can then be assigned to wallpapers:

  • id: A string identifying the schedule
  • rules: All rules of must be true for the schedule to take effect. You can define rules for daytime, weekday or day of the year, etc.

schedules.rules

  • day_time: Define when on the day the schedule runs. e.g. 05:00 - 15:00
    • from/to: Daytime e.g. 05:23:50.
    • e.g. from = 05:23:50, to = 14:15:00
  • week_days: Array of days when to run this schedule. e.g. ["monday", "tuesday", "wed"]
  • year_days: Array of days in a year when to run this schedule. e.g. [1, 4, 340]

Todos

  • Basic daily/weekly/yearly wallpaper schedule for wpaperd utility
  • Support for multiple wallpaper utilities
  • Preset profiles for different wallpaper utilities like wpaperd, hyprpaper,
  • Per monitor schedules/wallpapers etc.
  • Wallpaper schedules support custom metadata that can be forwarded to the wallpaper utility per wallpaper (like meta.fit being cover for one and fit for another image) - [ ] Manual and automatic timezone selection
  • Custom schedule definition with a shell command
  • Scheduled sleep instead of polling
  • Restructure config to allow reusing wallpapers and have a binding allowing
  • Home Manager Module + overlay config structure
  • Add support for schedule types
    • cron
    • rrules

About

Papaertimed is a little daemon to controll which wallpaper is shown at what time.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors