Kasper24 / KwesomeDE

A desktop environment made in AwesomeWM
328 stars 18 forks source link

Use a free font? #5

Open Ryex opened 1 year ago

Ryex commented 1 year ago

It would be nice to have the fonts move away from a paid font.

I have written some scripts to make using icon fonts a bit easier

https://gist.github.com/Ryex/668faf884eaca5b310fdaaadef6895e3

the preprocess_fontcss.lua takes a font's css file and builds a lua table of the font icons with names that map to their css names so you can require the table and map the names and take advantage of autocomplete instead of copy pasting each icon. the font tables are current as of a month ago.

personally, I was slowly replacing the icons in my own config with icons from Nerdfont and Weathericons with some form Remix icons. but you can of course use which ever fonts you want.

Kasper24 commented 1 year ago

personally, I was slowly replacing the icons in my own config with icons from Nerdfont and Weathericons with some form Remix icons. buy you can of course use which ever fonts you want.

Would you mind sharing that code / making a PR?

Ryex commented 1 year ago

you've updated the function and the icon names since I did it but this is the mapping it did.

note that the remixicon names often have an option between _fill and _line and my choices on each one were mostly based on which had more visual contrast to be easy to see on a dark background. your choices may be different.

I didn't have perfect replacement for every icon, especially for the apps.

