# Common segments

## VCS submodule

class powerline.segments.common.vcs.BranchSegment

class powerline.segments.common.vcs.StashSegment

## System properties

class powerline.segments.common.sys.CPULoadPercentSegment

powerline.segments.common.sys.system_load(pl, format='{avg:.1f}', threshold_good=1, threshold_bad=2, track_cpu_count=False, short=False)

  Return system load average.

  Highlights using `system_load_good`, `system_load_bad` and `system_load_ugly` highlighting groups, depending on the thresholds passed to the function.

  Parameters:

    - format (str) – format string, receives `avg` as an argument

    - threshold_good (float) – threshold for gradient level 0: any normalized load average below this value will have this gradient level.

    - threshold_bad (float) – threshold for gradient level 100: any normalized load average above this value will have this gradient level. Load averages between `threshold_good` and `threshold_bad` receive gradient level that indicates relative position in this interval: (`100 * (cur-good) / (bad-good)`). Note: both parameters are checked against normalized load averages.

    - track_cpu_count (bool) – if True powerline will continuously poll the system to detect changes in the number of CPUs.

    - short (bool) – if True only the sys load over last 1 minute will be displayed.

  Divider highlight group used: `background:divider`.

  Highlight groups used: `system_load_gradient` (gradient) or `system_load`.

powerline.segments.common.sys.uptime(pl, days_format='{days:d}d', hours_format=' {hours:d}h', minutes_format=' {minutes:02d}m', seconds_format=' {seconds:02d}s', shorten_len=3)

  Return system uptime.

  Parameters:

    - days_format (str) – day format string, will be passed `days` as the argument

    - hours_format (str) – hour format string, will be passed `hours` as the argument

    - minutes_format (str) – minute format string, will be passed `minutes` as the argument

    - seconds_format (str) – second format string, will be passed `seconds` as the argument

    - shorten_len (int) – shorten the amount of units (days, hours, etc.) displayed

  Divider highlight group used: `background:divider`.

## Network

class powerline.segments.common.net.ExternalIpSegment

class powerline.segments.common.net.NetworkLoadSegment

powerline.segments.common.net.hostname(pl, segment_info, only_if_ssh=False, exclude_domain=False)

  Return the current hostname.

  Parameters:

    - only_if_ssh (bool) – only return the hostname if currently in an SSH session

    - exclude_domain (bool) – return the hostname without domain if there is one

powerline.segments.common.net.internal_ip(pl, interface='auto', ipv=4)

  Return internal IP address

  Requires `netifaces` module to work properly.

  Parameters:

    - interface (str) –

      Interface on which IP will be checked. Use `auto` to automatically detect interface. In this case interfaces with lower numbers will be preferred over interfaces with similar names. Order of preference based on names:

      1. `eth` and `enp` followed by number or the end of string.

      2. `ath`, `wlan` and `wlp` followed by number or the end of string.

      3. `teredo` followed by number or the end of string.

      4. Any other interface that is not `lo*`.

      5. `lo` followed by number or the end of string.

      Use `default_gateway` to detect the interface based on the machine’s default gateway (i.e., the router to which it is connected).

    - ipv (int) – 4 or 6 for ipv4 and ipv6 respectively, depending on which IP address you need exactly.

## Current environment

class powerline.segments.common.env.CwdSegment
  argspecobjs()

    Return a list of valid arguments for inspect.getargspec

    Used to determine function arguments.

  omitted_args(name, method)

    List arguments which should be omitted

    Returns a tuple with indexes of omitted arguments.

powerline.segments.common.env.environment(pl, segment_info, variable=None)

  Return the value of any defined environment variable

  Parameters:

    variable (string) – The environment variable to return if found

powerline.segments.common.env.user(pl, segment_info, hide_user=None, hide_domain=False)

  Return the current user.

  Parameters:

    - hide_user (str) – Omit showing segment for users with names equal to this string.

    - hide_domain (bool) – Drop domain component if it exists in a username (delimited by ‘@’).

  Highlights the user with the `superuser` if the effective user ID is 0.

  Highlight groups used: `superuser` or `user`. It is recommended to define all highlight groups.

powerline.segments.common.env.virtualenv(pl, segment_info, ignore_venv=False, ignore_conda=False, ignored_names=('venv', '.venv'))

  Return the name of the current Python or conda virtualenv. :param list ignored_names:

  > Names of venvs to ignore. Will then get the name of the venv by ascending to the parent directory

  Parameters:

    - ignore_venv (bool) – Whether to ignore virtual environments. Default is False.

    - ignore_conda (bool) – Whether to ignore conda environments. Default is False.

## Battery

