amnweb / yasb-themes

🎨 Theme repository for YASB.
https://github.com/amnweb/yasb
MIT License
27 stars 2 forks source link

[create-theme]: Default #3

Closed amnweb closed 1 month ago

amnweb commented 1 month ago

Name

Default

Description

Default YASB theme

Homepage

https://github.com/amnweb/yasb

Image

https://i.imgur.com/DovoXsA.png

Theme Styles

/*
.widget .label {} -> Global label for all
.active-window-widget {} -> Styles specific to the active window widget
.clock-widget {} -> Styles specific to the clock widget
.cpu-widget {} -> Styles specific to the CPU widget
.memory-widget {} -> Styles specific to the memory widget
.weather-widget {} -> Styles specific to the weather widget
.komorebi-workspaces {} -> Styles specific to komorebi workspaces
.komorebi-active-layout {} -> Styles specific to komorebi active layout
.volume-widget {} -> Styles specific to the volume widget 
.apps-widget {} -> Styles specific to the apps widget
.power-menu-widget {} -> Styles for the power menu button widget
.power-menu-popup {} -> Styles for the power menu popup widget
.power-menu-popup > .button {} -> Styles for power buttons inside the popup 
.power-menu-popup > .button > .icon,
.power-menu-popup > .button > .label {} -> Styles for power buttons icons and labels inside the popup 
.media-widget {} -> Styles specific to the media widget
.github-widget {} -> Styles specific to the github widget
.language-widget {} -> Styles specific to the language widget
.disk-widget {} -> Styles specific to the disk widget
*/
* {
    font-size: 12px;
    color: #cdd6f4;
    font-weight: 500;
    font-family: "JetBrainsMono NFP";
    margin: 0;
    padding: 0;
}
.yasb-bar {
    padding: 0;
    margin: 0;
}
.widget {
    background-color: #1e1e2e;
    padding: 0 8px;
    margin: 0;
}
.widget .label {
    padding: 1px 2px 1px 2px;
}
.widget .label.alt {
    padding: 1px 8px 1px 8px;
}
.active-window-widget {
    border-radius: 18px;
    margin-left: 8px
}
.container-left,
.container-center,
.container-right {
    margin: 0;
    padding: 0;
}

.clock-widget {
    border-top-left-radius: 18px;
    border-bottom-left-radius: 18px;
}

.apps-widget {
    padding: 0 2px;
    border-top-right-radius: 18px;
    border-bottom-right-radius: 18px;
}
.komorebi-active-layout {
    border-top-right-radius: 18px;
    border-bottom-right-radius: 18px;
    padding: 0 4px 0 0;
}

.komorebi-active-layout .label {
    font-weight: 600;
    padding: 2px 0 0 0;
}
.wifi-widget {
    padding: 0 4px 0 4px;
    border-top-left-radius: 18px;
    border-bottom-left-radius: 18px;
}

.apps-widget .widget-container,
.komorebi-workspaces .widget-container,
.wifi-widget .widget-container,
.komorebi-active-layout .widget-container {
    background-color: #313244;
    margin: 4px 0px 4px 0;
    border-radius: 14px;
}
.apps-widget .widget-container {
    margin-right: 2px;
}
.komorebi-workspaces .ws-btn {
    font-size: 16px;
    background-color: transparent;
    margin: 0 4px 0 4px;
    color: #95a0ad;
}
.komorebi-workspaces .ws-btn.populated {
    color: #a0c3ee;
}
.komorebi-workspaces .ws-btn:hover,
.komorebi-workspaces .ws-btn.populated:hover,
.komorebi-workspaces .ws-btn.active {
    color: #c2daf7;
}
/* .komorebi-workspaces .ws-btn {
    border-radius: 5px;
    font-size: 10px;
    width: 10px;
    height: 10px;
    margin: 0 4px 0 4px;
    color: rgba(255, 255, 255, 0);
    background-color: #9399b2;
}
.komorebi-workspaces .ws-btn:hover,
.komorebi-workspaces .ws-btn.populated:hover {
    background-color: #fff;
}
.komorebi-workspaces .ws-btn.populated {
    background-color: #89b4fa;
}
.komorebi-workspaces .ws-btn.active {
    background-color: #89b4fa;
    color: rgba(0, 0, 0, 0);
    width: 26px;
} */
.apps-widget .label {
    font-size: 14px;
    padding: 0 2px;
}
.apps-widget .label:hover {
    color: #fff;
}