local function icons()
    -- local font_awesome_6_solid_font_name = "Font Awesome 6 Pro Solid "
    -- local font_awesome_6_brands_font_name = "Font Awesome 6 Brands "
    local nerdfont_font_name = "AestheticIosevka Nerd Font "
    local nerdfont = require("fonts.nerdfont")

    local remixicon_font_name = "remixicon "
    local remixicon = require("fonts.remixicon")

    local weathericons_font_name = "weathericons "
    local weathericons = require("fonts.weathericons")

    --local remixicon = timed_load.require("fonts.remixicon")

    theme.window_icon = { icon = remixicon.ri_window_line , font = remixicon_font_name } --
    theme.file_manager_icon = { icon = remixicon.ri_folders_line, font = remixicon_font_name }
    theme.terminal_icon = { icon = remixicon.ri_terminal_box_line, font = remixicon_font_name }
    theme.firefox_icon = { icon = remixicon.ri_firefox_fill, font = remixicon_font_name }
    theme.chrome_icon = { icon = remixicon.ri_chrome_fill, font = remixicon_font_name }
    theme.code_icon = { icon = remixicon.ri_code_box_line, font = remixicon_font_name, size = 25 }
    theme.git_icon = { icon = nerdfont.nf_mdi_git, font = nerdfont_font_name }
    theme.gitkraken_icon = { icon = remixicon.ri_git_branch_line, font = remixicon_font_name }
    theme.discord_icon = { icon = remixicon.ri_discord_fill, font = remixicon_font_name }
    theme.telegram_icon = { icon = remixicon.ri_telegram_fill, font = remixicon_font_name }
    theme.spotify_icon = { icon = remixicon.ri_spotify_fill, font = remixicon_font_name }
    theme.steam_icon = { icon = remixicon.ri_steam_fill, font = remixicon_font_name }
    theme.gamepad_alt_icon = { icon = remixicon.ri_gamepad_fill, font = remixicon_font_name, size = 20 }
    theme.led_icon = { icon = "", font = nerdfont_font_name, size = 30 }
    theme.download_icon = { icon = remixicon.ri_download_fill, font = remixicon_font_name }
    theme.system_monitor_icon = { icon = remixicon.ri_dashboard_2_line, font = remixicon_font_name }
    theme.calculator_icon = { icon = remixicon.ri_calculator_line, font = remixicon_font_name }
    theme.computer_icon = { icon = remixicon.ri_computer_line, font = remixicon_font_name }
    theme.video_download_icon = { icon = remixicon.ri_video_download_line, font = remixicon_font_name }
    theme.speaker_icon = { icon = remixicon.ri_speaker_fill, font = remixicon_font_name }
    theme.archeive_icon = { icon = remixicon.ri_file_zip_fill, font = remixicon_font_name }
    theme.palette_icon = { icon = remixicon.ri_palette_fill, font = remixicon_font_name }
    theme.unlock_icon = { icon = remixicon.ri_lock_unlock_line, font = remixicon_font_name }
    theme.list_icon = { icon = remixicon.ri_list_check, font = remixicon_font_name }
    theme.nvidia_icon = { icon = remixicon.ri_cpu_line, font = remixicon_font_name }
    theme.spraycan_icon = { icon = nerdfont.nf_mdi_spray, font = nerdfont_font_name }
    theme.note_icon = { icon = remixicon.ri_sticky_note_line, font = remixicon_font_name }
    theme.image_icon = { icon = remixicon.ri_image_2_line, font = remixicon_font_name }
    theme.envelope_icon = { icon = nerdfont.nf_fa_envelope, font = nerdfont_font_name }

    theme.word_icon = { icon = remixicon.ri_file_word_2_fill, font = remixicon_font_name }
    theme.powerpoint_icon = { icon = remixicon.ri_file_ppt_2_fill, font = remixicon_font_name }
    theme.excel_icon = { icon = remixicon.ri_file_excel_2_fill, font = remixicon_font_name }

    theme.camera_retro_icon = { icon = remixicon.ri_camera_3_fill, font = remixicon_font_name}

    theme.wifi_off_icon = { icon = remixicon.ri_signal_wifi_off_fill, font = remixicon_font_name }
    theme.wifi_low_icon = { icon = remixicon.ri_signal_wifi_1_fill, font = remixicon_font_name }
    theme.wifi_medium_icon = { icon = remixicon.ri_signal_wifi_2_fill, font = remixicon_font_name }
    theme.wifi_high_icon = { icon = remixicon.ri_signal_wifi_3_fill, font = remixicon_font_name }

    theme.wired_off_icon = { icon = nerdfont.nf_mdi_ethernet_cable_off, font = nerdfont_font_name }
    theme.wired_icon = { icon = nerdfont.nf_mdi_ethernet_cable, font = nerdfont_font_name }

    theme.bluetooth_icon = { icon = nerdfont.nf_mdi_bluetooth, font = nerdfont_font_name }
    theme.bluetooth_off_icon = { icon = nerdfont.nf_mdi_bluetooth_off, font = nerdfont_font_name }

    theme.battery_bolt_icon = { icon = nerdfont.nf_mdi_battery_charging, font = nerdfont_font_name }
    theme.battery_quarter_icon = { icon = nerdfont.nf_mdi_battery_20, font = nerdfont_font_name }
    theme.battery_half_icon = { icon = nerdfont.nf_mdi_battery_50, font = nerdfont_font_name }
    theme.battery_three_quarter_icon = { icon = nerdfont.nf_mdi_battery_70, font = nerdfont_font_name }
    theme.battery_full_icon = { icon = nerdfont.nf_mdi_battery, font = nerdfont_font_name }

    theme.volume_off_icon = { icon = nerdfont.nf_mdi_volume_off, font = nerdfont_font_name }
    theme.volume_low_icon = { icon = nerdfont.nf_mdi_volume_low, font = nerdfont_font_name }
    theme.volume_normal_icon = { icon = nerdfont.nf_mdi_volume_medium, font = nerdfont_font_name }
    theme.volume_high_icon = { icon = nerdfont.nf_mdi_volume_high, font = nerdfont_font_name }

    theme.keyboard_icon = { icon = remixicon.ri_keyboard_fill, font = remixicon_font_name }

    theme.brightness_icon = { icon = nerdfont.nf_mdi_brightness_5, font = nerdfont_font_name }

    theme.microphone_icon = { icon = remixicon.ri_mic_fill, font = remixicon_font_name }
    theme.microphone_off_icon = { icon = remixicon.ri_mic_off_fill, font = remixicon_font_name }

    theme.poweroff_icon = { icon = nerdfont.nf_iec_power_off, font = nerdfont_font_name }
    theme.reboot_icon = { icon = nerdfont.nf_mdi_restart, font = nerdfont_font_name }
    theme.suspend_icon = { icon = nerdfont.nf_iec_sleep_mode, font = nerdfont_font_name }

    theme.exit_icon = { icon = remixicon.ri_logout_box_line, font = remixicon_font_name }
    theme.lock_icon = { icon = remixicon.ri_lock_2_line, font = remixicon_font_name }

    theme.mug_saucer_icon = { icon = nerdfont.nf_fa_coffee, font = nerdfont_font_name  }
    theme.circle_exclamation_icon = { icon = nerdfont.nf_fa_exclamation_circle, font = nerdfont_font_name }

    theme.play_icon = { icon = remixicon.ri_play_line, font = remixicon_font_name }
    theme.pause_icon = { icon = remixicon.ri_pause_line, font = remixicon_font_name }
    theme.forward_icon = { icon = remixicon.ri_skip_forward_line, font = remixicon_font_name }
    theme.backward_icon = { icon = remixicon.ri_skip_back_line, font = remixicon_font_name }

    theme.chevron_right_icon = { icon = nerdfont.nf_fa_chevron_right, font = nerdfont_font_name }
    theme.chevron_circle_left_icon = { icon = nerdfont.nf_fa_chevron_circle_left, font = nerdfont_font_name }
    theme.chevron_circle_right_icon = { icon = nerdfont.nf_fa_chevron_circle_right, font = nerdfont_font_name }

    theme.airplane_off_icon = { icon = nerdfont.nf_mdi_airplane_off, font = nerdfont_font_name }
    theme.airplane_icon = { icon = nerdfont.nf_mdi_airplane, font = nerdfont_font_name }

    theme.bluelight_icon = { icon = nerdfont.nf_mdi_lightbulb_on, font = nerdfont_font_name }
    theme.bluelight_off_icon = { icon = nerdfont.nf_mdi_lightbulb, font = nerdfont_font_name}

    theme.skull_icon = { icon = remixicon.ri_skull_fill, font = remixicon_font_name }

    theme.lightbulb_icon = { icon = nerdfont.nf_mdi_lightbulb_on_outline, font = nerdfont_font_name }
    theme.lightbulb_off_icon = { icon = nerdfont.nf_mdi_lightbulb_outline, font = nerdfont_font_name }

    theme.bell_icon = { icon = remixicon.ri_notification_2_fill, font = remixicon_font_name }
    theme.grid_icon = { icon = remixicon.ri_layout_grid_fill, font = remixicon_font_name }
    theme.bars_icon = { icon = nerdfont.nf_fa_bars, font = nerdfont_font_name }

    theme.router_icon = { icon = remixicon.ri_router_fill, font = remixicon_font_name }

    theme.code_pull_request_icon = { icon = remixicon.ri_git_pull_request_line, font = remixicon_font_name }

    theme.message_icon = { icon = remixicon.ri_message_2_line, font = remixicon_font_name }
    theme.star_icon = { icon = remixicon.ri_star_fill, font = remixicon_font_name }
    theme.code_branch_icon = { icon = remixicon.ri_git_branch_line, font = remixicon_font_name }
    theme.paint_icon = { icon = remixicon.ri_paint_fill, font = remixicon_font_name }
    theme.right_long_icon = { icon = nerdfont.nf_fa_long_arrow_right, font = nerdfont_font_name }
    theme.pen_to_square_icon = { icon = remixicon.ri_edit_box_fill, font = remixicon_font_name }

    theme.triangle_icon = { icon = nerdfont.nf_cod_triangle_down, font = nerdfont_font_name }
    theme.circle_icon = { icon = nerdfont.nf_mdi_close_circle, font = nerdfont_font_name }
    theme.xmark_icon = { icon = nerdfont.nf_mdi_close, font = nerdfont_font_name }

    theme.arch_icon = { icon = nerdfont.nf_linux_archlinux, font = nerdfont_font_name  }
    theme.home_icon = { icon = remixicon.ri_home_3_fill, font = remixicon_font_name }

    theme.microchip_icon = { icon = nerdfont.nf_fa_microchip, font = nerdfont_font_name }
    theme.memory_icon = { icon = nerdfont.nf_mdi_memory, font = nerdfont_font_name }
    theme.disc_drive_icon = { icon = remixicon.ri_hard_drive_2_fill, font = remixicon_font_name }

    theme.thermometer_quarter_icon = { icon = nerdfont.nf_fa_thermometer_quarter, font = nerdfont_font_name, size = 30 }
    theme.thermometer_half_icon = { icon = nerdfont.nf_fa_thermometer_half, font = nerdfont_font_name, size = 30 }
    theme.thermometer_three_quarter_icon = { icon = nerdfont.nf_fa_thermometer_three_quarters, font = nerdfont_font_name, size = 30 }
    theme.thermometer_full_icon = { icon = nerdfont.nf_fa_thermometer, font = nerdfont_font_name, size = 30 }

    theme.boombox_icon = { icon = nerdfont.nf_mdi_boombox, font = nerdfont_font_name }
    theme.burn_icon = { icon = remixicon.ri_dvd_line, font = remixicon_font_name }
    theme.gear_icon = { icon = remixicon.ri_settings_3_fill , font = remixicon_font_name }
    theme.commit_icon = { icon = remixicon.ri_git_commit_line, font = remixicon_font_name }
    theme.reddit_icon = { icon = remixicon.ri_reddit_fill, font = remixicon_font_name }
    theme.youtube_icon = { icon = remixicon.ri_youtube_fill, font = remixicon_font_name }
    theme.amazon_icon = { icon = remixicon.ri_amazon_fill, font = remixicon_font_name }
    theme.gitlab_icon = { icon = remixicon.ri_gitlab_fill, font = remixicon_font_name }
    theme.check_icon = { icon = remixicon.ri_check_fill, font = remixicon_font_name }
    theme.user_icon = { icon = remixicon.ri_user_fill, font = remixicon_font_name }
    theme.scissors_icon = { icon = remixicon.ri_scissors_fill, font = remixicon_font_name }
    theme.clock_icon = { icon = remixicon.ri_time_line, font = remixicon_font_name }
    theme.box_icon = { icon = remixicon.ri_archive_line, font = remixicon_font_name }
    theme.left_icon = { icon = remixicon.ri_arrow_left_line, font = remixicon_font_name }

    theme.circle_plus_icon = { icon = remixicon.ri_add_circle_line, font = remixicon_font_name }
    theme.circle_minus_icon = { icon = remixicon.ri_indeterminate_circle_line, font = remixicon_font_name }

    theme.video_icon = { icon = remixicon.ri_video_line, font = remixicon_font_name }

    theme.industry_icon = { icon = nerdfont.nf_fa_industry, font = nerdfont_font_name }

    theme.chart_line_icon = { icon = nerdfont.nf_mdi_chart_line, font = nerdfont_font_name }
    theme.repeat_icon = { icon = remixicon.ri_repeat_line, font = remixicon_font_name }
    theme.shuffle_icon = { icon = remixicon.ri_shuffle_line, font = remixicon_font_name }
    theme.wrench_icon = { icon = nerdfont.nf_mdi_wrench, font = nerdfont_font_name }

    theme.calendar_icon = { icon = remixicon.ri_calendar_2_line, font = remixicon_font_name }
    theme.file_icon = { icon = remixicon.ri_file_line, font = remixicon_font_name }
    theme.hammer_icon = { icon = remixicon.ri_hammer_line, font = remixicon_font_name }
    theme.command_icon = { icon = remixicon.ri_command_line, font = remixicon_font_name }

    theme.clipboard_icon = { icon = remixicon.ri_clipboard_line, font = remixicon_font_name }
    theme.folder_open_icon = { icon = remixicon.ri_folder_open_line, font = remixicon_font_name }
    theme.launcher_icon = { icon = nerdfont.nf_mdi_launch, font = nerdfont_font_name }
    theme.caret_left_icon  = { icon = nerdfont.nf_fa_caret_left, font = nerdfont_font_name }
    theme.caret_right_icon = { icon = nerdfont.nf_fa_caret_right, font = nerdfont_font_name }

    theme.flameshot_icon = { icon = remixicon.ri_camera_lens_line, font = remixicon_font_name }
    theme.bars_staggered_icon = { icon = remixicon.ri_bar_chart_horizontal_line, font = remixicon_font_name }
    theme.square_icon = { icon = nerdfont.nf_mdi_window_maximize, font = nerdfont_font_name}
    theme.trash_icon = { icon = remixicon.ri_delete_bin_6_line, font = remixicon_font_name }

    theme.list_music_icon = { icon = remixicon.ri_folder_music_line, font = remixicon_font_name }
    theme.arrow_rotate_right_icon = { icon = remixicon.ri_arrow_right_line, font = remixicon_font_name }

    theme.table_layout_icon = { icon = remixicon.ri_table_line, font = remixicon_font_name }
    theme.tag_icon = { icon = remixicon.ri_price_tag_3_line, font = remixicon_font_name }
    theme.xmark_icon_fw = { icon = nerdfont.nf_fa_close, font = nerdfont_font_name }
    theme.github_icon = { icon = remixicon.ri_github_fill, font = remixicon_font_name }

    theme.clouds_icon = { icon = remixicon.ri_cloud_fill, font = remixicon_font_name }
    theme.circle_check_icon = { icon = remixicon.ri_checkbox_circle_line, font = remixicon_font_name }
    theme.chevron_up_icon = { icon = nerdfont.nf_fa_chevron_up, font = nerdfont_font_name }
    theme.chevron_down_icon = { icon = nerdfont.nf_fa_chevron_down, font = nerdfont_font_name }
    theme.terminal_emu_icon = { icon = nerdfont.nf_cod_terminal_bash, font = nerdfont_font_name }

    theme.location_dot_icon = { icon = remixicon.ri_map_pin_2_line, font = remixicon_font_name}
    theme.server_icon = { icon = remixicon.ri_server_line, font = remixicon_font_name }

    theme.toggle_on_icon = { icon = remixicon.ri_toggle_fill, font = remixicon_font_name }
    theme.toggle_off_icon = { icon = remixicon.ri_toggle_line, font = remixicon_font_name }

    theme.usb_icon = { icon = remixicon.ri_usb_line, font = remixicon_font_name }
    theme.usb_drive_icon = { icon = remixicon.ri_hard_drive_2_line, font = remixicon_font_name }
    theme.signal_stream_icon = { icon = remixicon.ri_base_station_line, font = remixicon_font_name }
    theme.car_battery_icon =  { icon = nerdfont.nf_mdi_car_battery, font = nerdfont_font_name }

    theme.sun_icon = { icon = weathericons.wi_day_sunny, font = weathericons_font_name }
    theme.sun_cloud_icon = { icon = weathericons.wi_day_sunny_overcast, font = weathericons_font_name}
    theme.cloud_sun_icon = { icon = weathericons.wi_day_cloudy_high, font = weathericons_font_name}
    theme.cloud_sun_rain_light_icon = { icon = weathericons.wi_day_showers, font = weathericons_font_name}
    theme.cloud_bolt_sun_icon = { icon = weathericons.wi_day_thunderstorm, font = weathericons_font_name }
    theme.sun_full_cloud_icon = { icon = weathericons.wi_day_cloudy, font = weathericons_font_name}
    theme.cloud_sun_rain_icon = { icon = weathericons.wi_day_rain, font = weathericons_font_name }
    theme.cloud_sun_snowflake_icon = { icon = weathericons.wi_day_snow, font = weathericons_font_name }
    theme.cloud_sun_fog_icon = { icon = weathericons.wi_day_fog, font = weathericons_font_name }

    theme.cloud_icon = { icon = weathericons.wi_cloud, font = weathericons_font_name}
    theme.raindrops_icon = { icon = weathericons.wi_rain, font = weathericons_font_name }
    theme.snowflake_icon = { icon = weathericons.wi_snow, font = weathericons_font_name }
    theme.cloud_fog_icon = { icon = weathericons.wi_fog, font = weathericons_font_name }

    theme.moon_icon = { icon = weathericons.wi_night_clear, font = weathericons_font_name }
    theme.cloud_moon_icon = { icon = weathericons.wi_night_alt_cloudy_high, font = weathericons_font_name }
    theme.moon_cloud_icon = { icon = weathericons.wi_night_alt_partly_cloudy, font = weathericons_font_name }
    theme.cloud_moon_rain_light_icon = { icon = weathericons.wi_night_alt_showers, font = weathericons_font_name }
    theme.cloud_bolt_moon_icon = { icon = weathericons.wi_night_alt_thunderstorm, font = weathericons_font_name }
    theme.moon_full_cloud_icon = { icon = weathericons.wi_night_alt_cloudy, font = weathericons_font_name}
    theme.cloud_moon_rain_icon = { icon = weathericons.wi_night_alt_rain, font = weathericons_font_name }
    theme.cloud_moon_snowflake_icon = { icon = weathericons.wi_night_alt_snow, font = weathericons_font_name }
    theme.cloud_moon_fog_icon = { icon = weathericons.wi_night_fog, font = weathericons_font_name }
end
Kasper24 commented 1 year ago

I tried switching over to nerdfont, but the issue with that is since they have icons from many different sets I need to manually set a different size for each icon so they look identical in size