powerline.segments.common.bat.battery(pl, format='{ac_state} {capacity:3.0%}', steps=5, gamify=False, full_heart='O', empty_heart='O', online='C', offline=' ')

  Return battery charge status.

  Parameters:

    - format (str) – Percent format in case gamify is False. Format arguments: `ac_state` which is equal to either `online` or `offline` string arguments and `capacity` which is equal to current battery capacity in interval [0, 100].

    - steps (int) – Number of discrete steps to show between 0% and 100% capacity if gamify is True.

    - gamify (bool) – Measure in hearts (♥) instead of percentages. For full hearts `battery_full` highlighting group is preferred, for empty hearts there is `battery_empty`. `battery_online` or `battery_offline` group will be used for leading segment containing `online` or `offline` argument contents.

    - full_heart (str) – Heart displayed for “full” part of battery.

    - empty_heart (str) – Heart displayed for “used” part of battery. It is also displayed using another gradient level and highlighting group, so it is OK for it to be the same as full_heart as long as necessary highlighting groups are defined.

    - online (str) – Symbol used if computer is connected to a power supply.

    - offline (str) – Symbol used if computer is not connected to a power supply.

  `battery_gradient` and `battery` groups are used in any case, first is preferred.

  Highlight groups used: `battery_full` or `battery_gradient` (gradient) or `battery`, `battery_empty` or `battery_gradient` (gradient) or `battery`, `battery_online` or `battery_ac_state` or `battery_gradient` (gradient) or `battery`, `battery_offline` or `battery_ac_state` or `battery_gradient` (gradient) or `battery`.

## Weather

class powerline.segments.common.wthr.WeatherSegment

## Date and time

powerline.segments.common.time.date(pl, format='%Y-%m-%d', istime=False, timezone=None)

  Return the current date.

  Parameters:

    - format (str) – strftime-style date format string

    - istime (bool) – If true then segment uses `time` highlight group.

    - timezone (string) – Specify a timezone to use as `+HHMM` or `-HHMM`. (Defaults to system defaults.)

  Divider highlight group used: `time:divider`.

  Highlight groups used: `time` or `date`.

powerline.segments.common.time.fuzzy_time(pl, format=None, unicode_text=False, timezone=None, hour_str=['twelve', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven'], minute_str={'0': "{hour_str} o'clock", '10': 'ten past {hour_str}', '15': 'quarter past {hour_str}', '20': 'twenty past {hour_str}', '25': 'twenty-five past {hour_str}', '30': 'half past {hour_str}', '35': 'twenty-five to {hour_str}', '40': 'twenty to {hour_str}', '45': 'quarter to {hour_str}', '5': 'five past {hour_str}', '50': 'ten to {hour_str}', '55': 'five to {hour_str}'}, special_case_str={'(0, 0)': 'midnight', '(0, 1)': 'round about midnight', '(0, 2)': 'round about midnight', '(12, 0)': 'noon', '(23, 58)': 'round about midnight', '(23, 59)': 'round about midnight'})

  Display the current time as fuzzy time, e.g. “quarter past six”.

  Parameters:

    - format (string) – (unused)

    - unicode_text (bool) – If true then hyphenminuses (regular ASCII `-`) and single quotes are replaced with unicode dashes and apostrophes.

    - timezone (string) – Specify a timezone to use as `+HHMM` or `-HHMM`. (Defaults to system defaults.)

    - hour_str (string list) – Strings to be used to display the hour, starting with midnight. (This list may contain 12 or 24 entries.)

    - minute_str (dict) – Dictionary mapping minutes to strings to be used to display them. Each entry may optionally come with a format field “{hour_str}” to indicate the position of the string used for the current hour.

    - special_case_str (dict) – Special strings for special times.

  Highlight groups used: `fuzzy_time`.

## Mail

class powerline.segments.common.mail.EmailIMAPSegment

## Media players

class powerline.segments.common.players.ClementinePlayerSegment

class powerline.segments.common.players.CmusPlayerSegment
  get_player_status(pl)

    Return cmus player information.

    cmus-remote -Q returns data with multi-level information i.e.

      status playing file <file_name> tag artist <artist_name> tag title <track_title> tag .. tag n set continue <true|false> set repeat <true|false> set .. set n

    For the information we are looking for we don’t really care if we’re on the tag level or the set level. The dictionary comprehension in this method takes anything in ignore_levels and brings the key inside that to the first level of the dictionary.

class powerline.segments.common.players.DbusPlayerSegment

class powerline.segments.common.players.ITunesPlayerSegment

class powerline.segments.common.players.MocPlayerSegment
  get_player_status(pl)

    Return Music On Console (mocp) player information.

    `mocp -i` returns current information i.e.

        File: filename.format
        Title: full title
        Artist: artist name
        SongTitle: song title
        Album: album name
        TotalTime: 00:00
        TimeLeft: 00:00
        TotalSec: 000
        CurrentTime: 00:00
        CurrentSec: 000
        Bitrate: 000kbps
        AvgBitrate: 000kbps
        Rate: 00kHz

    For the information we are looking for we don’t really care if we have extra-timing information or bit rate level. The dictionary comprehension in this method takes anything in ignore_info and brings the key inside that to the right info of the dictionary.

class powerline.segments.common.players.MpdPlayerSegment

class powerline.segments.common.players.PlayerSegment
  argspecobjs()

    Return a list of valid arguments for inspect.getargspec

    Used to determine function arguments.

  omitted_args(name, method)

    List arguments which should be omitted

    Returns a tuple with indexes of omitted arguments.

class powerline.segments.common.players.RDIOPlayerSegment

class powerline.segments.common.players.RhythmboxPlayerSegment

class powerline.segments.common.players.SpotifyAppleScriptPlayerSegment

class powerline.segments.common.players.SpotifyDbusPlayerSegment