/*POWER MENU WIDGET*/
/* Uptime text */
.uptime {
    font-size: 14px;
    margin-bottom: 10px;
    color: #ffffff;
    font-weight: 600;
    font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.power-menu-widget .label {
    color: #f38ba8;
    font-size: 13px;
}
.power-menu-popup {
    background-color: rgba(24, 24, 37, 0.9);
    border-radius: 12px;
    border: 4px solid rgb(41, 42, 58);
}
.power-menu-popup .button {
    padding: 0;
    width: 240px;
    height: 120px;
    border-radius: 8px;
    background-color: rgb(41, 42, 58);
    font-family: "SegoeUI";
    color: white;
    border: 1px solid rgba(255, 255, 255, 0.1);
    margin: 8px;
}
.power-menu-popup .button.hover {
    background-color: rgb(55, 56, 75);
    border: 1px solid rgb(55, 56, 75);
}
.power-menu-popup .button .label {
    margin-bottom: 8px;
    font-size: 16px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.95);
    font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.power-menu-popup .button .icon {
    font-size: 48px;
    padding-top: 8px;
    color: rgba(255, 255, 255, 0.25);
}
.power-menu-popup .button.cancel .icon {
    color: rgba(243, 139, 168, 0.55);
}
.power-menu-popup .button.cancel .label {
    color: rgba(243, 139, 168, 0.95);
}
.power-menu-popup .button.shutdown .icon {
    color: rgba(137, 180, 250, 0.55);
}
.power-menu-popup .button.shutdown .label {
    color: rgba(137, 180, 250, 0.95);
}

/* ICONS */
.icon {
    font-size: 16px;
}
.volume-widget .icon {
    color: #89b4fa;
    margin: 1px 2px 0 0;
}
.cpu-widget .icon,
.memory-widget .icon {
    font-size: 14px;
    color: #cba6f7;
    margin: 0 2px 1px 0;
}
.memory-widget .icon {
    color: #a6c9f7;
}
.wifi-widget .icon {
    color: #43d8d8;
    padding: 0 7px;
    margin: 0;
}

/* Memory widget usage colors. Uncomment if you want to color of the battery widget icon to change based on status */

/*
.memory-widget.status-low .icon {
  color: #a6e3a1;
}
.memory-widget.status-medium .icon {
  color: #f9e2af;
}
.memory-widget.status-high .icon {
  color: #fab387;
}
.memory-widget.status-critical .icon {
  color: #f38ba8;
}
*/

/* Battery widget value colors. Uncomment if you want to color of the battery widget icon to change based on status */

/*
.battery-widget.status-charging .icon {
  color: #74c7ec;
}
.battery-widget.status-full .icon {
  color: #94e2d5;
}
.battery-widget.status-high .icon {
  color: #a6e3a1;
}
.battery-widget.status-medium .icon {
  color: #f9e2af;
}
.battery-widget.status-low .icon {
  color: #fab387;
}
.battery-widget.status-critical .icon {
  color: #f38ba8;
}
*/

/* WEATHER WIDGET */
.weather-widget .icon {
    font-size: 16px;
    margin: 0 2px 1px 0;
}
.weather-widget .icon.sunnyDay {
    color: rgb(221, 210, 107);
}
.weather-widget .icon.clearNight {
    color: rgb(107, 189, 221);
    font-size: 22px;
    margin: 1px 2px 0px 0;
}
/* 
.weather-widget .icon.cloudyDay {}
.weather-widget .icon.cloudyNight {} 
.weather-widget .icon.rainyDay {} 
.weather-widget .icon.rainyNight {} 
.weather-widget .icon.snowyIcyDay {} 
.weather-widget .icon.snowyIcyNight {} 
.weather-widget .icon.blizzard {} 
.weather-widget .icon.default {}
*/

/* MEDIA WIDGET */
.media-widget {
    padding: 0;
    padding-left: 2px;
    margin: 0;
    border-radius: 16px;
    margin-right: 8px;
}
.media-widget .label {
    background-color: rgba(0, 0, 0, 0.0);
}
.media-widget .btn {
    color: #acb2c9;
    padding: 0 3px;
    margin: 4px 0;
    font-family: Segoe Fluent Icons;
}
.media-widget .btn:hover {
    color: #89b4fa;
}
.media-widget .btn.play {
    background-color: #313244;
    border-radius: 14px;
    font-size: 16px;
}
.media-widget .btn.disabled:hover,
.media-widget .btn.disabled {
    color: #4e525c;
    font-size: 12px;
    background-color: rgba(0, 0, 0, 0);
}

/* GITHUB WIDGET */
.github-widget {
    padding:0 4px;
}
.github-widget .icon {
    font-size: 14px;
    color: #cdd6f4
}
.github-widget .icon.new-notification {
    color: #f38ba8;
}

Theme Config

watch_stylesheet: true
watch_config: true
debug: false # Enable debug mode to see more logs

# This komorebi setting will be used for tray context menu.
# If you don't use komorebi, you can remove this section.
komorebi:
  start_command: "komorebic start --whkd"
  stop_command: "komorebic stop --whkd"
  reload_command: "komorebic reload-configuration"

# This is the main configuration file for Yet Another Status Bar (YASB)
bars:
  status-bar:
    enabled: true
    #screens: ['DELL P2419H (1)'] # If you want to show on specific screen
    screens: ['*'] 
    class_name: "yasb-bar"
    alignment:
      position: "top"
      center: false
    blur_effect:
      enabled: false
      acrylic: false
      dark: false
    window_flags:
      always_on_top: false
      windows_app_bar: true
    dimensions:
      width: "100%"
      height: 36
    padding:
      top: 4
      left: 0
      bottom: 4
      right: 0
    widgets:
      left:
        [
          "win_button",
          "komorebi_workspaces",
          "komorebi_active_layout",
          "active_window"
        ] 
      center: [
         "clock",
         "apps"
        ]
      right:
        [

          "media",
          "wifi",
          #"disk",
          #"battery",
          #"language",
          #"ip_info",
          #"traffic",
          "cpu",
          #"github",
          "weather",
          "memory",
          #"wallapers",
          "volume",
          "power_menu"
        ]
widgets:

  disk:
    type: "yasb.disk.DiskWidget"
    options:
        label: "{volume_label} {space[used][percent]}"
        label_alt: "{volume_label} {space[used][gb]} / {space[total][gb]}"
        volume_label: "C"
        update_interval: 60 # Update interval in seconds
        callbacks:
          on_middle: "do_nothing"
          on_right: "exec explorer C:\\" # Open disk C in file explorer

  media:
    type: "yasb.media.MediaWidget"
    options:
      label: "{title} - {artist}"
      label_alt: "{title}"
      max_field_size:
        label: 20
        label_alt: 30
      show_thumbnail: true
      controls_only: false
      controls_left: true
      hide_empty: true
      thumbnail_alpha: 80
      thumbnail_padding: 8
      thumbnail_corner_radius: 16 # Set to 0 for square corners
      icons:
        prev_track: "\ue892"
        next_track: "\ue893"
        play: "\ue768"
        pause: "\ue769"

  active_window:
    type: "yasb.active_window.ActiveWindowWidget"
    options:
      label: "{win[title]}"
      label_alt: "[class_name='{win[class_name]}' exe='{win[process][name]}' hwnd={win[hwnd]}]"
      label_no_window: ""
      label_icon: true
      label_icon_size: 16
      max_length: 56
      max_length_ellipsis: "..."
      monitor_exclusive: true

  battery:
    type: "yasb.battery.BatteryWidget"
    options:
      label: "<span>{icon}</span>{percent}%"
      label_alt: "{icon} {percent}% | time: {time_remaining}"
      charging_options:
        icon_format: "{charging_icon}"

  clock:
    type: "yasb.clock.ClockWidget"
    options:
      label: "{%a %d, %b %H:%M}"
      label_alt: "{%A %d %B %Y, %H:%M}"
      #locale: 'en_EN' # Langugae for date, you can set your own, example fr_FR
      timezones: [] #Looking up time zone info from registry
      #timezones: ["America/Montreal"]

  cpu:
    type: "yasb.cpu.CpuWidget"
    options:
      label: "<span>\uf4bc</span> {info[percent][total]}%"
      label_alt: "<span>\uf437</span> {info[histograms][cpu_percent]}"
      update_interval: 2000
      histogram_icons:
        - '\u2581' # 0%
        - '\u2581' # 10%
        - '\u2582' # 20%
        - '\u2583' # 30%
        - '\u2584' # 40%
        - '\u2585' # 50%
        - '\u2586' # 60%
        - '\u2587' # 70%
        - '\u2588' # 80%+
      histogram_num_columns: 8
      callbacks:
        on_right: "exec cmd /c Taskmgr"

  memory:
    type: "yasb.memory.MemoryWidget"
    options:
      label: "<span>\uf4bc</span> {virtual_mem_free}"
      label_alt: "<span>\uf4bc</span> {virtual_mem_percent}%"
      update_interval: 10000
      callbacks:
        on_right: "exec cmd /c Taskmgr"

  language:
    type: "yasb.language.LanguageWidget"
    options:
      label: "<span>\uf1ab</span> {lang[language_code]}-{lang[country_code]}"
      label_alt: " {lang[full_name]}"
      update_interval: 5 # 5 seconds
      callbacks:
        on_left: "toggle_label"

  komorebi_workspaces:
    type: "komorebi.workspaces.WorkspaceWidget"
    options:
        label_offline: "Komorebi Offline"
        label_workspace_btn: "\udb81\udc3d"
        label_workspace_active_btn: "\udb81\udc3e"
        label_default_name: "{index}"
        label_zero_index: false
        hide_empty_workspaces: false
        hide_if_offline: false

  komorebi_active_layout:
    type: "komorebi.active_layout.ActiveLayoutWidget"
    options:
      hide_if_offline: true
      label: "{icon}"
      layouts: ['bsp', 'columns', 'rows', 'grid', 'vertical_stack', 'horizontal_stack', 'ultrawide_vertical_stack','right_main_vertical_stack']
      layout_icons:
        bsp: "BSP"
        columns: "COLS"
        rows: "ROWS"
        grid: "GRID"
        vertical_stack: "V-STACK"
        horizontal_stack: "H-STACK"
        ultrawide_vertical_stack: "W-STACK"
        right_main_vertical_stack: "RMV-STACK"
        monocle: "MONOCLE"
        maximised: "MAX"
        floating: "FLOATING"
        paused: "PAUSED"
      callbacks:
        on_left: 'next_layout'
        on_middle: 'toggle_monocle'
        on_right: 'prev_layout'

  wifi:
    type: "yasb.wifi.WifiWidget"
    options:
      label: "<span>{wifi_icon}</span>"
      label_alt: "{wifi_name} {wifi_strength}%"
      update_interval: 5000
      callbacks:
        on_left: "exec cmd.exe /c start ms-settings:network"
        on_middle: "do_nothing"
        on_right: "toggle_label"

  traffic:
    type: "yasb.traffic.TrafficWidget"
    options:
      label: "<span>\udb86\uddb3</span>{download_speed} | <span>\udb86\uddb2</span>{upload_speed}"
      label_alt: "Download {download_speed} \ue621 Upload {upload_speed}"
      update_interval: 1000 # Update interval should be a multiple of 1000
      callbacks:
        on_left: "toggle_label"
        on_right: "exec cmd /c Taskmgr"

  ip_info:
    type: "yasb.custom.CustomWidget"
    options:
      label: "<span>\udb81\udd9f</span> {data[ip]}"
      label_alt: "<span>\uf450</span> {data[city]} {data[region]}, {data[country]}"
      class_name: "ip-info-widget"
      exec_options:
        run_cmd: "curl.exe https://ipinfo.io"
        run_interval: 120000  # every 5 minutes
        return_format: "json"
      callbacks:
        on_left: "toggle_label"
        on_middle: "exec cmd /c ncpa.cpl" # open network settings
        on_right: "exec cmd /c start https://ipinfo.io/{data[ip]} " # open ipinfo in browser

  weather:
    type: "yasb.weather.WeatherWidget"
    options:
      label: "<span>{icon}</span> {temp_c}"
      label_alt: "{location}: Min {min_temp_c}, Max {max_temp_c}, Humidity {humidity}"
      api_key: '3bf4cf9a7c3f40d6b31174128242807' # Get your free API key from https://www.weatherapi.com/
      update_interval: 600 # Update interval in seconds, Min 600 seconds
      hide_decimal: true
      location: 'Los Angeles, CA, USA' # You can use "USA Los Angeles 90006" {COUNTRY CITY ZIP_CODE}, or just city.
      callbacks:
        on_left: "toggle_label"
      icons: 
        sunnyDay: "\ue30d"
        clearNight: "\ue32b"
        cloudyDay: "\udb81\udd99"
        cloudyNight: "\ue311"
        rainyDay: "\udb81\ude7e"
        rainyNight: "\udb81\ude7e"
        snowyIcyDay: "\udb81\udd98"
        snowyIcyNight: "\udb81\udd98"
        blizzard: "\uebaa"
        default: "\uebaa"
        # https://www.weatherapi.com/docs/
        # Usage {temp_c}, {min_temp_c}, {max_temp_c}, {temp_f}, {min_temp_f}, {max_temp_f}, {location}, {humidity}, {icon}, {conditions}

  volume:
    type: "yasb.volume.VolumeWidget"
    options:
      label: "<span>{icon}</span> {level}"
      label_alt: "{volume}"
      volume_icons:
        - "\ueee8"  # Icon for muted
        - "\uf026"  # Icon for 0-10% volume
        - "\uf027"  # Icon for 11-30% volume
        - "\uf027"  # Icon for 31-60% volume
        - "\uf028"  # Icon for 61-100% volume
      callbacks:
        on_right: "exec cmd.exe /c start ms-settings:sound"

  power_menu:
    type: "yasb.power_menu.PowerMenuWidget"
    options:
      label: "\uf011"
      uptime: True
      blur: False
      blur_background: True
      animation_duration: 300 # Milisecond 
      button_row: 3 # Number of buttons in row, min 1 max 5
      buttons:
        lock: ["\uea75","Lock"]
        signout: ["\udb80\udf43","Sign out"]
        #sleep: ["\u23fe","Sleep"]
        shutdown: ["\uf011","Shut Down"]
        restart: ["\uead2","Restart"]
        hibernate: ["\uf28e","Hibernate"]
        cancel: ["\udb81\udf3a","Cancel"]
        #force_shutdown: ["\uf011","Force Shut Down"]
        #force_restart: ["\uead2","Force Restart"]

  apps:
    type: "yasb.applications.ApplicationsWidget"
    options:
      label: "{data}"
      app_list:
        #- {icon: "\uf489", launch: "wt"}
        #- {icon: "\uf413", launch: "explorer c:\\Users\\amn"}
        #- {icon: "\udb82\ude1e", launch: "C:\\Users\\amn\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe"}
        #- {icon: "\udb80\ude39", launch: "C:\\Program Files\\Mozilla Firefox\\firefox.exe"}
        #- {icon: "\uf1ff", launch: "C:\\Users\\amn\\AppData\\Local\\Discord\\Update.exe --processStart Discord.exe"}
        #- {icon: "\ue217", launch: "C:\\Users\\amn\\AppData\\Roaming\\Telegram Desktop\\Telegram.exe"}
        - {icon: "\uf0a2", launch: "notification_center"}
        - {icon: "\ueb51", launch: "quick_settings"}
        #- {icon: "\uf46a", launch: "cmd.exe /c start ms-settings:windowsupdate"}
        - {icon: "\uf422", launch: "search"}
        #- {icon: "\udb84\udf55", launch: "widget"}
        # Currently available to use quick_settings, notification_center, search, widget, launcher (launcher will trigger ALT+A)

  github:
    type: "yasb.github.GithubWidget"
    options:
      label: "<span>\ueba1</span>"
      label_alt: "Notifications {data}" # {data} return number of unread notification
      token: ghp_xxxxxxxxxxx # GitHub Personal access tokens (classic) https://github.com/settings/tokens
      # You can set token: env, this means you have to set YASB_GITHUB_TOKEN in environment variable
      max_notification: 20 # Max number of notification displaying in menu max: 50
      only_unread: false # Show only unread or all notifications; 
      max_field_size: 54 # Max characters in title before truncation.
      menu_width: 400 
      menu_height: 400 
      menu_offset: 240 
      update_interval: 300 # Check for new notification in seconds

  wallapers:
    type: "yasb.wallpapers.WallpapersWidget"
    options:
      label: "<span>\udb83\ude09</span>"
      image_path: "C:\\Users\\xxx\\Images" # Path to folder with images
      change_automatically: false # Automatically change wallpaper
      update_interval: 60 # If change_automatically is true, update interval in seconds

  nvidia_temp:
    type: "yasb.custom.CustomWidget"
    options:
      label: "{data}<span>\udb81\udd04</span>"
      label_alt: "{data}"
      class_name: "system-widget"
      exec_options:
        run_cmd: "powershell nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader"
        run_interval: 10000 # run every 10 sec
        return_format: "string"

  win_button:
    type: "yasb.custom.CustomWidget"
    options:
      label: "\ue62a"
      label_alt: "\ue62a"
      class_name: "system-widget"
      callbacks:
        on_left: "exec start_menu"

Readme

Default YASB theme
github-actions[bot] commented 1 month ago

Thank you for your contribution! :tada:

Your theme has been successfully submitted. The maintainers will review it and get back to you soon.

Here are some details about your submission:

If you have any questions or need help, feel free to ask in the comments below or in the PR.