commit 0792b143824cde9b1264adf0fa52d2402c435d3e Author: Stefen Wakefield Date: Tue Oct 10 20:44:53 2023 -0500 dotfiles: leviathan: arch-openbox-20231010 diff --git a/.Xresources b/.Xresources new file mode 100644 index 0000000..86755c4 --- /dev/null +++ b/.Xresources @@ -0,0 +1 @@ +Xcursor.size: 32 diff --git a/.bash_profile b/.bash_profile new file mode 100644 index 0000000..cca8932 --- /dev/null +++ b/.bash_profile @@ -0,0 +1,8 @@ +# +# ~/.bash_profile +# + +[[ -f ~/.bashrc ]] && . ~/.bashrc + +# add ~/.local/bin to the PATH +[[ -f ~/.xstefenrc ]] && . ~/.xstefenrc diff --git a/.bashrc b/.bashrc new file mode 100644 index 0000000..25a9b88 --- /dev/null +++ b/.bashrc @@ -0,0 +1,18 @@ +# +# ~/.bashrc +# + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +alias ls='ls --color=auto' +alias grep='grep --color=auto' +PS1='[\u@\h \W]\$ ' + +[ -z "$DISPLAY" -a x$XDG_VTNR = x1 ] && exec startx + +# [[ -z "$XSTEFEN" ]] && + [[ -f "$HOME/.xstefenrc" ]] && . "$HOME/.xstefenrc" + +#eval "$(starship init bash)" +source /usr/share/nvm/init-nvm.sh diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..413731d --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,457 @@ +# See dunst(5) for all configuration options + +[global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = none + + ### Geometry ### + + # dynamic width from 0 to 300 + # width = (0, 300) + # constant width of 300 + width = (0, 600) + + # The maximum height of a single notification, excluding the frame. + height = (0, 300) + + # Position the notification in the top right corner + origin = top-right + + # Offset from the origin + offset = 50x50 + + # Scale factor. It is auto-detected if value is 0. + scale = 0 + + # Maximum number of notification (0 means no limit) + notification_limit = 0 + + ### Progress bar ### + + # Turn on the progess bar. It appears when a progress hint is passed with + # for example dunstify -h int:value:12 + progress_bar = true + + # Set the progress bar height. This includes the frame, so make sure + # it's at least twice as big as the frame width. + progress_bar_height = 10 + + # Set the frame width of the progress bar + progress_bar_frame_width = 1 + + # Set the minimum width for the progress bar + progress_bar_min_width = 150 + + # Set the maximum width for the progress bar + progress_bar_max_width = 600 + + # Corner radius for the progress bar. 0 disables rounded corners. + progress_bar_corner_radius = 0 + + + # Show how many messages are currently hidden (because of + # notification_limit). + indicate_hidden = yes + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). (X11 only) + transparency = 0 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + # If gap_size is greater than 0, this setting will be ignored. + separator_height = 0 + + # Padding between text and separator. + padding = 10 + + # Horizontal padding. + horizontal_padding = 20 + + # Padding between text and icon. + text_icon_padding = 0 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 1 + + # Defines color of the frame around the notification window. + frame_color = "#a4a4a4" + + # Size of gap to display between notifications - requires a compositor. + # If value is greater than 0, separator_height will be ignored and a border + # of size frame_width will be drawn around each notification instead. + # Click events on gaps do not currently propagate to applications below. + gap_size = 0 + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = frame + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # A client can set the 'transient' hint to bypass this. See the rules + # section for how to disable this if necessary + # idle_threshold = 120 + + ### Text ### + + font = sans 10 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 0 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "%s\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # Vertical alignment of message text and icon. + # Possible values are "top", "center" and "bottom". + vertical_alignment = center + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Specify where to make an ellipsis in long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Stack together notifications with the same content + stack_duplicates = true + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Recursive icon lookup. You can set a single theme, instead of having to + # define all lookup paths. + enable_recursive_icon_lookup = true + + # Set icon theme (only used for recursive icon lookup) + icon_theme = Adwaita + # You can also set multiple icon themes, with the leftmost one being used first. + # icon_theme = "Adwaita, breeze" + + # Align icons left/right/top/off + icon_position = right + + # Scale small icons up to this size, set to 0 to disable. Helpful + # for e.g. small files or high-dpi screens. In case of conflict, + # max_icon_size takes precedence over this. + min_icon_size = 32 + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 128 + + # Paths to default icons (only neccesary when not using recursive icon lookup) + icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/xdg-open + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = 0 + + # Ignore the dbus closeNotification message. + # Useful to enforce the timeout set by dunst configuration. Without this + # parameter, an application may close the notification sent before the + # user defined timeout. + ignore_dbusclose = false + + ### Wayland ### + # These settings are Wayland-specific. They have no effect when using X11 + + # Uncomment this if you want to let notications appear under fullscreen + # applications (default: overlay) + # layer = top + + # Set this to true to use X11 output on Wayland. + force_xwayland = false + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + + ### mouse + + # Defines list of actions for each mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: Invoke the action determined by the action_name rule. If there is no + # such action, open the context menu. + # * open_url: If the notification has exactly one url, open it. If there are multiple + # ones, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + # * context: Open context menu for the notification. + # * context_all: Open context menu for all notifications. + # These values can be strung together for each mouse event, and + # will be executed in sequence. + mouse_left_click = close_current + mouse_middle_click = do_action, close_current + mouse_right_click = close_all + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behaviour across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the "#" and following would be interpreted as a comment. + background = "#1c2023" + foreground = "#a4a4a4" + timeout = 5 + # Icon for notifications with low urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_normal] + background = "#1c2023" + foreground = "#a4a4a4" + timeout = 5 + # Icon for notifications with normal urgency, uncomment to enable + #icon = /path/to/icon + +[urgency_critical] + background = "#1c2023" + foreground = "#a4a4a4" + frame_color = "#a4a4a4" + timeout = 10 + # Icon for notifications with critical urgency, uncomment to enable + #icon = /path/to/icon + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# +# Messages can be matched by +# appname (discouraged, see desktop_entry) +# body +# category +# desktop_entry +# icon +# match_transient +# msg_urgency +# stack_tag +# summary +# +# and you can override the +# background +# foreground +# format +# frame_color +# fullscreen +# new_icon +# set_stack_tag +# set_transient +# set_category +# timeout +# urgency +# icon_position +# skip_display +# history_ignore +# action_name +# word_wrap +# ellipsize +# alignment +# hide_text +# +# Shell-like globbing will get expanded. +# +# Instead of the appname filter, it's recommended to use the desktop_entry filter. +# GLib based applications export their desktop-entry name. In comparison to the appname, +# the desktop-entry won't get localized. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules. + +# Disable the transient hint so that idle_threshold cannot be bypassed from the +# client +#[transient_disable] +# match_transient = yes +# set_transient = no +# +# Make the handling of transient notifications more strict by making them not +# be placed in history. +#[transient_history_ignore] +# match_transient = yes +# history_ignore = yes + +# fullscreen values +# show: show the notifications, regardless if there is a fullscreen window opened +# delay: displays the new notification, if there is no fullscreen window active +# If the notification is already drawn, it won't get undrawn. +# pushback: same as delay, but when switching into fullscreen, the notification will get +# withdrawn from screen again and will get delayed like a new notification +#[fullscreen_delay_everything] +# fullscreen = delay +#[fullscreen_show_critical] +# msg_urgency = critical +# fullscreen = show + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# skip_display = true + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[skip-display] +# # This notification will not be displayed, but will be included in the history +# summary = "foobar" +# skip_display = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +#[stack-volumes] +# appname = "some_volume_notifiers" +# set_stack_tag = "volume" +# +# vim: ft=cfg diff --git a/.config/fontconfig/conf.d/20-no-embedded.conf b/.config/fontconfig/conf.d/20-no-embedded.conf new file mode 100644 index 0000000..975e66f --- /dev/null +++ b/.config/fontconfig/conf.d/20-no-embedded.conf @@ -0,0 +1,9 @@ + + + + + + false + + + diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf new file mode 100644 index 0000000..f084c43 --- /dev/null +++ b/.config/fontconfig/fonts.conf @@ -0,0 +1,40 @@ + + + + + serif + + DejaVu Serif + + + + sans-serif + + Inter + + + + sans + + Inter + + + + monospace + + Iosevka NF + + + + Monospace + + Iosevka NF + + + + mono + + Iosevka NF + + + diff --git a/.config/frogminer/linux-tkg.cfg b/.config/frogminer/linux-tkg.cfg new file mode 100644 index 0000000..f29cb17 --- /dev/null +++ b/.config/frogminer/linux-tkg.cfg @@ -0,0 +1,302 @@ +# linux-TkG config file + +# Linux distribution you are using, options are "Arch", "Ubuntu", "Debian", "Fedora", "Suse", "Gentoo", "Generic". +# It is automatically set to "Arch" when using PKGBUILD. +# If left empty, the script will prompt +_distro="Arch" + +# Kernel Version - Options are "5.4", and from "5.7" to "5.19" +# you can also set a specific kernel version, e.g. "6.0-rc4" or "5.10.51", +# -> note however that a "z" too small on a "x.y.z" version may make patches fail +# as they got adapted for newer "z" values. +_version="" + +#### MISC OPTIONS #### + +# External config file to use - If the given file exists in path, it will override default config (customization.cfg) - Default is ~/.config/frogminer/linux-tkg.cfg +_EXT_CONFIG_PATH=~/.config/frogminer/linux-tkg.cfg + +# [Arch specific] Set to anything else than "true" to limit cleanup operations and keep source and files generated during compilation. +# Default is "true". +_NUKR="true" + +# Git mirror to use to get the kernel sources, possible values are "kernel.org", "googlesource.com", "github.com" and "torvalds" +_git_mirror="torvalds" + +# Root folder where to checkout the kernel sources (linux-src-git subdir) and build +# Note: - Leave empty to use PKGBUILD's dir +# - Start with a '/' for an absolute path in which `linux-tkg/linux-src-git/` will be created +# - This setting can be used to set the work/build folder to a tmpfs folder +# - Requires >= 32GB ram when building a full kernel, should work with less ram with modprobed-db +_kernel_work_folder="" + +# Permanent root folder where to keep the git clone (linux-kernel.git subdir) and fetch new blobs +# Note: - Leave empty to use PKGBUILD's dir +# - Start with a '/' for an absolute path in which `linux-tkg/linux-kernel.git/` will be created +# - If your internet is faster than your storage, it may be wise to put this folder +# in a tmpfs location (although it will reclone after each restart / tmpfs folder cleanup) +_kernel_source_folder="" + +# Custom compiler root dirs - Leave empty to use system compilers +# Example: CUSTOM_GCC_PATH="/home/frog/PKGBUILDS/mostlyportable-gcc/gcc-mostlyportable-9.2.0" +CUSTOM_GCC_PATH="" + +# Custom LLVM compiler root dirs - Leave empty to use system llvm compiler +# Example: CUSTOM_LLVM_PATH="/home/frog/PKGBUILDS/mostlyportable-llvm/llvm-mostlyportable-11.0.0" +CUSTOM_LLVM_PATH="" + +# Set to true to bypass makepkg.conf and use all available threads for compilation. False will respect your makepkg.conf options. +_force_all_threads="true" + +# Set to true to prevent ccache from being used and set CONFIG_GCC_PLUGINS=y (which needs to be disabled for ccache to work properly) +_noccache="false" + +# Set to true to use modprobed db to clean config from unneeded modules. Speeds up compilation considerably. Requires root - https://wiki.archlinux.org/index.php/Modprobed-db +# Using this option can trigger user prompts if the config doesn't go smoothly. +# !!!! Make sure to have a well populated db !!!! - Leave empty to be asked about it at build time +_modprobeddb="true" + +# modprobed-db database file location +_modprobeddb_db_path=~/.config/modprobed.db + +# Set to "1" to call make menuconfig, "2" to call make nconfig, "3" to call make xconfig, before building the kernel. Set to false to disable and skip the prompt. +_menunconfig="false" + +# Set to true to generate a kernel config fragment from your changes in menuconfig/nconfig. Set to false to disable and skip the prompt. +_diffconfig="false" + +# Set to the file name where the generated config fragment should be written to. Only used if _diffconfig is active. +_diffconfig_name="" + +# [install.sh: Generic and Gentoo specific] Dracut options when generating initramfs +_dracut_options="--lz4" + +#### KERNEL OPTIONS #### + +# Name of the default config file to use for the kernel +# Default (empty) : "config.x86_64" from the linux-tkg-config/5.y folder. +# "running-kernel" : Picks the .config file from the currently running kernel. +# It is recommended to be running an official kernel before running this script, to pick off a correct .config file +# "config_hardened.x86_64" : config file for a hardened kernel, available for kernel version "5.13", "5.10" and "5.4" . +# To get a complete hardened setup, you have to use "cfs" as _cpusched. +# User provided value : custom user provided file, the given path should be relative to the PKGBUILD file. This enables for example to use a user stripped down .config file. +# If the .config file isn't up to date with the chosen kernel version, any extra CONFIG_XXXX is set to its default value. +# Note: the script copies the resulting .config file as "kernelconfig.new" next to the PKGBUILD as a convenience for an eventual re-use. It gets overwritten at each run. +# One can use "kernelconfig.new" here to always use the latest edited .config file. modprobed-db needs to be used only once for its changes to be picked up. +_configfile="" + +# Determine whether to call "olddefconfig" (default) or "oldconfig" for manual config updating interaction. +_config_updating="olddefconfig" + +# Disable some non-module debugging - See PKGBUILD for the list +_debugdisable="true" + +# Strip the vmlinux file after build is done. Set to anything other than "true" if you require debug headers. Default is "true" +_STRIP="true" + +# LEAVE AN EMPTY VALUE TO BE PROMPTED ABOUT FOLLOWING OPTIONS AT BUILD TIME + +# CPU scheduler - Options are "upds" (TkG's Undead PDS), "pds", "bmq", "muqss", "cacule", "tt", "bore" or "cfs" (kernel's default) +_cpusched="" + +# Compiler to use - Options are "gcc" or "llvm". +# For advanced users. +_compiler="llvm" + +# Force the use of the LLVM Integrated Assembler whether using LLVM, LTO or not. +# Set to "1" to enable. +_llvm_ias="" + +# Clang LTO mode, only available with the "llvm" compiler - options are "no", "full" or "thin". +# ! This is currently experimental and might result in an unbootable kernel - Not recommended ! +# "no: do not enable LTO" +# "full: uses 1 thread for Linking, slow and uses more memory, theoretically with the highest performance gains." +# "thin: uses multiple threads, faster and uses less memory, may have a lower runtime performance than Full." +_lto_mode="thin" + +# Apply PREEMPT_RT patchset to the kernel. +# ! Only CFS CPU scheduler is compatible with this patchset ! +# Set to "1" to enable. +_preempt_rt="" + +# Forcibly apply the PREEMPT_RT patchset to the kernel, even when upstream does not officially support the kernel subversion. +# ! This will still not apply when the patch itself or linux-tkg (see _version) do not support the kernel major version - Not recommended ! +# Set to "1" to enable. +_preempt_rt_force="" + +# CPU sched_yield_type - Choose what sort of yield sched_yield will perform +# For PDS and MuQSS: 0: No yield. (Recommended option for gaming on PDS and MuQSS) +# 1: Yield only to better priority/deadline tasks. (Default - can be unstable with PDS on some platforms) +# 2: Expire timeslice and recalculate deadline. (Usually the slowest option for PDS and MuQSS, not recommended) +# For BMQ: 0: No yield. +# 1: Deboost and requeue task. (Default) +# 2: Set rq skip task. +_sched_yield_type="" + +# Round Robin interval is the longest duration two tasks with the same nice level will be delayed for. When CPU time is requested by a task, it receives a time slice equal +# to the rr_interval in addition to a virtual deadline. When using yield_type 2, a low value can help offset the disadvantages of rescheduling a process that has yielded. +# MuQSS default: 6ms" +# PDS default: 4ms" +# BMQ default: 2ms" +# Set to "1" for 2ms, "2" for 4ms, "3" for 6ms, "4" for 8ms, or "default" to keep the chosen scheduler defaults. +_rr_interval="" + +# Set to "true" to disable FUNCTION_TRACER/GRAPH_TRACER, lowering overhead but limiting debugging and analyzing of kernel functions - Kernel default is "false" +_ftracedisable="true" + +# Set to "true" to disable NUMA, lowering overhead, but breaking CUDA/NvEnc on Nvidia equipped systems - Kernel default is "false" +_numadisable="false" + +# Set to "true" to enable misc additions - May contain temporary fixes pending upstream or changes that can break on non-Arch - Kernel default is "true" +_misc_adds="true" + +# Set to "0" for periodic ticks, "1" to use CattaRappa mode (enabling full tickless) and "2" for tickless idle only. +# Full tickless can give higher performances in case you use isolation of CPUs for tasks +# and it works only when using the nohz_full kernel parameter, otherwise behaves like idle. +# Just tickless idle perform better for most platforms. +_tickless="2" + +# Set to "true" to use ACS override patch - https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Bypassing_the_IOMMU_groups_.28ACS_override_patch.29 - Kernel default is "false" +_acs_override="false" + +# Set to "true" to add Bcache filesystem support. You'll have to install bcachefs-tools-git from AUR for utilities - https://bcachefs.org/ - If in doubt, set to "false" +# This can be buggy and isn't recommended on a production machine, also enabling this option will not allow you to enable MGLRU. +_bcachefs="false" + +# Set to "true" to enable support for winesync, an experimental replacement for esync - requires patched wine - https://repo.or.cz/linux/zf.git/shortlog/refs/heads/winesync4 +# ! Can't be used on multiple kernels installed side-by-side, which will require https://aur.archlinux.org/packages/winesync-dkms/ instead of this option ! +_winesync="false" + +# Set to "true" to enable Binder and Ashmem, the kernel modules required to use the android emulator Anbox. ! This doesn't apply to 5.4.y ! +_anbox="false" + +# A selection of patches from Zen/Liquorix kernel and additional tweaks for a better gaming experience (ZENIFY) - Default is "true" +_zenify="true" + +# compiler optimization level - 1. Optimize for performance (-O2); 2. Optimize harder (-O3); 3. Optimize for size (-Os) - Kernel default is "1" +_compileroptlevel="2" + +# CPU compiler optimizations - Defaults to prompt at kernel config if left empty +# AMD CPUs : "k8" "k8sse3" "k10" "barcelona" "bobcat" "jaguar" "bulldozer" "piledriver" "steamroller" "excavator" "zen" "zen2" "zen3" "zen4" (zen3 opt support depends on GCC11) (zen4 opt support depends on GCC13) +# Intel CPUs : "mpsc"(P4 & older Netburst based Xeon) "atom" "core2" "nehalem" "westmere" "silvermont" "sandybridge" "ivybridge" "haswell" "broadwell" "skylake" "skylakex" "cannonlake" "icelake" "goldmont" "goldmontplus" "cascadelake" "cooperlake" "tigerlake" "sapphirerapids" "rocketlake" "alderlake" "raptorlake" "meteorlake" (raptorlake and meteorlake opt support require GCC13) +# Other options : +# - "native_amd" (use compiler autodetection - Selecting your arch manually in the list above is recommended instead of this option) +# - "native_intel" (use compiler autodetection and will prompt for P6_NOPS - Selecting your arch manually in the list above is recommended instead of this option) +# - "generic" (kernel's default - to share the package between machines with different CPU µarch as long as they are x86-64) +# +# https://en.wikipedia.org/wiki/X86-64#Microarchitecture_Levels) +# - "generic_v2" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v2 +# - "generic_v3" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v3 +# - "generic_v4" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v4 +_processor_opt="native_intel" + +# CacULE only - Enable Response Driven Balancer, an experimental load balancer for CacULE +_cacule_rdb="false" + +# CacULE only - Load balance time period - Default is 19 +# https://github.com/hamadmarri/cacule-cpu-scheduler/blob/master/patches/CacULE/RDB/rdb.patch#L56 +_cacule_rdb_interval="19" + +# TT only - Enable High HZ patch (available for 5.15 only) - Default is "false" +_tt_high_hz="false" + +# MuQSS and PDS only - SMT (Hyperthreading) aware nice priority and policy support (SMT_NICE) - Kernel default is "true" - You can disable this on non-SMT/HT CPUs for lower overhead +_smt_nice="" + +# Trust the CPU manufacturer to initialize Linux's CRNG (RANDOM_TRUST_CPU) - Kernel default is "false" +_random_trust_cpu="false" + +# Timer frequency - "100" "250" "300" "500" "750" "1000" ("2000" is available for cacule cpusched only) - More options available in kernel config prompt when left empty depending on selected cpusched with the default option pointed with a ">" (2000 for cacule, 100 for muqss and 1000 for other cpu schedulers) +_timer_freq="500" + +# Default CPU governor - "performance", "ondemand", "schedutil" or leave empty for default (schedutil) +_default_cpu_gov="ondemand" + +# Use an aggressive ondemand governor instead of default ondemand to improve performance on low loads/high core count CPUs while keeping some power efficiency from frequency scaling. +# It still requires you to either set ondemand as default governor or to select it in some way at runtime. +_aggressive_ondemand="true" + +# [Advanced] Default TCP IPv4 algorithm to use. Options are: "yeah", "bbr", "cubic", "reno", "vegas" and "westwood". Leave empty if unsure. +# This config option will not be prompted +# Can be changed at runtime with the command line `# echo "$name" > /proc/sys/net/ipv4/tcp_congestion_control` where $name is one of the options above. +# Default (empty) and fallback : cubic +_tcp_cong_alg="bbr" + +# You can pass a default set of kernel command line options here - example: "intel_pstate=passive nowatchdog amdgpu.ppfeaturemask=0xfffd7fff mitigations=off" +_custom_commandline="" + +# Selection of Clearlinux patches +_clear_patches="true" + + +#### SPESHUL OPTION #### + +# If you want to bypass the stock naming scheme and enforce something else (example : "linux") - Useful for some bootloaders requiring manual entry editing on each release. +# !!! It will also change pkgname - If you don't explicitely need this, don't use it !!! +_custom_pkgbase="" + +# [non-Arch specific] Kernel localversion. Putting it to "Mario" will make for example the kernel version be 5.7.0-tkg-Mario (given by uname -r) +# If left empty, it will use "-tkg-${_cpusched}${_compiler}" where "${_cpusched}" will be replaced by the user chosen scheduler, ${_compiler} will be replaced by "-llvm" if clang is used (nothing for GCC). +_kernel_localversion="XS" + +# Set to your maximum number of CPUs (physical + logical cores) - Lower means less overhead - You can set it to "$(nproc)" to use the current host's CPU(s) core count, or leave empty to use default +# If you set this to a lower value than you have cores, some cores will be disabled +# Default Arch kernel value is 320 +_NR_CPUS_value="8" + +#### LEGACY OPTIONS #### + +# Upstreamed version of Fsync from Linux 5.16 for previous kernel versions - https://github.com/andrealmeid/futex_waitv_patches +# ! Only affect 5.13, 5.14 and 5.15 kernel branches. Safely ignored for 5.16 or newer ! +_fsync_backport="true" + +# Fsync legacy, known as FUTEX_WAIT_MULTIPLE (opcode 31) - previous version of fsync required for Valve Proton 4.11, 5.0 and 5.13 - https://steamcommunity.com/games/221410/announcements/detail/2957094910196249305 +_fsync_legacy="true" + +# Set to "true" to enable support for futex2, a DEPRECATED interface that can be used by proton-tkg and proton 5.13 experimental through Fsync - Can be enabled alongside fsync legacy to use it as a fallback +# https://gitlab.collabora.com/tonyk/linux/-/tree/futex2-dev +# ! Only affect 5.10-5.14 kernel branches. Safely ignored for 5.15 or newer ! +# ! required _fsync_backport="false" ! +_fsync_futex2="false" + +# Set to "true" to add back missing symbol for AES-NI/AVX support on ZFS - This is a legacy option that can be ignored on 5.10+ kernels - https://github.com/NixOS/nixpkgs/blob/master/pkgs/os-specific/linux/kernel/export_kernel_fpu_functions.patch +_zfsfix="true" + +# MuQSS only - CPU scheduler runqueue sharing - No sharing (RQ_NONE), SMT (hyperthread) siblings (RQ_SMT), Multicore siblings (RQ_MC), Symmetric Multi-Processing (RQ_SMP), NUMA (RQ_ALL) +# Valid values are "none", "smt", "mc", "mc-llc"(for zen), "smp", "all" - Kernel default is "smt" +_runqueue_sharing="" + +# MuQSS only - Make IRQ threading compulsory (FORCE_IRQ_THREADING) - Default is "false" +_irq_threading="false" + +# Set to "true" to add multi-generational LRU framework support on kernel 5.18+ - Improves memory pressure handling - https://lore.kernel.org/lkml/20220706220022.968789-1-yuzhao@google.com/ +# Older kernel versions might have a patch available in the community-patches repo +# Upstream as of 6.1 +# ! This option will be disabled when bcachefs is enabled ! +_mglru="true" + +#### USER PATCHES #### + +# community patches - add patches (separated by a space) of your choice by name from the community-patches dir +# example: _community_patches="clear_nack_in_tend_isr.myrevert ffb_regression_fix.mypatch 0008-drm-amd-powerplay-force-the-trim-of-the-mclk-dpm-levels-if-OD-is-enabled.mypatch" +_community_patches="" + +# You can use your own patches by putting them in a subfolder called linux-tkg-userpatches (e.g. linux510-tkg-userpatches) next to the PKGBUILD and giving them the .mypatch extension. +# You can also revert patches by putting them in that same folder and giving them the .myrevert extension. + +# Also, userpatches variable below must be set to true for the above to work. +_user_patches="true" + +# Apply all user patches without confirmation - !!! NOT RECOMMENDED !!! +_user_patches_no_confirm="false" + + +#### CONFIG FRAGMENTS #### + +# You can use your own kernel config fragments by putting them in the same folder as the PKGBUILD and giving them the .myfrag extension. + +# Also, the config fragments variable below must be set to true for the above to work. +_config_fragments="true" + +# Apply all config fragments without confirmation - !!! NOT RECOMMENDED !!! +_config_fragments_no_confirm="false" diff --git a/.config/gtk-2.0/gtkfilechooser.ini b/.config/gtk-2.0/gtkfilechooser.ini new file mode 100644 index 0000000..73e5a6f --- /dev/null +++ b/.config/gtk-2.0/gtkfilechooser.ini @@ -0,0 +1,13 @@ +[Filechooser Settings] +LocationMode=path-bar +ShowHidden=true +ShowSizeColumn=true +GeometryX=0 +GeometryY=0 +GeometryWidth=780 +GeometryHeight=619 +SortColumn=name +SortOrder=ascending +StartupMode=recent +ViewMode=list-view +IconViewScale=-1 diff --git a/.config/gtk-3.0/bookmarks b/.config/gtk-3.0/bookmarks new file mode 100644 index 0000000..f4a1d7c --- /dev/null +++ b/.config/gtk-3.0/bookmarks @@ -0,0 +1,9 @@ +file:///home/xstefen/android +file:///home/xstefen/git +file:///mnt/files +file:///mnt/files/Sync sync +file:///mnt/seagate +file:///mnt/bahamut/NVIDIA_SHIELD bahamut +file:///mnt/games +file:///mnt/windows +file:/// diff --git a/.config/gtk-3.0/gtk.css b/.config/gtk-3.0/gtk.css new file mode 100644 index 0000000..4544af3 --- /dev/null +++ b/.config/gtk-3.0/gtk.css @@ -0,0 +1,44 @@ + +.window-frame, .window-frame:backdrop { + box-shadow: 0 0 0 black; + border-style: none; + margin: 0; + border-radius: 0; +} + +.titlebar { + border-radius: 0; +} + +.window-frame.csd.popup { + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13); +} + +.header-bar { + background-image: none; + background-color: #ededed; + box-shadow: none; +} +/* You may want to use this if you do not like the double title. +GtkLabel.title { + opacity: 0; +}*/ + +/* Always use background color */ +GtkWindow { + background-color: @theme_bg_color; +} + +/* Fix tooltip background override */ +.tooltip { + background-color: rgba(0, 0, 0, 0.8); +} + +.tooltip * { + background-color: transparent; +} + +/* Fix Nautilus desktop window background override */ +NautilusWindow { + background-color: transparent; +} diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini new file mode 100644 index 0000000..5d177b8 --- /dev/null +++ b/.config/gtk-3.0/settings.ini @@ -0,0 +1,16 @@ +[Settings] +gtk-theme-name=Plata-Noir +gtk-icon-theme-name=ArchLabs-Dark +gtk-font-name=Sans 9 +gtk-cursor-theme-name=Adwaita +gtk-cursor-theme-size=32 +gtk-toolbar-style=GTK_TOOLBAR_ICONS +gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=0 +gtk-enable-input-feedback-sounds=0 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintslight +gtk-xft-rgba=rgb diff --git a/.config/jgmenu/append.csv b/.config/jgmenu/append.csv new file mode 100644 index 0000000..2f37463 --- /dev/null +++ b/.config/jgmenu/append.csv @@ -0,0 +1,9 @@ +^sep() +Lock,i3lock-fancy -p,system-lock-screen +Exit,^checkout(exit),system-shutdown + +exit,^tag(exit) +logout,session-logout,system-log-out +suspend,systemctl -i suspend,system-log-out +reboot,systemctl -i reboot,system-reboot +poweroff,systemctl -i poweroff,system-shutdown diff --git a/.config/jgmenu/jgmenurc b/.config/jgmenu/jgmenurc new file mode 100644 index 0000000..8988c3d --- /dev/null +++ b/.config/jgmenu/jgmenurc @@ -0,0 +1,64 @@ +# jgmenurc + +stay_alive = 1 +#hide_on_startup = 0 +csv_cmd = pmenu +tint2_look = 1 +at_pointer = 0 +terminal_exec = xterm +terminal_args = -e +#monitor = 0 + +menu_margin_x = 4 +menu_margin_y = 32 +menu_width = 200 +menu_padding_top = 10 +menu_padding_right = 2 +menu_padding_bottom = 5 +menu_padding_left = 2 +menu_radius = 0 +menu_border = 1 +menu_halign = left +menu_valign = bottom + +#sub_spacing = 1 +#sub_padding_top = -1 +#sub_padding_right = -1 +#sub_padding_bottom = -1 +#sub_padding_left = -1 +sub_hover_action = 1 + +#item_margin_x = 3 +item_margin_y = 5 +item_height = 30 +item_padding_x = 8 +item_radius = 0 +item_border = 0 +#item_halign = left + +sep_height = 5 + +font = monospace 9 +#font_fallback = xtg +icon_size = 24 +#icon_text_spacing = 10 +#icon_theme = +#icon_theme_fallback = xtg + +#arrow_string = ▸ +#arrow_width = 15 + +color_menu_bg = #040404 100 +color_menu_fg = #f4f4f4 100 +#color_menu_border = #1C2023 8 + +color_norm_bg = #040404 0 +color_norm_fg = #f4f4f4 100 + +color_sel_bg = #0070ff 60 +color_sel_fg = #f4f4f4 100 +#color_sel_border = #1C2023 8 + +color_sep_fg = #919BA0 40 + +#csv_name_format = %n (%g) diff --git a/.config/jgmenu/prepend.csv b/.config/jgmenu/prepend.csv new file mode 100644 index 0000000..41a9edc --- /dev/null +++ b/.config/jgmenu/prepend.csv @@ -0,0 +1,4 @@ +Web browser,exo-open --launch WebBrowser,web-browser +File manager,exo-open --launch FileManager,system-file-manager +Terminal,exo-open --launch TerminalEmulator,utilities-terminal +^sep() diff --git a/.config/kitty/kitty-themes b/.config/kitty/kitty-themes new file mode 160000 index 0000000..b1abdd5 --- /dev/null +++ b/.config/kitty/kitty-themes @@ -0,0 +1 @@ +Subproject commit b1abdd54ba655ef34f75a568d78625981bf1722c diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf new file mode 100644 index 0000000..5369d43 --- /dev/null +++ b/.config/kitty/kitty.conf @@ -0,0 +1,813 @@ +# +# kitty terminal config +# + +include ./theme.conf + +font_family Iosevka NF +bold_font Iosevka NF Bold +italic_font Iosevka NF Italic +bold_italic_font Iosevka NF Bold Italic + +font_size 9 + +disable_ligatures never + +font_features Iosevka-NF +zero + +cursor_shape beam +cursor_beam_thickness 5 +cursor_blink_interval 0.75 +cursor_stop_blinking_after 0 + +scrollback_lines 9999 + +detect_urls yes + +show_hyperlink_targets no + +copy_on_select no + +strip_trailing_spaces smart + +pointer_shape_when_grabbed arrow +default_pointer_shape beam +pointer_shape_when_dragging hand + +sync_to_monitor yes + +enable_audio_bell no + +visual_bell_duration 0.25 +window_alert_on_bell yes +bell_on_tab "🔔 " + +remember_window_size yes +window_padding_width 8 +placement_strategy top-left +#resize_draw_strategy size + +tab_bar_edge top +tab_bar_style fade + +background_opacity 0.9 + +shell . +editor . + +allow_remote_control no + +# clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask + +allow_hyperlinks yes + +shell_integration enabled + +#term xterm-256color + + +#: Keyboard shortcuts {{{ + +#: Keys are identified simply by their lowercase Unicode characters. +#: For example: a for the A key, [ for the left square bracket key, +#: etc. For functional keys, such as Enter or Escape, the names are +#: present at Functional key definitions +#: . +#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt +#: (opt, option, ⌥), super (cmd, command, ⌘). See also: GLFW mods +#: + +#: On Linux you can also use XKB key names to bind keys that are not +#: supported by GLFW. See XKB keys +#: for a list of key names. The name to use is the part +#: after the XKB_KEY_ prefix. Note that you can only use an XKB key +#: name for keys that are not known as GLFW keys. + +#: Finally, you can use raw system key codes to map keys, again only +#: for keys that are not known as GLFW keys. To see the system key +#: code for a key, start kitty with the kitty --debug-input option, +#: kitty will output some debug text for every key event. In that text +#: look for native_code, the value of that becomes the key name in the +#: shortcut. For example: + +#: .. code-block:: none + +#: on_key_input: glfw key: 0x61 native_code: 0x61 action: PRESS mods: none text: 'a' + +#: Here, the key name for the A key is 0x61 and you can use it with:: + +#: map ctrl+0x61 something + +#: to map Ctrl+A to something. + +#: You can use the special action no_op to unmap a keyboard shortcut +#: that is assigned in the default configuration:: + +#: map kitty_mod+space no_op + +#: If you would like kitty to completely ignore a key event, not even +#: sending it to the program running in the terminal, map it to +#: discard_event:: + +#: map kitty_mod+f1 discard_event + +#: You can combine multiple actions to be triggered by a single +#: shortcut with combine action, using the syntax below:: + +#: map key combine action1 action2 action3 ... + +#: For example:: + +#: map kitty_mod+e combine : new_window : next_layout + +#: This will create a new window and switch to the next available +#: layout. + +#: You can use multi-key shortcuts with the syntax shown below:: + +#: map key1>key2>key3 action + +#: For example:: + +#: map ctrl+f>2 set_font_size 20 + +#: The full list of actions that can be mapped to key presses is +#: available here . + +kitty_mod ctrl+shift + +#: Special modifier key alias for default shortcuts. You can change +#: the value of this option to alter all default shortcuts that use +#: kitty_mod. + +# clear_all_shortcuts no + +#: Remove all shortcut definitions up to this point. Useful, for +#: instance, to remove the default shortcuts. + +# action_alias + +#: E.g. action_alias launch_tab launch --type=tab --cwd=current + +#: Define action aliases to avoid repeating the same options in +#: multiple mappings. Aliases can be defined for any action and will +#: be expanded recursively. For example, the above alias allows you to +#: create mappings to launch a new tab in the current working +#: directory without duplication:: + +#: map f1 launch_tab vim +#: map f2 launch_tab emacs + +#: Similarly, to alias kitten invocation:: + +#: action_alias hints kitten hints --hints-offset=0 + +# kitten_alias + +#: E.g. kitten_alias hints hints --hints-offset=0 + +#: Like action_alias above, but specifically for kittens. Generally, +#: prefer to use action_alias. This option is a legacy version, +#: present for backwards compatibility. It causes all invocations of +#: the aliased kitten to be substituted. So the example above will +#: cause all invocations of the hints kitten to have the --hints- +#: offset=0 option applied. + +#: Clipboard {{{ + +#: Copy to clipboard + +map kitty_mod+c copy_to_clipboard +# map cmd+c copy_to_clipboard + +#:: There is also a copy_or_interrupt action that can be optionally +#:: mapped to Ctrl+C. It will copy only if there is a selection and +#:: send an interrupt otherwise. Similarly, +#:: copy_and_clear_or_interrupt will copy and clear the selection or +#:: send an interrupt if there is no selection. + +#: Paste from clipboard + +map kitty_mod+v paste_from_clipboard +# map cmd+v paste_from_clipboard + +#: Paste from selection + +# map kitty_mod+s paste_from_selection +# map shift+insert paste_from_selection + +#: Pass selection to program + +# map kitty_mod+o pass_selection_to_program + +#:: You can also pass the contents of the current selection to any +#:: program with pass_selection_to_program. By default, the system's +#:: open program is used, but you can specify your own, the selection +#:: will be passed as a command line argument to the program. For +#:: example:: + +#:: map kitty_mod+o pass_selection_to_program firefox + +#:: You can pass the current selection to a terminal program running +#:: in a new kitty window, by using the @selection placeholder:: + +#:: map kitty_mod+y new_window less @selection + +#: }}} + +#: Scrolling {{{ + +#: Scroll line up + +# map kitty_mod+up scroll_line_up +# map kitty_mod+k scroll_line_up +# map opt+cmd+page_up scroll_line_up +# map cmd+up scroll_line_up + +#: Scroll line down + +# map kitty_mod+down scroll_line_down +# map kitty_mod+j scroll_line_down +# map opt+cmd+page_down scroll_line_down +# map cmd+down scroll_line_down + +#: Scroll page up + +map page_up scroll_page_up +# map kitty_mod+page_up scroll_page_up +# map cmd+page_up scroll_page_up + +#: Scroll page down + +map page_down scroll_page_down +# map kitty_mod+page_down scroll_page_down +# map cmd+page_down scroll_page_down + +#: Scroll to top + +# map kitty_mod+home scroll_home +# map cmd+home scroll_home + +#: Scroll to bottom + +# map kitty_mod+end scroll_end +# map cmd+end scroll_end + +#: Scroll to previous shell prompt + +# map kitty_mod+z scroll_to_prompt -1 + +#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last +#:: jumped to or the last clicked position. Requires shell +#:: integration +#:: to work. + +#: Scroll to next shell prompt + +# map kitty_mod+x scroll_to_prompt 1 + +#: Browse scrollback buffer in pager + +# map kitty_mod+h show_scrollback + +#:: You can pipe the contents of the current screen and history +#:: buffer as STDIN to an arbitrary program using launch --stdin- +#:: source. For example, the following opens the scrollback buffer in +#:: less in an overlay window:: + +#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R + +#:: For more details on piping screen and buffer contents to external +#:: programs, see launch . + +#: Browse output of the last shell command in pager + +map kitty_mod+g show_last_command_output + +#:: You can also define additional shortcuts to get the command +#:: output. For example, to get the first command output on screen:: + +#:: map f1 show_first_command_output_on_screen + +#:: To get the command output that was last accessed by a keyboard +#:: action or mouse action:: + +#:: map f1 show_last_visited_command_output + +#:: You can pipe the output of the last command run in the shell +#:: using the launch action. For example, the following opens the +#:: output in less in an overlay window:: + +#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R + +#:: To get the output of the first command on the screen, use +#:: @first_cmd_output_on_screen. To get the output of the last jumped +#:: to command, use @last_visited_cmd_output. + +#:: Requires shell integration +#:: to work. + +#: }}} + +#: Window management {{{ + +#: New window + +# map kitty_mod+enter new_window +# map cmd+enter new_window + +#:: You can open a new kitty window running an arbitrary program, for +#:: example:: + +#:: map kitty_mod+y launch mutt + +#:: You can open a new window with the current working directory set +#:: to the working directory of the current window using:: + +#:: map ctrl+alt+enter launch --cwd=current + +#:: You can open a new window that is allowed to control kitty via +#:: the kitty remote control facility with launch --allow-remote- +#:: control. Any programs running in that window will be allowed to +#:: control kitty. For example:: + +#:: map ctrl+enter launch --allow-remote-control some_program + +#:: You can open a new window next to the currently active window or +#:: as the first window, with:: + +#:: map ctrl+n launch --location=neighbor +#:: map ctrl+f launch --location=first + +#:: For more details, see launch +#:: . + +#: New OS window + +# map kitty_mod+n new_os_window +# map cmd+n new_os_window + +#:: Works like new_window above, except that it opens a top-level OS +#:: window. In particular you can use new_os_window_with_cwd to open +#:: a window with the current working directory. + +#: Close window + +# map kitty_mod+w close_window +# map shift+cmd+d close_window + +#: Next window + +# map kitty_mod+] next_window + +#: Previous window + +# map kitty_mod+[ previous_window + +#: Move window forward + +# map kitty_mod+f move_window_forward + +#: Move window backward + +# map kitty_mod+b move_window_backward + +#: Move window to top + +# map kitty_mod+` move_window_to_top + +#: Start resizing window + +# map kitty_mod+r start_resizing_window +# map cmd+r start_resizing_window + +#: First window + +# map kitty_mod+1 first_window +# map cmd+1 first_window + +#: Second window + +# map kitty_mod+2 second_window +# map cmd+2 second_window + +#: Third window + +# map kitty_mod+3 third_window +# map cmd+3 third_window + +#: Fourth window + +# map kitty_mod+4 fourth_window +# map cmd+4 fourth_window + +#: Fifth window + +# map kitty_mod+5 fifth_window +# map cmd+5 fifth_window + +#: Sixth window + +# map kitty_mod+6 sixth_window +# map cmd+6 sixth_window + +#: Seventh window + +# map kitty_mod+7 seventh_window +# map cmd+7 seventh_window + +#: Eight window + +# map kitty_mod+8 eighth_window +# map cmd+8 eighth_window + +#: Ninth window + +# map kitty_mod+9 ninth_window +# map cmd+9 ninth_window + +#: Tenth window + +# map kitty_mod+0 tenth_window + +#: Visually select and focus window + +# map kitty_mod+f7 focus_visible_window + +#:: Display overlay numbers and alphabets on the window, and switch +#:: the focus to the window when you press the key. When there are +#:: only two windows, the focus will be switched directly without +#:: displaying the overlay. You can change the overlay characters and +#:: their order with option visual_window_select_characters. + +#: Visually swap window with another + +# map kitty_mod+f8 swap_with_window + +#:: Works like focus_visible_window above, but swaps the window. + +#: }}} + +#: Tab management {{{ + +#: Next tab + +# map kitty_mod+right next_tab +# map shift+cmd+] next_tab +# map ctrl+tab next_tab + +#: Previous tab + +# map kitty_mod+left previous_tab +# map shift+cmd+[ previous_tab +# map ctrl+shift+tab previous_tab + +#: New tab + +# map kitty_mod+t new_tab +# map cmd+t new_tab + +#: Close tab + +# map kitty_mod+q close_tab +# map cmd+w close_tab + +#: Close OS window + +# map shift+cmd+w close_os_window + +#: Move tab forward + +# map kitty_mod+. move_tab_forward + +#: Move tab backward + +# map kitty_mod+, move_tab_backward + +#: Set tab title + +# map kitty_mod+alt+t set_tab_title +# map shift+cmd+i set_tab_title + + +#: You can also create shortcuts to go to specific tabs, with 1 being +#: the first tab, 2 the second tab and -1 being the previously active +#: tab, and any number larger than the last tab being the last tab:: + +map alt+1 goto_tab 1 +map alt+2 goto_tab 2 +map alt+3 goto_tab 3 +map alt+4 goto_tab 4 + +#: Just as with new_window above, you can also pass the name of +#: arbitrary commands to run when using new_tab and new_tab_with_cwd. +#: Finally, if you want the new tab to open next to the current tab +#: rather than at the end of the tabs list, use:: + +#: map ctrl+t new_tab !neighbor [optional cmd to run] +#: }}} + +#: Layout management {{{ + +#: Next layout + +# map kitty_mod+l next_layout + + +#: You can also create shortcuts to switch to specific layouts:: + +#: map ctrl+alt+t goto_layout tall +#: map ctrl+alt+s goto_layout stack + +#: Similarly, to switch back to the previous layout:: + +#: map ctrl+alt+p last_used_layout + +#: There is also a toggle_layout action that switches to the named +#: layout or back to the previous layout if in the named layout. +#: Useful to temporarily "zoom" the active window by switching to the +#: stack layout:: + +#: map ctrl+alt+z toggle_layout stack +#: }}} + +#: Font sizes {{{ + +#: You can change the font size for all top-level kitty OS windows at +#: a time or only the current one. + +#: Increase font size + +# map kitty_mod+equal change_font_size all +2.0 +# map kitty_mod+plus change_font_size all +2.0 +# map kitty_mod+kp_add change_font_size all +2.0 +# map cmd+plus change_font_size all +2.0 +# map cmd+equal change_font_size all +2.0 +# map shift+cmd+equal change_font_size all +2.0 + +#: Decrease font size + +# map kitty_mod+minus change_font_size all -2.0 +# map kitty_mod+kp_subtract change_font_size all -2.0 +# map cmd+minus change_font_size all -2.0 +# map shift+cmd+minus change_font_size all -2.0 + +#: Reset font size + +# map kitty_mod+backspace change_font_size all 0 +# map cmd+0 change_font_size all 0 + + +#: To setup shortcuts for specific font sizes:: + +#: map kitty_mod+f6 change_font_size all 10.0 + +#: To setup shortcuts to change only the current OS window's font +#: size:: + +#: map kitty_mod+f6 change_font_size current 10.0 +#: }}} + +#: Select and act on visible text {{{ + +#: Use the hints kitten to select text and either pass it to an +#: external program or insert it into the terminal or copy it to the +#: clipboard. + +#: Open URL + +# map kitty_mod+e open_url_with_hints + +#:: Open a currently visible URL using the keyboard. The program used +#:: to open the URL is specified in open_url_with. + +#: Insert selected path + +# map kitty_mod+p>f kitten hints --type path --program - + +#:: Select a path/filename and insert it into the terminal. Useful, +#:: for instance to run git commands on a filename output from a +#:: previous git command. + +#: Open selected path + +# map kitty_mod+p>shift+f kitten hints --type path + +#:: Select a path/filename and open it with the default open program. + +#: Insert selected line + +# map kitty_mod+p>l kitten hints --type line --program - + +#:: Select a line of text and insert it into the terminal. Useful for +#:: the output of things like: `ls -1`. + +#: Insert selected word + +# map kitty_mod+p>w kitten hints --type word --program - + +#:: Select words and insert into terminal. + +#: Insert selected hash + +# map kitty_mod+p>h kitten hints --type hash --program - + +#:: Select something that looks like a hash and insert it into the +#:: terminal. Useful with git, which uses SHA1 hashes to identify +#:: commits. + +#: Open the selected file at the selected line + +# map kitty_mod+p>n kitten hints --type linenum + +#:: Select something that looks like filename:linenum and open it in +#:: vim at the specified line number. + +#: Open the selected hyperlink + +# map kitty_mod+p>y kitten hints --type hyperlink + +#:: Select a hyperlink (i.e. a URL that has been marked as such by +#:: the terminal program, for example, by `ls --hyperlink=auto`). + + +#: The hints kitten has many more modes of operation that you can map +#: to different shortcuts. For a full description see hints kitten +#: . +#: }}} + +#: Miscellaneous {{{ + +#: Show documentation + +# map kitty_mod+f1 show_kitty_doc overview + +#: Toggle fullscreen + +# map kitty_mod+f11 toggle_fullscreen +# map ctrl+cmd+f toggle_fullscreen + +#: Toggle maximized + +# map kitty_mod+f10 toggle_maximized + +#: Toggle macOS secure keyboard entry + +# map opt+cmd+s toggle_macos_secure_keyboard_entry + +#: Unicode input + +# map kitty_mod+u kitten unicode_input +# map ctrl+cmd+space kitten unicode_input + +#: Edit config file + +# map kitty_mod+f2 edit_config_file +# map cmd+, edit_config_file + +#: Open the kitty command shell + +# map kitty_mod+escape kitty_shell window + +#:: Open the kitty shell in a new window / tab / overlay / os_window +#:: to control kitty using commands. + +#: Increase background opacity + +# map kitty_mod+a>m set_background_opacity +0.1 + +#: Decrease background opacity + +# map kitty_mod+a>l set_background_opacity -0.1 + +#: Make background fully opaque + +# map kitty_mod+a>1 set_background_opacity 1 + +#: Reset background opacity + +# map kitty_mod+a>d set_background_opacity default + +#: Reset the terminal + +map kitty_mod+delete clear_terminal reset active +# map opt+cmd+r clear_terminal reset active + +#:: You can create shortcuts to clear/reset the terminal. For +#:: example:: + +#:: # Reset the terminal +#:: map f1 clear_terminal reset active +#:: # Clear the terminal screen by erasing all contents +#:: map f1 clear_terminal clear active +#:: # Clear the terminal scrollback by erasing it +#:: map f1 clear_terminal scrollback active +#:: # Scroll the contents of the screen into the scrollback +#:: map f1 clear_terminal scroll active +#:: # Clear everything up to the line with the cursor +#:: map f1 clear_terminal to_cursor active + +#:: If you want to operate on all kitty windows instead of just the +#:: current one, use all instead of active. + +#:: It is also possible to remap Ctrl+L to both scroll the current +#:: screen contents into the scrollback buffer and clear the screen, +#:: instead of just clearing the screen, for example, for ZSH add the +#:: following to ~/.zshrc: + +#:: .. code-block:: zsh + +#:: scroll-and-clear-screen() { +#:: printf '\n%.0s' {1..$LINES} +#:: zle clear-screen +#:: } +#:: zle -N scroll-and-clear-screen +#:: bindkey '^l' scroll-and-clear-screen + +#: Clear up to cursor line + +# map cmd+k clear_terminal to_cursor active + +#: Reload kitty.conf + +map kitty_mod+f5 load_config_file +# map ctrl+cmd+, load_config_file + +#:: Reload kitty.conf, applying any changes since the last time it +#:: was loaded. Note that a handful of options cannot be dynamically +#:: changed and require a full restart of kitty. Particularly, when +#:: changing shortcuts for actions located on the macOS global menu +#:: bar, a full restart is needed. You can also map a keybinding to +#:: load a different config file, for example:: + +#:: map f5 load_config /path/to/alternative/kitty.conf + +#:: Note that all options from the original kitty.conf are discarded, +#:: in other words the new configuration *replace* the old ones. + +#: Debug kitty configuration + +# map kitty_mod+f6 debug_config +# map opt+cmd+, debug_config + +#:: Show details about exactly what configuration kitty is running +#:: with and its host environment. Useful for debugging issues. + +#: Send arbitrary text on key presses + +#:: E.g. map ctrl+shift+alt+h send_text all Hello World + +#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the +#:: client program when pressing specified shortcut keys. For +#:: example:: + +#:: map ctrl+alt+a send_text all Special text + +#:: This will send "Special text" when you press the Ctrl+Alt+A key +#:: combination. The text to be sent decodes ANSI C escapes +#:: so you can use escapes like \e to send control +#:: codes or \u21fb to send Unicode characters (or you can just input +#:: the Unicode characters directly as UTF-8 text). You can use +#:: `kitty +kitten show_key` to get the key escape codes you want to +#:: emulate. + +#:: The first argument to send_text is the keyboard modes in which to +#:: activate the shortcut. The possible values are normal, +#:: application, kitty or a comma separated combination of them. The +#:: modes normal and application refer to the DECCKM cursor key mode +#:: for terminals, and kitty refers to the kitty extended keyboard +#:: protocol. The special value all means all of them. + +#:: Some more examples:: + +#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) +#:: map ctrl+alt+a send_text normal Word\e[H +#:: map ctrl+alt+a send_text application Word\eOH +#:: # Run a command at a shell prompt (like typing the command and pressing Enter) +#:: map ctrl+alt+a send_text normal,application some command with arguments\r + +#: Open kitty Website + +# map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ + +#: Hide macOS kitty application + +# map cmd+h hide_macos_app + +#: Hide macOS other applications + +# map opt+cmd+h hide_macos_other_apps + +#: Minimize macOS window + +# map cmd+m minimize_macos_window + +#: Quit kitty + +# map cmd+q quit + +#: }}} + +#: }}} diff --git a/.config/kitty/theme.conf b/.config/kitty/theme.conf new file mode 120000 index 0000000..67f3a5d --- /dev/null +++ b/.config/kitty/theme.conf @@ -0,0 +1 @@ +/home/xstefen/.config/kitty/kitty-themes/themes/Glacier.conf \ No newline at end of file diff --git a/.config/modprobed-db.conf b/.config/modprobed-db.conf new file mode 100644 index 0000000..6c7e13b --- /dev/null +++ b/.config/modprobed-db.conf @@ -0,0 +1,21 @@ +# For documentation, see the manpage for modprobed-db + +# Path where database will reside. +# Do NOT use a variable in the following path like $HOME +# You MUST use a fully qualified path or else invoking the script via sudo +# will trick it into thinking that the db is in /root/foo/bar +DBPATH="/home/xstefen/.config" + +# Define the background of your terminal theme here. +# A setting of dark will produce colors that nicely contrast a dark background. +# A setting of light will produce colors that nicely contrast a light background. +COLORS=dark +#COLORS=light + + +# Add modules in the ignore array that you do NOT want counted, for example out-of-tree +# modules and those provided by another package. +# +# For Arch Linux, some examples are given below but this is not a fully inclusive list. + +IGNORE=(nvidia nvidia_drm nvidia_modeset nvidia_uvm vboxdrv vboxnetadp vboxnetflt vboxpci) diff --git a/.config/modprobed.db b/.config/modprobed.db new file mode 100644 index 0000000..b68d3cf --- /dev/null +++ b/.config/modprobed.db @@ -0,0 +1,194 @@ +ac97_bus +acpi_pad +aesni_intel +af_alg +agpgart +algif_hash +algif_skcipher +asus_wmi +battery +blake2b_generic +bluetooth +bnep +bpf_preload +bridge +br_netfilter +btbcm +btintel +btmtk +btrfs +btrtl +btusb +cdrom +cec +cfg80211 +ch341 +cifs +cifs_arc4 +cifs_md4 +cmac +coretemp +crc16 +crc32c_generic +crc32c_intel +crc32_pclmul +crct10dif_pclmul +cryptd +crypto_simd +crypto_user +dm_mod +dm_multipath +dns_resolver +drm +drm_display_helper +drm_kms_helper +drm_ttm_helper +e1000e +ecc +ecdh_generic +ee1004 +eeepc_wmi +efivarfs +ext4 +fat +fb_ddc +fscache +fuse +gf128mul +ghash_clmulni_intel +hfs +hfsplus +hid_logitech_dj +hid_logitech_hidpp +i2c_algo_bit +i2c_i801 +i2c_smbus +intel_cstate +intel_pmc_bxt +intel_pmc_core +intel_powerclamp +intel_rapl_common +intel_rapl_msr +intel_tcc_cooling +intel_uncore +ip_tables +irqbypass +isofs +iTCO_vendor_support +iTCO_wdt +jbd2 +jfs +joydev +kvm +kvm_intel +ledtrig_audio +libcrc32c +llc +loop +mac_hid +mbcache +mc +mei +mei_hdcp +mei_me +mei_pxp +minix +mousedev +msdos +mxm_wmi +netfs +nf_conntrack +nf_conntrack_netlink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nfnetlink +nf_tables +nft_chain_nat +nft_compat +nft_reject +nft_reject_inet +nilfs2 +nls_utf8 +nvidiafb +nvme +nvme_common +nvme_core +overlay +pcspkr +platform_profile +polyval_clmulni +polyval_generic +raid6_pq +rapl +rfcomm +rfkill +sch_fq_codel +sg +sha512_ssse3 +snd +snd_aloop +snd_compress +snd_hda_codec +snd_hda_codec_generic +snd_hda_codec_hdmi +snd_hda_codec_realtek +snd_hda_core +snd_hda_ext_core +snd_hda_intel +snd_hrtimer +snd_hwdep +snd_intel_dspcfg +snd_intel_sdw_acpi +snd_pcm +snd_pcm_dmaengine +snd_rawmidi +snd_seq +snd_seq_device +snd_seq_dummy +snd_soc_avs +snd_soc_core +snd_soc_hda_codec +snd_timer +snd_ump +snd_usb_audio +snd_usbmidi_lib +soundcore +sparse_keymap +stp +syscopyarea +sysfillrect +sysimgblt +thermal +tpm_crb +tpm_tis +tpm_tis_core +ttm +uas +ufs +uinput +usbhid +usbserial +usb_storage +uvc +uvcvideo +v4l2loopback_dc +vfat +vgastate +video +videobuf2_common +videobuf2_memops +videobuf2_v4l2 +videobuf2_vmalloc +videodev +wmi +wmi_bmof +x86_pkg_temp_thermal +xfs +xhci_pci +xhci_pci_renesas +xor +x_tables +xt_addrtype +xt_conntrack +xt_MASQUERADE diff --git a/.config/nitrogen/bg-saved.cfg b/.config/nitrogen/bg-saved.cfg new file mode 100644 index 0000000..1e362d3 --- /dev/null +++ b/.config/nitrogen/bg-saved.cfg @@ -0,0 +1,4 @@ +[xin_-1] +file=/mnt/files/Pictures/bgs/wallhaven-d65eyl.jpg +mode=5 +bgcolor=#000000 diff --git a/.config/nitrogen/nitrogen.cfg b/.config/nitrogen/nitrogen.cfg new file mode 100644 index 0000000..6b66d9c --- /dev/null +++ b/.config/nitrogen/nitrogen.cfg @@ -0,0 +1,12 @@ +[geometry] +posx=413 +posy=62 +sizex=971 +sizey=795 + +[nitrogen] +view=icon +recurse=true +sort=alpha +icon_caps=true +dirs=/usr/share/backgrounds/;/mnt/files/Pictures/bgs; diff --git a/.config/openbox/autostart b/.config/openbox/autostart new file mode 100644 index 0000000..eb75c12 --- /dev/null +++ b/.config/openbox/autostart @@ -0,0 +1,35 @@ +# restore the last wallpaper applied with nitrogen +nitrogen --restore & + +# start the panel +tint2 & + +# dock +(sleep 2s; plank) & + +# thunar daemon mode +thunar --daemon & + +# automount shit +udiskie -2 & + +# load nvidia settings +nvidia-settings --load-config-only & + +# load color profile +/usr/bin/dispwin -d1 /home/xstefen/asus_vg248qe_nvidia.icm & + +# volume tray +(sleep 2s; volumeicon) & + +# super key menu +ksuperkey -e 'Super_L=Alt_L|F1' & + +# fuck beeps +xset -b & + +# set display timeout, sleep, and poweroff +xset dpms 600 900 1200 & + +# set keyboard repeat rate +xset r rate 350 60 & diff --git a/.config/openbox/environment b/.config/openbox/environment new file mode 100644 index 0000000..1770c85 --- /dev/null +++ b/.config/openbox/environment @@ -0,0 +1,9 @@ +# environment +# vim:ft=sh + +# To set your language for displaying messages and time/date formats, use the following: +# LANG=en_US.UTF8 + +XDG_SESSION_TYPE=x11 +XDG_SESSION_DESKTOP=openbox +XDG_CURRENT_DESKTOP=openbox diff --git a/.config/openbox/menu.xml b/.config/openbox/menu.xml new file mode 100644 index 0000000..9704f0f --- /dev/null +++ b/.config/openbox/menu.xml @@ -0,0 +1,109 @@ + + + + + + + al-terminal + + + + + al-browser + + + + + al-filemanager + + + + + + + scrot -e 'mv $f $$(xdg-user-dir PICTURES) ; feh $$(xdg-user-dir PICTURES)/$f' + + + + + scrot -d 5 -e 'mv $f $$(xdg-user-dir PICTURES) ; feh $$(xdg-user-dir PICTURES)/$f' + + + + + + + + + + + obconf + + + + + kickshaw + + + + + + xdg-open ~/.config/openbox/menu.xml + + + + + xdg-open ~/.config/openbox/rc.xml + + + + + xdg-open ~/.config/openbox/autostart + + + + + + + + + + + + + + + + + nitrogen + + + + + lxappearance + + + + + + pavucontrol + + + + + + + + + i3lock-fancy -p + + + + + rofi_run -l + + + + + diff --git a/.config/openbox/menu.xml.bak b/.config/openbox/menu.xml.bak new file mode 100644 index 0000000..39da04d --- /dev/null +++ b/.config/openbox/menu.xml.bak @@ -0,0 +1,394 @@ + + + + + + + + gnome-calculator + + yes + + + + + + gnome-character-map + + yes + + + + + + ark + + yes + + + + + + + + + gvim + + yes + GVim + + + + + + emacs + + yes + Emacs + + + + + + gedit + + yes + + + + + + kate + + yes + + + + + + kwrite + + yes + + + + + + + + + urxvt + + + + + gnome-terminal + + yes + + + + + + xfce4-terminal + + yes + + + + + + konsole + + yes + + + + + xterm + + + + + + + firefox + + yes + Firefox + + + + + + opera + + yes + Opera + + + + + + konqueror + + yes + + + + + + epiphany + + yes + + + + + + pidgin + + yes + + + + + + kopete + + yes + + + + + + xchat + + yes + + + + + + + + + ooffice -base + + + + + ooffice -calc + + + + + ooffice -draw + + + + + ooffice -impress + + + + + ooffice -math + + + + + ooffice-printeradmin + + + + + ooffice -writer + + + + + + + + amarok + + yes + + + + + + rhythmbox + + yes + + + + + + k3b + + yes + + + + + + gmplayer + + yes + MPlayer + + + + + + totem + + yes + + + + + + + + + nautilus --no-desktop --browser + + yes + + + + + + Thunar + + yes + + + + + + kfmclient openURL ~ + + yes + + + + + + rox + + yes + ROX-Filer + + + + + + pcmanfm + + yes + + + + + + + + + gimp + + yes + + + + + + gwenview + + yes + + + + + + dia + + yes + + + + + + inkscape + + yes + + + + + + + + + obconf + yes + + + + + gnome-control-center + yes + + + + + kcontrol + yes + + + + + xfce-setting-show + yes + + + + + xdg-open http://localhost:631/ + + no + cups + + + + + + + + + + + + + + + + + + + + + + + + + yes + + + + + diff --git a/.config/openbox/menu.xml.bak.bak b/.config/openbox/menu.xml.bak.bak new file mode 100755 index 0000000..39da04d --- /dev/null +++ b/.config/openbox/menu.xml.bak.bak @@ -0,0 +1,394 @@ + + + + + + + + gnome-calculator + + yes + + + + + + gnome-character-map + + yes + + + + + + ark + + yes + + + + + + + + + gvim + + yes + GVim + + + + + + emacs + + yes + Emacs + + + + + + gedit + + yes + + + + + + kate + + yes + + + + + + kwrite + + yes + + + + + + + + + urxvt + + + + + gnome-terminal + + yes + + + + + + xfce4-terminal + + yes + + + + + + konsole + + yes + + + + + xterm + + + + + + + firefox + + yes + Firefox + + + + + + opera + + yes + Opera + + + + + + konqueror + + yes + + + + + + epiphany + + yes + + + + + + pidgin + + yes + + + + + + kopete + + yes + + + + + + xchat + + yes + + + + + + + + + ooffice -base + + + + + ooffice -calc + + + + + ooffice -draw + + + + + ooffice -impress + + + + + ooffice -math + + + + + ooffice-printeradmin + + + + + ooffice -writer + + + + + + + + amarok + + yes + + + + + + rhythmbox + + yes + + + + + + k3b + + yes + + + + + + gmplayer + + yes + MPlayer + + + + + + totem + + yes + + + + + + + + + nautilus --no-desktop --browser + + yes + + + + + + Thunar + + yes + + + + + + kfmclient openURL ~ + + yes + + + + + + rox + + yes + ROX-Filer + + + + + + pcmanfm + + yes + + + + + + + + + gimp + + yes + + + + + + gwenview + + yes + + + + + + dia + + yes + + + + + + inkscape + + yes + + + + + + + + + obconf + yes + + + + + gnome-control-center + yes + + + + + kcontrol + yes + + + + + xfce-setting-show + yes + + + + + xdg-open http://localhost:631/ + + no + cups + + + + + + + + + + + + + + + + + + + + + + + + + yes + + + + + diff --git a/.config/openbox/rc.xml b/.config/openbox/rc.xml new file mode 100644 index 0000000..73c7156 --- /dev/null +++ b/.config/openbox/rc.xml @@ -0,0 +1,789 @@ + + + + 10 + 20 + + + yes + no + yes + no + 200 + no + + + Smart +
yes
+ Mouse + Mouse +
+ + Plata-Noir + NLIMC + yes + no + + sans + 9 + Normal + Normal + + + sans + 9 + Normal + Italic + + + sans + 9 + Normal + Normal + + + Sans + 9 + Normal + Normal + + + Sans + 9 + Normal + Normal + + + Sans + 9 + Normal + Normal + + + + 1 + 0 + + 1 + 2 + 3 + 4 + + 800 + + + yes + Never + Center + + 10 + 10 + + + + 0 + 0 + 0 + 0 + + + Floating + 0 + 0 + no + Above + Vertical + no + 300 + 300 + Middle + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + yes + yes + + + + + + + + + yes + + + current + + + + + + + + + + + 50% + + + + + + + + 50% + + + + + + + + + + + + + + + + + + + + + + + pamixer -i 2 + + + + + pamixer -d 2 + + + + + pamixer -t + + + + + playerctl stop + + + + + playerctl play-pause + + + + + playerctl previous + + + + + playerctl next + + + + + xbacklight +10 + + + + + xbacklight -10 + + + + + ss_full_save + + + + + ss_active_save + + + + + ss_sel_clip + + + + + al-filemanager + + + + + al-terminal + + + + + jgmenu_run + + + + + al-terminal + + + + + al-terminal + + + + + al-browser + + + + + pavucontrol + + + + + rofi_run -r + + + + + rofi_run -r + + + + + rofi_run -l + + + + + rofi_run -l + + + + + + + + + + + + + + xkill + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + root-menu + + + + + client-menu + + + + + rtile --split-up + + + + + rtile --split-down + + + + + rtile --split-left + + + + + rtile --split-right + + + + + rtile --swap + + + + + rtile --next-monitor + + + + + rtile --grow-up + + + + + rtile --grow-down + + + + + rtile --grow-left + + + + + rtile --grow-right + + + + + rtile --cycle + + + + + rtile --cycle-monitors + + + + + rtile t + + + + + rtile + + + + + rtile b + + + + + rtile tl + + + + + rtile l + + + + + rtile bl + + + + + rtile tr + + + + + rtile r + + + + + rtile br + + + + + rtile --binary + + + + + + + 50% + + + + + + + + 50% + + + + + + + + + + 80% + 80% + + + + + + + + 0 + 0 + 50% + + + + + + + -0 + 0 + 50% + + + + + 4 + 400 + 600 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + yes + + + + center + current + + + + + + + + + + + + + + no + + + + + + + + + + + yes + + + + + + + + + + + client-menu + + + + + + + + + + + + + + client-menu + + + + + + + + + + + + top + + + + + + + + + + + left + + + + + + + + + + + right + + + + + + + + + + + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horizontal + + + + + + + + + + + + + + + previous + + + + + next + + + + + + + client-list-combined-menu + + + + + client-list-combined-menu + + + + + root-menu + + + + + + menu.xml + 400 + no + 100 + 200 + no + yes + + + + + 1 + + yes + + +
+ diff --git a/.config/picom.conf b/.config/picom.conf new file mode 100644 index 0000000..6e27fea --- /dev/null +++ b/.config/picom.conf @@ -0,0 +1,347 @@ +################################# +# Corners # +################################# +#prev: 15 +corner-radius = 0; +rounded-corners-exclude = [ +# "window_type = 'toolbar'", + "class_g = 'eww-bar'", + "class_g = 'eww-powermenu'", + "class_g = 'Tint2'", + "name = 'Notification area'", + "class_g = 'Polybar'", + "class_g = 'Rofi'", + "class_g = 'Eww'", + "class_g = 'conky'", + "window_type = 'dock'", +]; +round-borders = 1; +round-borders-exclude = [ +]; + +# Specify a list of border width rules, in the format `PIXELS:PATTERN`, +# Note we don't make any guarantee about possible conflicts with the +# border_width set by the window manager. +# +# example: +# round-borders-rule = [ "2:class_g = 'URxvt'" ]; +# +round-borders-rule = [ + "3:class_g = 'XTerm'", + "3:class_g = 'URxvt'", + #"10:class_g = 'Alacritty'", + "15:class_g = 'Signal'" +]; + +################################# +# Shadows # +################################# + + +# Enabled client-side shadows on windows. Note desktop windows +# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, +# unless explicitly requested using the wintypes option. +# +#shadow = false +shadow = true; + +# The blur radius for shadows, in pixels. (defaults to 12) +# shadow-radius = 12 +shadow-radius = 20; + +# The opacity of shadows. (0.0 - 1.0, defaults to 0.75) +shadow-opacity = 0.4 + +# The left offset for shadows, in pixels. (defaults to -15) +# shadow-offset-x = -15 +shadow-offset-x = -20; + +# The top offset for shadows, in pixels. (defaults to -15) +# shadow-offset-y = -15 +shadow-offset-y = -20; + +# Avoid drawing shadows on dock/panel windows. This option is deprecated, +# you should use the *wintypes* option in your config file instead. +# +no-dock-shadow = false + +# Don't draw shadows on drag-and-drop windows. This option is deprecated, +# you should use the *wintypes* option in your config file instead. +# +# no-dnd-shadow = false + +# Red color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-red = 0 + +# Green color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-green = 0 + +# Blue color value of shadow (0.0 - 1.0, defaults to 0). +# shadow-blue = 0 + +# Do not paint shadows on shaped windows. Note shaped windows +# here means windows setting its shape through X Shape extension. +# Those using ARGB background is beyond our control. +# Deprecated, use +# shadow-exclude = 'bounding_shaped' +# or +# shadow-exclude = 'bounding_shaped && !rounded_corners' +# instead. +# +# shadow-ignore-shaped = '' + +# Specify a list of conditions of windows that should have no shadow. +# +# examples: +# shadow-exclude = "n:e:Notification"; +# +# shadow-exclude = [] +shadow-exclude = [ + "name = 'Notification'", + "class_g = 'Conky'", + "class_g ?= 'Notify-osd'", + "class_g = 'Cairo-clock'", + "class_g = 'slop'", + "class_g = 'Florence'", + "_GTK_FRAME_EXTENTS@:c", + "window_type = 'dock'", +]; + +# Specify a X geometry that describes the region in which shadow should not +# be painted in, such as a dock window region. Use +# shadow-exclude-reg = "x10+0+0" +# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on. +# +# shadow-exclude-reg = "" + +# Crop shadow of a window fully on a particular Xinerama screen to the screen. +# xinerama-shadow-crop = false + +################################# +# General Settings # +################################# + +# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. +# daemon = false + +# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`. +# `xrender` is the default one. +# +experimental-backends = false; +backend = "glx"; +#backend = "xrender"; + + +# Enable/disable VSync. +# vsync = false +vsync = true; + +# Enable remote control via D-Bus. See the *D-BUS API* section below for more details. +# dbus = false + +# Try to detect WM windows (a non-override-redirect window with no +# child that has 'WM_STATE') and mark them as active. +# +# mark-wmwin-focused = false +mark-wmwin-focused = true; + +# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused. +# mark-ovredir-focused = false +mark-ovredir-focused = true; + +# Try to detect windows with rounded corners and don't consider them +# shaped windows. The accuracy is not very high, unfortunately. +# +detect-rounded-corners = false +# detect-rounded-corners = true + +# Detect '_NET_WM_OPACITY' on client windows, useful for window managers +# not passing '_NET_WM_OPACITY' of client windows to frame windows. +# +# detect-client-opacity = false +detect-client-opacity = true; + +# Specify refresh rate of the screen. If not specified or 0, picom will +# try detecting this with X RandR extension. +# +# refresh-rate = 60 +refresh-rate = 0 + +# Limit picom to repaint at most once every 1 / 'refresh_rate' second to +# boost performance. This should not be used with +# vsync drm/opengl/opengl-oml +# as they essentially does sw-opti's job already, +# unless you wish to specify a lower refresh rate than the actual value. +# +# sw-opti = + +# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, +# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, +# provided that the WM supports it. +# +# use-ewmh-active-win = false + +# Unredirect all windows if a full-screen opaque window is detected, +# to maximize performance for full-screen windows. Known to cause flickering +# when redirecting/unredirecting windows. paint-on-overlay may make the flickering less obvious. +# +# unredir-if-possible = false + +# Delay before unredirecting the window, in milliseconds. Defaults to 0. +# unredir-if-possible-delay = 0 + +# Conditions of windows that shouldn't be considered full-screen for unredirecting screen. +# unredir-if-possible-exclude = [] + +# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows +# in the same group focused at the same time. +# +# detect-transient = false +detect-transient = true + +# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same +# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if +# detect-transient is enabled, too. +# +# detect-client-leader = false +detect-client-leader = true + +# Resize damaged region by a specific number of pixels. +# A positive value enlarges it while a negative one shrinks it. +# If the value is positive, those additional pixels will not be actually painted +# to screen, only used in blur calculation, and such. (Due to technical limitations, +# with use-damage, those pixels will still be incorrectly painted to screen.) +# Primarily used to fix the line corruption issues of blur, +# in which case you should use the blur radius value here +# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, +# with a 5x5 one you use `--resize-damage 2`, and so on). +# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. +# +# resize-damage = 1 + +# Specify a list of conditions of windows that should be painted with inverted color. +# Resource-hogging, and is not well tested. +# +# invert-color-include = [] + +# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. +# Might cause incorrect opacity when rendering transparent content (but never +# practically happened) and may not work with blur-background. +# My tests show a 15% performance boost. Recommended. +# +# glx-no-stencil = false + +# GLX backend: Avoid rebinding pixmap on window damage. +# Probably could improve performance on rapid window content changes, +# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.). +# Recommended if it works. +# +# glx-no-rebind-pixmap = false + +# Disable the use of damage information. +# This cause the whole screen to be redrawn everytime, instead of the part of the screen +# has actually changed. Potentially degrades the performance, but might fix some artifacts. +# The opposing option is use-damage +# +# no-use-damage = false +use-damage = true + +# Use X Sync fence to sync clients' draw calls, to make sure all draw +# calls are finished before picom starts drawing. Needed on nvidia-drivers +# with GLX backend for some users. +# +# xrender-sync-fence = false + +# GLX backend: Use specified GLSL fragment shader for rendering window contents. +# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` +# in the source tree for examples. +# +# glx-fshader-win = '' + +# Force all windows to be painted with blending. Useful if you +# have a glx-fshader-win that could turn opaque pixels transparent. +# +# force-win-blend = false + +# Do not use EWMH to detect fullscreen windows. +# Reverts to checking if a window is fullscreen based only on its size and coordinates. +# +# no-ewmh-fullscreen = false + +# Dimming bright windows so their brightness doesn't exceed this set value. +# Brightness of a window is estimated by averaging all pixels in the window, +# so this could comes with a performance hit. +# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) +# +# max-brightness = 1.0 + +# Make transparent windows clip other windows like non-transparent windows do, +# instead of blending on top of them. +# +# transparent-clipping = false + +# Set the log level. Possible values are: +# "trace", "debug", "info", "warn", "error" +# in increasing level of importance. Case doesn't matter. +# If using the "TRACE" log level, it's better to log into a file +# using *--log-file*, since it can generate a huge stream of logs. +# +# log-level = "debug" +log-level = "info"; + +# Set the log file. +# If *--log-file* is never specified, logs will be written to stderr. +# Otherwise, logs will to written to the given file, though some of the early +# logs might still be written to the stderr. +# When setting this option from the config file, it is recommended to use an absolute path. +# +# log-file = '/path/to/your/log/file' + +# Show all X errors (for debugging) +# show-all-xerrors = false + +# Write process ID to a file. +# write-pid-path = '/path/to/your/log/file' + +# Window type settings +# +# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: +# "unknown", "desktop", "dock", "toolbar", "menu", "utility", +# "splash", "dialog", "normal", "dropdown_menu", "popup_menu", +# "tooltip", "notification", "combo", and "dnd". +# +# Following per window-type options are available: :: +# +# fade, shadow::: +# Controls window-type-specific shadow and fade settings. +# +# opacity::: +# Controls default opacity of the window type. +# +# focus::: +# Controls whether the window of this type is to be always considered focused. +# (By default, all window types except "normal" and "dialog" has this on.) +# +# full-shadow::: +# Controls whether shadow is drawn under the parts of the window that you +# normally won't be able to see. Useful when the window has parts of it +# transparent, and you want shadows in those areas. +# +# redir-ignore::: +# Controls whether this type of windows should cause screen to become +# redirected again after been unredirected. If you have unredir-if-possible +# set, and doesn't want certain window to cause unnecessary screen redirection, +# you can set this to `true`. +# +wintypes: +{ + normal = { full-shadow = true; }; + menu = { full-shadow = true; }; + tooltip = { fade = false; shadow = true; focus = true;}; + dock = { shadow = true; }; + dnd = { shadow = true; }; + popup_menu = { full-shadow = true; }; + utility = { full-shadow = true; }; + toolbar = { full-shadow = true; }; + notification = { opacity = 0; } +}; diff --git a/.config/plank/dock1/launchers/betterbird.dockitem b/.config/plank/dock1/launchers/betterbird.dockitem new file mode 100644 index 0000000..b89855f --- /dev/null +++ b/.config/plank/dock1/launchers/betterbird.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/betterbird.desktop diff --git a/.config/plank/dock1/launchers/code.dockitem b/.config/plank/dock1/launchers/code.dockitem new file mode 100644 index 0000000..270216b --- /dev/null +++ b/.config/plank/dock1/launchers/code.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/code.desktop diff --git a/.config/plank/dock1/launchers/google-chrome-beta.dockitem b/.config/plank/dock1/launchers/google-chrome-beta.dockitem new file mode 100644 index 0000000..44cf0a0 --- /dev/null +++ b/.config/plank/dock1/launchers/google-chrome-beta.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/google-chrome-beta.desktop diff --git a/.config/plank/dock1/launchers/kitty.dockitem b/.config/plank/dock1/launchers/kitty.dockitem new file mode 100644 index 0000000..d430dff --- /dev/null +++ b/.config/plank/dock1/launchers/kitty.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/kitty.desktop diff --git a/.config/plank/dock1/launchers/kotatogramdesktop.dockitem b/.config/plank/dock1/launchers/kotatogramdesktop.dockitem new file mode 100644 index 0000000..fb27414 --- /dev/null +++ b/.config/plank/dock1/launchers/kotatogramdesktop.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/kotatogramdesktop.desktop diff --git a/.config/plank/dock1/launchers/thunar.dockitem b/.config/plank/dock1/launchers/thunar.dockitem new file mode 100644 index 0000000..1bfd173 --- /dev/null +++ b/.config/plank/dock1/launchers/thunar.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/thunar.desktop diff --git a/.config/plank/dock1/launchers/tidal-hifi.dockitem b/.config/plank/dock1/launchers/tidal-hifi.dockitem new file mode 100644 index 0000000..4773fd5 --- /dev/null +++ b/.config/plank/dock1/launchers/tidal-hifi.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/tidal-hifi.desktop diff --git a/.config/qt5ct/qt5ct.conf b/.config/qt5ct/qt5ct.conf new file mode 100644 index 0000000..2fafc63 --- /dev/null +++ b/.config/qt5ct/qt5ct.conf @@ -0,0 +1,32 @@ +[Appearance] +color_scheme_path=/usr/share/qt5ct/colors/darker.conf +custom_palette=false +icon_theme=Papirus-Dark +standard_dialogs=gtk2 +style=gtk2 + +[Fonts] +fixed="Iosevka,9,-1,5,57,0,0,0,0,0" +general="Iosevka,9,-1,5,57,0,0,0,0,0" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=/usr/share/qt5ct/qss/traynotification-simple.qss +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=6 + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3!\0\0\0\xf9\0\0\x6\x3\0\0\x3\xdc\0\0\x3#\0\0\x1\x15\0\0\x6\x1\0\0\x3\xda\0\0\0\0\0\0\0\0\a\x80\0\0\x3#\0\0\x1\x15\0\0\x6\x1\0\0\x3\xda) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/.config/rofi/applets/bin/appasroot.sh b/.config/rofi/applets/bin/appasroot.sh new file mode 100755 index 0000000..f0e6944 --- /dev/null +++ b/.config/rofi/applets/bin/appasroot.sh @@ -0,0 +1,102 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Applets : Run Applications as Root + +# Import Current Theme +source "$HOME"/.config/rofi/applets/shared/theme.bash +theme="$type/$style" + +# Theme Elements +prompt='Applications' +mesg='Run Applications as Root' + +if [[ "$theme" == *'type-1'* ]]; then + list_col='1' + list_row='5' + win_width='400px' +elif [[ "$theme" == *'type-3'* ]]; then + list_col='1' + list_row='5' + win_width='120px' +elif [[ "$theme" == *'type-5'* ]]; then + list_col='1' + list_row='5' + win_width='520px' +elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then + list_col='5' + list_row='1' + win_width='670px' +fi + +# Options +layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2` +if [[ "$layout" == 'NO' ]]; then + option_1=" Alacritty" + option_2=" Thunar" + option_3=" Geany" + option_4=" Ranger" + option_5=" Vim" +else + option_1="" + option_2="" + option_3="" + option_4="" + option_5="" +fi + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "window {width: $win_width;}" \ + -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str 'textbox-prompt-colon {str: "";}' \ + -dmenu \ + -p "$prompt" \ + -mesg "$mesg" \ + -markup-rows \ + -theme ${theme} +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5" | rofi_cmd +} + +# Execute Command +run_cmd() { + polkit_cmd="pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY" + if [[ "$1" == '--opt1' ]]; then + ${polkit_cmd} alacritty + elif [[ "$1" == '--opt2' ]]; then + ${polkit_cmd} dbus-run-session thunar + elif [[ "$1" == '--opt3' ]]; then + ${polkit_cmd} geany + elif [[ "$1" == '--opt4' ]]; then + ${polkit_cmd} alacritty -e ranger + elif [[ "$1" == '--opt5' ]]; then + ${polkit_cmd} alacritty -e vim + fi +} + +# Actions +chosen="$(run_rofi)" +case ${chosen} in + $option_1) + run_cmd --opt1 + ;; + $option_2) + run_cmd --opt2 + ;; + $option_3) + run_cmd --opt3 + ;; + $option_4) + run_cmd --opt4 + ;; + $option_5) + run_cmd --opt5 + ;; +esac + diff --git a/.config/rofi/applets/bin/apps.sh b/.config/rofi/applets/bin/apps.sh new file mode 100755 index 0000000..01d1e4d --- /dev/null +++ b/.config/rofi/applets/bin/apps.sh @@ -0,0 +1,104 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Applets : Favorite Applications + +# Import Current Theme +source "$HOME"/.config/rofi/applets/shared/theme.bash +theme="$type/$style" + +# Theme Elements +prompt='Applications' +mesg="Installed Packages : `pacman -Q | wc -l` (pacman)" + +if [[ ( "$theme" == *'type-1'* ) || ( "$theme" == *'type-3'* ) || ( "$theme" == *'type-5'* ) ]]; then + list_col='1' + list_row='6' +elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then + list_col='6' + list_row='1' +fi + +# CMDs (add your apps here) +term_cmd='alacritty' +file_cmd='thunar' +text_cmd='geany' +web_cmd='firefox' +music_cmd='alacritty -e ncmpcpp' +setting_cmd='xfce4-settings-manager' + +# Options +layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2` +if [[ "$layout" == 'NO' ]]; then + option_1=" Terminal ($term_cmd)" + option_2=" Files ($file_cmd)" + option_3=" Editor ($text_cmd)" + option_4=" Browser ($web_cmd)" + option_5=" Music ($music_cmd)" + option_6=" Settings ($setting_cmd)" +else + option_1="" + option_2="" + option_3="" + option_4="" + option_5="" + option_6="" +fi + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str 'textbox-prompt-colon {str: "";}' \ + -dmenu \ + -p "$prompt" \ + -mesg "$mesg" \ + -markup-rows \ + -theme ${theme} +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd +} + +# Execute Command +run_cmd() { + if [[ "$1" == '--opt1' ]]; then + ${term_cmd} + elif [[ "$1" == '--opt2' ]]; then + ${file_cmd} + elif [[ "$1" == '--opt3' ]]; then + ${text_cmd} + elif [[ "$1" == '--opt4' ]]; then + ${web_cmd} + elif [[ "$1" == '--opt5' ]]; then + ${music_cmd} + elif [[ "$1" == '--opt6' ]]; then + ${setting_cmd} + fi +} + +# Actions +chosen="$(run_rofi)" +case ${chosen} in + $option_1) + run_cmd --opt1 + ;; + $option_2) + run_cmd --opt2 + ;; + $option_3) + run_cmd --opt3 + ;; + $option_4) + run_cmd --opt4 + ;; + $option_5) + run_cmd --opt5 + ;; + $option_6) + run_cmd --opt6 + ;; +esac diff --git a/.config/rofi/applets/bin/battery.sh b/.config/rofi/applets/bin/battery.sh new file mode 100755 index 0000000..ef0dba6 --- /dev/null +++ b/.config/rofi/applets/bin/battery.sh @@ -0,0 +1,134 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Applets : Battery + +# Import Current Theme +source "$HOME"/.config/rofi/applets/shared/theme.bash +theme="$type/$style" + +# Battery Info +battery="`acpi -b | cut -d',' -f1 | cut -d':' -f1`" +status="`acpi -b | cut -d',' -f1 | cut -d':' -f2 | tr -d ' '`" +percentage="`acpi -b | cut -d',' -f2 | tr -d ' ',\%`" +time="`acpi -b | cut -d',' -f3`" + +if [[ -z "$time" ]]; then + time=' Fully Charged' +fi + +# Theme Elements +prompt="$status" +mesg="${battery}: ${percentage}%,${time}" + +if [[ "$theme" == *'type-1'* ]]; then + list_col='1' + list_row='4' + win_width='400px' +elif [[ "$theme" == *'type-3'* ]]; then + list_col='1' + list_row='4' + win_width='120px' +elif [[ "$theme" == *'type-5'* ]]; then + list_col='1' + list_row='4' + win_width='500px' +elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then + list_col='4' + list_row='1' + win_width='550px' +fi + +# Charging Status +active="" +urgent="" +if [[ $status = *"Charging"* ]]; then + active="-a 1" + ICON_CHRG="" +elif [[ $status = *"Full"* ]]; then + active="-u 1" + ICON_CHRG="" +else + urgent="-u 1" + ICON_CHRG="" +fi + +# Discharging +if [[ $percentage -ge 5 ]] && [[ $percentage -le 19 ]]; then + ICON_DISCHRG="" +elif [[ $percentage -ge 20 ]] && [[ $percentage -le 39 ]]; then + ICON_DISCHRG="" +elif [[ $percentage -ge 40 ]] && [[ $percentage -le 59 ]]; then + ICON_DISCHRG="" +elif [[ $percentage -ge 60 ]] && [[ $percentage -le 79 ]]; then + ICON_DISCHRG="" +elif [[ $percentage -ge 80 ]] && [[ $percentage -le 100 ]]; then + ICON_DISCHRG="" +fi + +# Options +layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2` +if [[ "$layout" == 'NO' ]]; then + option_1=" Remaining ${percentage}%" + option_2=" $status" + option_3=" Power Manager" + option_4=" Diagnose" +else + option_1="$ICON_DISCHRG" + option_2="$ICON_CHRG" + option_3="" + option_4="" +fi + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "window {width: $win_width;}" \ + -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str "textbox-prompt-colon {str: \"$ICON_DISCHRG\";}" \ + -dmenu \ + -p "$prompt" \ + -mesg "$mesg" \ + ${active} ${urgent} \ + -markup-rows \ + -theme ${theme} +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$option_1\n$option_2\n$option_3\n$option_4" | rofi_cmd +} + +# Execute Command +run_cmd() { + polkit_cmd="pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY" + if [[ "$1" == '--opt1' ]]; then + notify-send -u low " Remaining : ${percentage}%" + elif [[ "$1" == '--opt2' ]]; then + notify-send -u low "$ICON_CHRG Status : $status" + elif [[ "$1" == '--opt3' ]]; then + xfce4-power-manager-settings + elif [[ "$1" == '--opt4' ]]; then + ${polkit_cmd} alacritty -e powertop + fi +} + +# Actions +chosen="$(run_rofi)" +case ${chosen} in + $option_1) + run_cmd --opt1 + ;; + $option_2) + run_cmd --opt2 + ;; + $option_3) + run_cmd --opt3 + ;; + $option_4) + run_cmd --opt4 + ;; +esac + + diff --git a/.config/rofi/applets/bin/brightness.sh b/.config/rofi/applets/bin/brightness.sh new file mode 100755 index 0000000..2c90a12 --- /dev/null +++ b/.config/rofi/applets/bin/brightness.sh @@ -0,0 +1,107 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Applets : Brightness + +# Import Current Theme +source "$HOME"/.config/rofi/applets/shared/theme.bash +theme="$type/$style" + +# Brightness Info +backlight="$(printf "%.0f\n" `light -G`)" +card="`light -L | grep 'backlight' | head -n1 | cut -d'/' -f3`" + +if [[ $backlight -ge 0 ]] && [[ $backlight -le 29 ]]; then + level="Low" +elif [[ $backlight -ge 30 ]] && [[ $backlight -le 49 ]]; then + level="Optimal" +elif [[ $backlight -ge 50 ]] && [[ $backlight -le 69 ]]; then + level="High" +elif [[ $backlight -ge 70 ]] && [[ $backlight -le 100 ]]; then + level="Peak" +fi + +# Theme Elements +prompt="${backlight}%" +mesg="Device: ${card}, Level: $level" + +if [[ "$theme" == *'type-1'* ]]; then + list_col='1' + list_row='4' + win_width='400px' +elif [[ "$theme" == *'type-3'* ]]; then + list_col='1' + list_row='4' + win_width='120px' +elif [[ "$theme" == *'type-5'* ]]; then + list_col='1' + list_row='4' + win_width='425px' +elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then + list_col='4' + list_row='1' + win_width='550px' +fi + +# Options +layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2` +if [[ "$layout" == 'NO' ]]; then + option_1=" Increase" + option_2=" Optimal" + option_3=" Decrease" + option_4=" Settings" +else + option_1="" + option_2="" + option_3="" + option_4="" +fi + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "window {width: $win_width;}" \ + -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str 'textbox-prompt-colon {str: "";}' \ + -dmenu \ + -p "$prompt" \ + -mesg "$mesg" \ + -markup-rows \ + -theme ${theme} +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$option_1\n$option_2\n$option_3\n$option_4" | rofi_cmd +} + +# Execute Command +run_cmd() { + if [[ "$1" == '--opt1' ]]; then + light -A 5 + elif [[ "$1" == '--opt2' ]]; then + light -S 25 + elif [[ "$1" == '--opt3' ]]; then + light -U 5 + elif [[ "$1" == '--opt4' ]]; then + xfce4-power-manager-settings + fi +} + +# Actions +chosen="$(run_rofi)" +case ${chosen} in + $option_1) + run_cmd --opt1 + ;; + $option_2) + run_cmd --opt2 + ;; + $option_3) + run_cmd --opt3 + ;; + $option_4) + run_cmd --opt4 + ;; +esac diff --git a/.config/rofi/applets/bin/mpd.sh b/.config/rofi/applets/bin/mpd.sh new file mode 100755 index 0000000..ce6a9e9 --- /dev/null +++ b/.config/rofi/applets/bin/mpd.sh @@ -0,0 +1,131 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Applets : MPD (music) + +# Import Current Theme +source "$HOME"/.config/rofi/applets/shared/theme.bash +theme="$type/$style" + +# Theme Elements +status="`mpc status`" +if [[ -z "$status" ]]; then + prompt='Offline' + mesg="MPD is Offline" +else + prompt="`mpc -f "%artist%" current`" + mesg="`mpc -f "%title%" current` :: `mpc status | grep "#" | awk '{print $3}'`" +fi + +if [[ ( "$theme" == *'type-1'* ) || ( "$theme" == *'type-3'* ) || ( "$theme" == *'type-5'* ) ]]; then + list_col='1' + list_row='6' +elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then + list_col='6' + list_row='1' +fi + +# Options +layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2` +if [[ "$layout" == 'NO' ]]; then + if [[ ${status} == *"[playing]"* ]]; then + option_1=" Pause" + else + option_1=" Play" + fi + option_2=" Stop" + option_3=" Previous" + option_4=" Next" + option_5=" Repeat" + option_6=" Random" +else + if [[ ${status} == *"[playing]"* ]]; then + option_1="" + else + option_1="" + fi + option_2="" + option_3="" + option_4="" + option_5="" + option_6="" +fi + +# Toggle Actions +active='' +urgent='' +# Repeat +if [[ ${status} == *"repeat: on"* ]]; then + active="-a 4" +elif [[ ${status} == *"repeat: off"* ]]; then + urgent="-u 4" +else + option_5=" Parsing Error" +fi +# Random +if [[ ${status} == *"random: on"* ]]; then + [ -n "$active" ] && active+=",5" || active="-a 5" +elif [[ ${status} == *"random: off"* ]]; then + [ -n "$urgent" ] && urgent+=",5" || urgent="-u 5" +else + option_6=" Parsing Error" +fi + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str 'textbox-prompt-colon {str: "";}' \ + -dmenu \ + -p "$prompt" \ + -mesg "$mesg" \ + ${active} ${urgent} \ + -markup-rows \ + -theme ${theme} +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd +} + +# Execute Command +run_cmd() { + if [[ "$1" == '--opt1' ]]; then + mpc -q toggle && notify-send -u low -t 1000 " `mpc current`" + elif [[ "$1" == '--opt2' ]]; then + mpc -q stop + elif [[ "$1" == '--opt3' ]]; then + mpc -q prev && notify-send -u low -t 1000 " `mpc current`" + elif [[ "$1" == '--opt4' ]]; then + mpc -q next && notify-send -u low -t 1000 " `mpc current`" + elif [[ "$1" == '--opt5' ]]; then + mpc -q repeat + elif [[ "$1" == '--opt6' ]]; then + mpc -q random + fi +} + +# Actions +chosen="$(run_rofi)" +case ${chosen} in + $option_1) + run_cmd --opt1 + ;; + $option_2) + run_cmd --opt2 + ;; + $option_3) + run_cmd --opt3 + ;; + $option_4) + run_cmd --opt4 + ;; + $option_5) + run_cmd --opt5 + ;; + $option_6) + run_cmd --opt6 + ;; +esac diff --git a/.config/rofi/applets/bin/powermenu.sh b/.config/rofi/applets/bin/powermenu.sh new file mode 100755 index 0000000..8ed9106 --- /dev/null +++ b/.config/rofi/applets/bin/powermenu.sh @@ -0,0 +1,129 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Applets : Power Menu + +# Import Current Theme +source "$HOME"/.config/rofi/applets/shared/theme.bash +theme="$type/$style" + +# Theme Elements +prompt="`hostname`" +mesg="Uptime : `uptime -p | sed -e 's/up //g'`" + +if [[ ( "$theme" == *'type-1'* ) || ( "$theme" == *'type-3'* ) || ( "$theme" == *'type-5'* ) ]]; then + list_col='1' + list_row='6' +elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then + list_col='6' + list_row='1' +fi + +# Options +layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2` +if [[ "$layout" == 'NO' ]]; then + option_1=" Lock" + option_2=" Logout" + option_3=" Suspend" + option_4=" Hibernate" + option_5=" Reboot" + option_6=" Shutdown" + yes=' Yes' + no=' No' +else + option_1="" + option_2="" + option_3="" + option_4="" + option_5="" + option_6="" + yes='' + no='' +fi + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str 'textbox-prompt-colon {str: "";}' \ + -dmenu \ + -p "$prompt" \ + -mesg "$mesg" \ + -markup-rows \ + -theme ${theme} +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd +} + +# Confirmation CMD +confirm_cmd() { + rofi -theme-str 'window {location: center; anchor: center; fullscreen: false; width: 350px;}' \ + -theme-str 'mainbox {orientation: vertical; children: [ "message", "listview" ];}' \ + -theme-str 'listview {columns: 2; lines: 1;}' \ + -theme-str 'element-text {horizontal-align: 0.5;}' \ + -theme-str 'textbox {horizontal-align: 0.5;}' \ + -dmenu \ + -p 'Confirmation' \ + -mesg 'Are you Sure?' \ + -theme ${theme} +} + +# Ask for confirmation +confirm_exit() { + echo -e "$yes\n$no" | confirm_cmd +} + +# Confirm and execute +confirm_run () { + selected="$(confirm_exit)" + if [[ "$selected" == "$yes" ]]; then + ${1} && ${2} && ${3} + else + exit + fi +} + +# Execute Command +run_cmd() { + if [[ "$1" == '--opt1' ]]; then + betterlockscreen -l + elif [[ "$1" == '--opt2' ]]; then + confirm_run 'kill -9 -1' + elif [[ "$1" == '--opt3' ]]; then + confirm_run 'mpc -q pause' 'amixer set Master mute' 'systemctl suspend' + elif [[ "$1" == '--opt4' ]]; then + confirm_run 'systemctl hibernate' + elif [[ "$1" == '--opt5' ]]; then + confirm_run 'systemctl reboot' + elif [[ "$1" == '--opt6' ]]; then + confirm_run 'systemctl poweroff' + fi +} + +# Actions +chosen="$(run_rofi)" +case ${chosen} in + $option_1) + run_cmd --opt1 + ;; + $option_2) + run_cmd --opt2 + ;; + $option_3) + run_cmd --opt3 + ;; + $option_4) + run_cmd --opt4 + ;; + $option_5) + run_cmd --opt5 + ;; + $option_6) + run_cmd --opt6 + ;; +esac + diff --git a/.config/rofi/applets/bin/quicklinks.sh b/.config/rofi/applets/bin/quicklinks.sh new file mode 100755 index 0000000..11a38a8 --- /dev/null +++ b/.config/rofi/applets/bin/quicklinks.sh @@ -0,0 +1,103 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Applets : Quick Links + +# Import Current Theme +source "$HOME"/.config/rofi/applets/shared/theme.bash +theme="$type/$style" + +# Theme Elements +prompt='Quick Links' +mesg="Using '$BROWSER' as web browser" + +if [[ ( "$theme" == *'type-1'* ) || ( "$theme" == *'type-3'* ) || ( "$theme" == *'type-5'* ) ]]; then + list_col='1' + list_row='6' +elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then + list_col='6' + list_row='1' +fi + +if [[ ( "$theme" == *'type-1'* ) || ( "$theme" == *'type-5'* ) ]]; then + efonts="JetBrains Mono Nerd Font 10" +else + efonts="JetBrains Mono Nerd Font 28" +fi + +# Options +layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2` +if [[ "$layout" == 'NO' ]]; then + option_1=" Google" + option_2=" Gmail" + option_3=" Youtube" + option_4=" Github" + option_5=" Reddit" + option_6=" Twitter" +else + option_1="" + option_2="" + option_3="" + option_4="" + option_5="" + option_6="" +fi + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str 'textbox-prompt-colon {str: "";}' \ + -theme-str "element-text {font: \"$efonts\";}" \ + -dmenu \ + -p "$prompt" \ + -mesg "$mesg" \ + -markup-rows \ + -theme ${theme} +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd +} + +# Execute Command +run_cmd() { + if [[ "$1" == '--opt1' ]]; then + xdg-open 'https://www.google.com/' + elif [[ "$1" == '--opt2' ]]; then + xdg-open 'https://mail.google.com/' + elif [[ "$1" == '--opt3' ]]; then + xdg-open 'https://www.youtube.com/' + elif [[ "$1" == '--opt4' ]]; then + xdg-open 'https://www.github.com/' + elif [[ "$1" == '--opt5' ]]; then + xdg-open 'https://www.reddit.com/' + elif [[ "$1" == '--opt6' ]]; then + xdg-open 'https://www.twitter.com/' + fi +} + +# Actions +chosen="$(run_rofi)" +case ${chosen} in + $option_1) + run_cmd --opt1 + ;; + $option_2) + run_cmd --opt2 + ;; + $option_3) + run_cmd --opt3 + ;; + $option_4) + run_cmd --opt4 + ;; + $option_5) + run_cmd --opt5 + ;; + $option_6) + run_cmd --opt6 + ;; +esac diff --git a/.config/rofi/applets/bin/screenshot.sh b/.config/rofi/applets/bin/screenshot.sh new file mode 100755 index 0000000..5e5286b --- /dev/null +++ b/.config/rofi/applets/bin/screenshot.sh @@ -0,0 +1,165 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Applets : Screenshot + +# Import Current Theme +source "$HOME"/.config/rofi/applets/shared/theme.bash +theme="$type/$style" + +# Theme Elements +prompt='Screenshot' +mesg="DIR: `xdg-user-dir PICTURES`/Screenshots" + +if [[ "$theme" == *'type-1'* ]]; then + list_col='1' + list_row='5' + win_width='400px' +elif [[ "$theme" == *'type-3'* ]]; then + list_col='1' + list_row='5' + win_width='120px' +elif [[ "$theme" == *'type-5'* ]]; then + list_col='1' + list_row='5' + win_width='520px' +elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then + list_col='5' + list_row='1' + win_width='670px' +fi + +# Options +layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2` +if [[ "$layout" == 'NO' ]]; then + option_1=" Capture Desktop" + option_2=" Capture Area" + option_3=" Capture Window" + option_4=" Capture in 5s" + option_5=" Capture in 10s" +else + option_1="" + option_2="" + option_3="" + option_4="" + option_5="" +fi + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "window {width: $win_width;}" \ + -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str 'textbox-prompt-colon {str: "";}' \ + -dmenu \ + -p "$prompt" \ + -mesg "$mesg" \ + -markup-rows \ + -theme ${theme} +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5" | rofi_cmd +} + +# Screenshot +time=`date +%Y-%m-%d-%H-%M-%S` +geometry=`xrandr | grep 'current' | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current'` +dir="`xdg-user-dir PICTURES`/Screenshots" +file="Screenshot_${time}_${geometry}.png" + +if [[ ! -d "$dir" ]]; then + mkdir -p "$dir" +fi + +# notify and view screenshot +notify_view() { + notify_cmd_shot='dunstify -u low --replace=699' + ${notify_cmd_shot} "Copied to clipboard." + viewnior ${dir}/"$file" + if [[ -e "$dir/$file" ]]; then + ${notify_cmd_shot} "Screenshot Saved." + else + ${notify_cmd_shot} "Screenshot Deleted." + fi +} + +# Copy screenshot to clipboard +copy_shot () { + tee "$file" | xclip -selection clipboard -t image/png +} + +# countdown +countdown () { + for sec in `seq $1 -1 1`; do + dunstify -t 1000 --replace=699 "Taking shot in : $sec" + sleep 1 + done +} + +# take shots +shotnow () { + cd ${dir} && sleep 0.5 && maim -u -f png | copy_shot + notify_view +} + +shot5 () { + countdown '5' + sleep 1 && cd ${dir} && maim -u -f png | copy_shot + notify_view +} + +shot10 () { + countdown '10' + sleep 1 && cd ${dir} && maim -u -f png | copy_shot + notify_view +} + +shotwin () { + cd ${dir} && maim -u -f png -i `xdotool getactivewindow` | copy_shot + notify_view +} + +shotarea () { + cd ${dir} && maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l | copy_shot + notify_view +} + +# Execute Command +run_cmd() { + if [[ "$1" == '--opt1' ]]; then + shotnow + elif [[ "$1" == '--opt2' ]]; then + shotarea + elif [[ "$1" == '--opt3' ]]; then + shotwin + elif [[ "$1" == '--opt4' ]]; then + shot5 + elif [[ "$1" == '--opt5' ]]; then + shot10 + fi +} + +# Actions +chosen="$(run_rofi)" +case ${chosen} in + $option_1) + run_cmd --opt1 + ;; + $option_2) + run_cmd --opt2 + ;; + $option_3) + run_cmd --opt3 + ;; + $option_4) + run_cmd --opt4 + ;; + $option_5) + run_cmd --opt5 + ;; +esac + + diff --git a/.config/rofi/applets/bin/volume.sh b/.config/rofi/applets/bin/volume.sh new file mode 100755 index 0000000..a194592 --- /dev/null +++ b/.config/rofi/applets/bin/volume.sh @@ -0,0 +1,134 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Applets : Volume + +# Import Current Theme +source "$HOME"/.config/rofi/applets/shared/theme.bash +theme="$type/$style" + +# Volume Info +mixer="`amixer info Master | grep 'Mixer name' | cut -d':' -f2 | tr -d \',' '`" +speaker="`amixer get Master | tail -n1 | awk -F ' ' '{print $5}' | tr -d '[]'`" +mic="`amixer get Capture | tail -n1 | awk -F ' ' '{print $5}' | tr -d '[]'`" + +active="" +urgent="" + +# Speaker Info +amixer get Master | grep '\[on\]' &>/dev/null +if [[ "$?" == 0 ]]; then + active="-a 1" + stext='Unmute' + sicon='' +else + urgent="-u 1" + stext='Mute' + sicon='' +fi + +# Microphone Info +amixer get Capture | grep '\[on\]' &>/dev/null +if [[ "$?" == 0 ]]; then + [ -n "$active" ] && active+=",3" || active="-a 3" + mtext='Unmute' + micon='' +else + [ -n "$urgent" ] && urgent+=",3" || urgent="-u 3" + mtext='Mute' + micon='' +fi + +# Theme Elements +prompt="S:$stext, M:$mtext" +mesg="$mixer - Speaker: $speaker, Mic: $mic" + +if [[ "$theme" == *'type-1'* ]]; then + list_col='1' + list_row='5' + win_width='400px' +elif [[ "$theme" == *'type-3'* ]]; then + list_col='1' + list_row='5' + win_width='120px' +elif [[ "$theme" == *'type-5'* ]]; then + list_col='1' + list_row='5' + win_width='520px' +elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then + list_col='5' + list_row='1' + win_width='670px' +fi + +# Options +layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2` +if [[ "$layout" == 'NO' ]]; then + option_1=" Increase" + option_2="$sicon $stext" + option_3=" Decrese" + option_4="$micon $mtext" + option_5=" Settings" +else + option_1="" + option_2="$sicon" + option_3="" + option_4="$micon" + option_5="" +fi + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "window {width: $win_width;}" \ + -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str 'textbox-prompt-colon {str: "";}' \ + -dmenu \ + -p "$prompt" \ + -mesg "$mesg" \ + ${active} ${urgent} \ + -markup-rows \ + -theme ${theme} +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5" | rofi_cmd +} + +# Execute Command +run_cmd() { + if [[ "$1" == '--opt1' ]]; then + amixer -Mq set Master,0 5%+ unmute + elif [[ "$1" == '--opt2' ]]; then + amixer set Master toggle + elif [[ "$1" == '--opt3' ]]; then + amixer -Mq set Master,0 5%- unmute + elif [[ "$1" == '--opt4' ]]; then + amixer set Capture toggle + elif [[ "$1" == '--opt5' ]]; then + pavucontrol + fi +} + +# Actions +chosen="$(run_rofi)" +case ${chosen} in + $option_1) + run_cmd --opt1 + ;; + $option_2) + run_cmd --opt2 + ;; + $option_3) + run_cmd --opt3 + ;; + $option_4) + run_cmd --opt4 + ;; + $option_5) + run_cmd --opt5 + ;; +esac + diff --git a/.config/rofi/applets/shared/colors.rasi b/.config/rofi/applets/shared/colors.rasi new file mode 100644 index 0000000..103ad63 --- /dev/null +++ b/.config/rofi/applets/shared/colors.rasi @@ -0,0 +1,18 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + * + * Available Colors Schemes + * + * adapta catppuccin everforest navy paper + * arc cyberpunk gruvbox nord solarized + * black dracula lovelace onedark yousai + * + **/ + +/* Import color-scheme from `colors` directory */ + +@import "~/.config/rofi/colors/onedark.rasi" diff --git a/.config/rofi/applets/shared/fonts.rasi b/.config/rofi/applets/shared/fonts.rasi new file mode 100644 index 0000000..430c73d --- /dev/null +++ b/.config/rofi/applets/shared/fonts.rasi @@ -0,0 +1,12 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Fonts + * + **/ + +* { + font: "JetBrains Mono Nerd Font 10"; +} diff --git a/.config/rofi/applets/shared/theme.bash b/.config/rofi/applets/shared/theme.bash new file mode 100755 index 0000000..4807020 --- /dev/null +++ b/.config/rofi/applets/shared/theme.bash @@ -0,0 +1,4 @@ +## Current Theme + +type="$HOME/.config/rofi/applets/type-1" +style='style-1.rasi' diff --git a/.config/rofi/applets/type-1/style-1.rasi b/.config/rofi/applets/type-1/style-1.rasi new file mode 100644 index 0000000..2d3ee5f --- /dev/null +++ b/.config/rofi/applets/type-1/style-1.rasi @@ -0,0 +1,152 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +@import "../shared/colors.rasi" +@import "../shared/fonts.rasi" + +/* +USE_ICON=NO +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 400px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 1px solid; + border-radius: 0px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + children: [ "textbox-prompt-colon", "prompt"]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 0px; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 0px; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 6; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 5px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +element normal.normal, +element alternate.normal { + background-color: var(background); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-1/style-2.rasi b/.config/rofi/applets/type-1/style-2.rasi new file mode 100644 index 0000000..2c66bee --- /dev/null +++ b/.config/rofi/applets/type-1/style-2.rasi @@ -0,0 +1,152 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +@import "../shared/colors.rasi" +@import "../shared/fonts.rasi" + +/* +USE_ICON=NO +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 400px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 1px solid; + border-radius: 12px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + children: [ "textbox-prompt-colon", "prompt"]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 12px; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 12px; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 6; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 5px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 10px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +element normal.normal, +element alternate.normal { + background-color: var(background); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-1/style-3.rasi b/.config/rofi/applets/type-1/style-3.rasi new file mode 100644 index 0000000..285c376 --- /dev/null +++ b/.config/rofi/applets/type-1/style-3.rasi @@ -0,0 +1,152 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +@import "../shared/colors.rasi" +@import "../shared/fonts.rasi" + +/* +USE_ICON=NO +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 400px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 1px solid; + border-radius: 30px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + children: [ "textbox-prompt-colon", "prompt"]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 100%; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 100%; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 6; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 5px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 10px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +element normal.normal, +element alternate.normal { + background-color: var(background); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-2/style-1.rasi b/.config/rofi/applets/type-2/style-1.rasi new file mode 100644 index 0000000..30025a7 --- /dev/null +++ b/.config/rofi/applets/type-2/style-1.rasi @@ -0,0 +1,153 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +@import "../shared/colors.rasi" +@import "../shared/fonts.rasi" + +/* +USE_ICON=YES +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 30px; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + children: [ "textbox-prompt-colon", "prompt"]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 0px; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 0px; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 15px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 30px 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + font: "feather 28"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +element normal.normal, +element alternate.normal { + background-color: var(background-alt); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-2/style-2.rasi b/.config/rofi/applets/type-2/style-2.rasi new file mode 100644 index 0000000..a258620 --- /dev/null +++ b/.config/rofi/applets/type-2/style-2.rasi @@ -0,0 +1,153 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +@import "../shared/colors.rasi" +@import "../shared/fonts.rasi" + +/* +USE_ICON=YES +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 30px; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 0px; + border: 0px; + border-radius: 12px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + children: [ "textbox-prompt-colon", "prompt"]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 12px; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 12px; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 15px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 30px 10px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + font: "feather 28"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +element normal.normal, +element alternate.normal { + background-color: var(background-alt); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-2/style-3.rasi b/.config/rofi/applets/type-2/style-3.rasi new file mode 100644 index 0000000..fb3a99c --- /dev/null +++ b/.config/rofi/applets/type-2/style-3.rasi @@ -0,0 +1,153 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +@import "../shared/colors.rasi" +@import "../shared/fonts.rasi" + +/* +USE_ICON=YES +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 30px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 30px; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 0px; + border: 0px; + border-radius: 100%; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + children: [ "textbox-prompt-colon", "prompt"]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 100%; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 100%; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 15px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 30px 10px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + font: "feather 28"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +element normal.normal, +element alternate.normal { + background-color: var(background-alt); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-3/style-1.rasi b/.config/rofi/applets/type-3/style-1.rasi new file mode 100644 index 0000000..86b17ef --- /dev/null +++ b/.config/rofi/applets/type-3/style-1.rasi @@ -0,0 +1,153 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +@import "../shared/colors.rasi" +@import "../shared/fonts.rasi" + +/* +USE_ICON=YES +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: east; + anchor: east; + fullscreen: false; + width: 120px; + x-offset: -20px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 15px; + background-color: transparent; + children: [ "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + children: [ "textbox-prompt-colon", "prompt"]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 0px; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 0px; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 15px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 23px 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + font: "feather 24"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +element normal.normal, +element alternate.normal { + background-color: var(background-alt); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-3/style-2.rasi b/.config/rofi/applets/type-3/style-2.rasi new file mode 100644 index 0000000..e4f07ba --- /dev/null +++ b/.config/rofi/applets/type-3/style-2.rasi @@ -0,0 +1,153 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +@import "../shared/colors.rasi" +@import "../shared/fonts.rasi" + +/* +USE_ICON=YES +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: east; + anchor: east; + fullscreen: false; + width: 120px; + x-offset: -20px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 10px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 15px; + background-color: transparent; + children: [ "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + children: [ "textbox-prompt-colon", "prompt"]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 0px; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 0px; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 15px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 23px 10px; + border: 0px solid; + border-radius: 10px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + font: "feather 24"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +element normal.normal, +element alternate.normal { + background-color: var(background-alt); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-3/style-3.rasi b/.config/rofi/applets/type-3/style-3.rasi new file mode 100644 index 0000000..06f365f --- /dev/null +++ b/.config/rofi/applets/type-3/style-3.rasi @@ -0,0 +1,153 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +@import "../shared/colors.rasi" +@import "../shared/fonts.rasi" + +/* +USE_ICON=YES +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: east; + anchor: east; + fullscreen: false; + width: 120px; + x-offset: -20px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 15px; + background-color: transparent; + children: [ "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + children: [ "textbox-prompt-colon", "prompt"]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 0px; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 0px; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 15px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 23px 10px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + font: "feather 24"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +element normal.normal, +element alternate.normal { + background-color: var(background-alt); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-4/style-1.rasi b/.config/rofi/applets/type-4/style-1.rasi new file mode 100644 index 0000000..1823c56 --- /dev/null +++ b/.config/rofi/applets/type-4/style-1.rasi @@ -0,0 +1,164 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #11092D; + background-alt: #281657; + foreground: #FFFFFF; + selected: #DF5296; + active: #6E77FF; + urgent: #8E3596; +} + +/* +USE_ICON=YES +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 20px; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 25px; + padding: 100px 50px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + background-image: url("~/.config/rofi/images/a.png", width); + text-color: @foreground; + children: [ "textbox-prompt-colon", "prompt"]; +} + +dummy{ + background-color: transparent; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 0px; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 0px; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 20px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 30px 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + font: "feather 28"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +element normal.normal, +element alternate.normal { + background-color: var(background-alt); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-4/style-2.rasi b/.config/rofi/applets/type-4/style-2.rasi new file mode 100644 index 0000000..40a98ac --- /dev/null +++ b/.config/rofi/applets/type-4/style-2.rasi @@ -0,0 +1,164 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #2D1B14; + background-alt: #462D23; + foreground: #FFFFFF; + selected: #E25F3E; + active: #716251; + urgent: #934A1C; +} + +/* +USE_ICON=YES +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 20px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 20px; + background-color: transparent; + children: [ "inputbar", "listview", "message" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 25px; + padding: 100px 50px; + border: 0px; + border-radius: 20px; + border-color: @selected; + background-color: transparent; + background-image: url("~/.config/rofi/images/d.png", width); + text-color: @foreground; + children: [ "dummy", "textbox-prompt-colon", "prompt", "dummy"]; +} + +dummy{ + background-color: transparent; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 10px; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 10px; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 10px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 20px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 30px 10px; + border: 0px solid; + border-radius: 20px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + font: "feather 28"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +element normal.normal, +element alternate.normal { + background-color: var(background-alt); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-4/style-3.rasi b/.config/rofi/applets/type-4/style-3.rasi new file mode 100644 index 0000000..0199650 --- /dev/null +++ b/.config/rofi/applets/type-4/style-3.rasi @@ -0,0 +1,164 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #131D1F; + background-alt: #183A43; + foreground: #FFFFFF; + selected: #649094; + active: #E9CC9D; + urgent: #FEA861; +} + +/* +USE_ICON=YES +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 50px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 20px; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 25px; + padding: 100px 50px; + border: 0px; + border-radius: 40px; + border-color: @selected; + background-color: transparent; + background-image: url("~/.config/rofi/images/i.jpg", width); + text-color: @foreground; + children: [ "textbox-prompt-colon", "dummy", "prompt"]; +} + +dummy{ + background-color: transparent; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 100%; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 100%; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 20px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 30px 10px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + font: "feather 28"; + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +element normal.normal, +element alternate.normal { + background-color: var(background-alt); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-5/style-1.rasi b/.config/rofi/applets/type-5/style-1.rasi new file mode 100644 index 0000000..0fdc43d --- /dev/null +++ b/.config/rofi/applets/type-5/style-1.rasi @@ -0,0 +1,166 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #231419; + background-alt: #2D1E23; + foreground: #FFFFFF; + selected: #426647; + active: #2E3F34; + urgent: #D08261; +} + +/* +USE_ICON=NO +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 30px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listview" ]; +} + +/*****----- Imagebox -----*****/ +imagebox { + background-color: transparent; + background-image: url("~/.config/rofi/images/e.jpg", height); + children: [ "dummy", "inputbar", "dummy" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 15px; + background-color: transparent; + text-color: @foreground; + children: [ "dummy", "textbox-prompt-colon", "prompt", "dummy"]; +} + +dummy{ + background-color: transparent; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 0px; + background-color: @urgent; + text-color: @background; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 0px; + background-color: @active; + text-color: @foreground; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 5px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +element normal.normal, +element alternate.normal { + background-color: var(background); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(foreground); +} diff --git a/.config/rofi/applets/type-5/style-2.rasi b/.config/rofi/applets/type-5/style-2.rasi new file mode 100644 index 0000000..5b9c5b1 --- /dev/null +++ b/.config/rofi/applets/type-5/style-2.rasi @@ -0,0 +1,167 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #11092D; + background-alt: #281657; + foreground: #FFFFFF; + selected: #DF5296; + active: #6E77FF; + urgent: #8E3596; +} + +/* +USE_ICON=NO +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 20px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 30px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listview" ]; +} + +/*****----- Imagebox -----*****/ +imagebox { + border-radius: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/j.jpg", height); + children: [ "dummy", "inputbar", "dummy" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 15px; + background-color: transparent; + text-color: @foreground; + children: [ "dummy", "textbox-prompt-colon", "prompt", "dummy"]; +} + +dummy{ + background-color: transparent; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border-radius: 15px; + background-color: @urgent; + text-color: @foreground; +} +prompt { + enabled: true; + padding: 10px; + border-radius: 15px; + background-color: @active; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 5px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 10px; + border: 0px solid; + border-radius: 15px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +element normal.normal, +element alternate.normal { + background-color: var(background); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + background-color: var(selected); + text-color: var(background); +} diff --git a/.config/rofi/applets/type-5/style-3.rasi b/.config/rofi/applets/type-5/style-3.rasi new file mode 100644 index 0000000..416f51b --- /dev/null +++ b/.config/rofi/applets/type-5/style-3.rasi @@ -0,0 +1,176 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + show-icons: false; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #101010; + background-alt: #252525; + foreground: #FFFFFF; + selected: #505050; + active: #909090; + urgent: #707070; +} + +/* +USE_ICON=NO +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 30px; + border-color: @selected; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 30px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listview" ]; +} + +/*****----- Imagebox -----*****/ +imagebox { + border: 2px solid; + border-radius: 100%; + border-color: @selected; + background-color: transparent; + background-image: url("~/.config/rofi/images/g.png", height); + children: [ "dummy", "inputbar", "dummy" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 15px; + background-color: transparent; + text-color: @foreground; + children: [ "dummy", "textbox-prompt-colon", "prompt", "dummy"]; +} + +dummy{ + background-color: transparent; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 10px 13px; + border: 2px solid; + border-radius: 100%; + border-color: @selected; + background-color: transparent; + text-color: @foreground; +} +prompt { + enabled: true; + padding: 10px; + border: 2px solid; + border-radius: 100%; + border-color: @foreground; + background-color: @foreground; + text-color: @background; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + scrollbar: false; + layout: vertical; + + spacing: 5px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 11px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +element normal.normal, +element alternate.normal { + background-color: var(background); + text-color: var(foreground); +} +element normal.urgent, +element alternate.urgent, +element selected.active { + background-color: var(urgent); + text-color: var(background); +} +element normal.active, +element alternate.active, +element selected.urgent { + background-color: var(active); + text-color: var(background); +} +element selected.normal { + border: 2px solid; + border-radius: 100%; + border-color: @selected; + background-color: transparent; + text-color: var(foreground); +} diff --git a/.config/rofi/archlabs.rasi b/.config/rofi/archlabs.rasi new file mode 100644 index 0000000..563237f --- /dev/null +++ b/.config/rofi/archlabs.rasi @@ -0,0 +1,91 @@ +/****************************************************************************** + * ROFI Color theme + * User: SmokeKing + * Copyright: Nathaniel Maia + ******************************************************************************/ + +window { + width: 30%; + height: 25%; + padding: 4; + text-color: #c1c1c1; + background-color: #212121; +} + +prompt { + padding: 4; + text-color: #c1c1c1; + background-color: #212121; +} + +entry { + padding: 4; + text-color: #c1c1c1; + background-color: #212121; +} + +inputbar { + children: [ prompt, entry ]; + padding: 4; + border: 0 0 1; + text-color: #c1c1c1; + background-color: #212121; + border-color: #000000; +} + +listview { + columns: 2; + padding: 4; + cycle: false; + dynamic: true; + layout: vertical; + background-color: #212121; +} + +mainbox { + children: [ inputbar, listview ]; + background-color: #212121; +} + +element { + padding: 4; + text-color: #c1c1c1; + background-color: #212121; +} + +element-icon { + padding: 0 4 0; + text-color: inherit; + background-color: inherit; +} + +element-text { + text-color: inherit; + background-color: inherit; +} + +element normal.urgent, element alternate.urgent { + text-color: #c1c1c1; + background-color: #ee5555; +} + +element normal.active, element alternate.active { + text-color: #c1c1c1; + background-color: #212121; +} + +element selected { + text-color: #212121; + background-color: #6699cc; +} + +element selected.urgent { + text-color: #212121; + background-color: #ee5555; +} + +element selected.active { + text-color: #c1c1c1; + background-color: #212121; +} +// vim:ft=css diff --git a/.config/rofi/colors/adapta.rasi b/.config/rofi/colors/adapta.rasi new file mode 100644 index 0000000..dcde9e5 --- /dev/null +++ b/.config/rofi/colors/adapta.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #222D32FF; + background-alt: #29353BFF; + foreground: #B8C2C6FF; + selected: #00BCD4FF; + active: #21FF90FF; + urgent: #FF4B60FF; +} diff --git a/.config/rofi/colors/arc.rasi b/.config/rofi/colors/arc.rasi new file mode 100644 index 0000000..0dfb773 --- /dev/null +++ b/.config/rofi/colors/arc.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #2F343FFF; + background-alt: #383C4AFF; + foreground: #BAC5D0FF; + selected: #5294E2FF; + active: #98C379FF; + urgent: #E06B74FF; +} diff --git a/.config/rofi/colors/black.rasi b/.config/rofi/colors/black.rasi new file mode 100644 index 0000000..fa7b76f --- /dev/null +++ b/.config/rofi/colors/black.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #000000FF; + background-alt: #101010FF; + foreground: #FFFFFFFF; + selected: #62AEEFFF; + active: #98C379FF; + urgent: #E06B74FF; +} diff --git a/.config/rofi/colors/catppuccin.rasi b/.config/rofi/colors/catppuccin.rasi new file mode 100644 index 0000000..62c5945 --- /dev/null +++ b/.config/rofi/colors/catppuccin.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #1E1D2FFF; + background-alt: #282839FF; + foreground: #D9E0EEFF; + selected: #7AA2F7FF; + active: #ABE9B3FF; + urgent: #F28FADFF; +} diff --git a/.config/rofi/colors/cyberpunk.rasi b/.config/rofi/colors/cyberpunk.rasi new file mode 100644 index 0000000..f5fa0e7 --- /dev/null +++ b/.config/rofi/colors/cyberpunk.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #000B1EFF; + background-alt: #0A1528FF; + foreground: #0ABDC6FF; + selected: #0ABDC6FF; + active: #00FF00FF; + urgent: #FF0000FF; +} diff --git a/.config/rofi/colors/dracula.rasi b/.config/rofi/colors/dracula.rasi new file mode 100644 index 0000000..7ae606d --- /dev/null +++ b/.config/rofi/colors/dracula.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #1E1F29FF; + background-alt: #282A36FF; + foreground: #FFFFFFFF; + selected: #BD93F9FF; + active: #50FA7BFF; + urgent: #FF5555FF; +} diff --git a/.config/rofi/colors/everforest.rasi b/.config/rofi/colors/everforest.rasi new file mode 100644 index 0000000..83d4f71 --- /dev/null +++ b/.config/rofi/colors/everforest.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #323D43FF; + background-alt: #3C474DFF; + foreground: #DAD1BEFF; + selected: #7FBBB3FF; + active: #A7C080FF; + urgent: #E67E80FF; +} diff --git a/.config/rofi/colors/gruvbox.rasi b/.config/rofi/colors/gruvbox.rasi new file mode 100644 index 0000000..2ee85d0 --- /dev/null +++ b/.config/rofi/colors/gruvbox.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #282828FF; + background-alt: #353535FF; + foreground: #EBDBB2FF; + selected: #83A598FF; + active: #B8BB26FF; + urgent: #FB4934FF; +} diff --git a/.config/rofi/colors/lovelace.rasi b/.config/rofi/colors/lovelace.rasi new file mode 100644 index 0000000..80140ee --- /dev/null +++ b/.config/rofi/colors/lovelace.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #1D1F28FF; + background-alt: #282A36FF; + foreground: #FDFDFDFF; + selected: #79E6F3FF; + active: #5ADECDFF; + urgent: #F37F97FF; +} diff --git a/.config/rofi/colors/navy.rasi b/.config/rofi/colors/navy.rasi new file mode 100644 index 0000000..1289f53 --- /dev/null +++ b/.config/rofi/colors/navy.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #021B21FF; + background-alt: #0C252BFF; + foreground: #F2F1B9FF; + selected: #44B5B1FF; + active: #7CBF9EFF; + urgent: #C2454EFF; +} diff --git a/.config/rofi/colors/nord.rasi b/.config/rofi/colors/nord.rasi new file mode 100644 index 0000000..c6bc05d --- /dev/null +++ b/.config/rofi/colors/nord.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #2E3440FF; + background-alt: #383E4AFF; + foreground: #E5E9F0FF; + selected: #81A1C1FF; + active: #A3BE8CFF; + urgent: #BF616AFF; +} diff --git a/.config/rofi/colors/onedark.rasi b/.config/rofi/colors/onedark.rasi new file mode 100644 index 0000000..7c76108 --- /dev/null +++ b/.config/rofi/colors/onedark.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #1E2127FF; + background-alt: #282B31FF; + foreground: #FFFFFFFF; + selected: #61AFEFFF; + active: #98C379FF; + urgent: #E06C75FF; +} diff --git a/.config/rofi/colors/paper.rasi b/.config/rofi/colors/paper.rasi new file mode 100644 index 0000000..c3d76e8 --- /dev/null +++ b/.config/rofi/colors/paper.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #F1F1F1FF; + background-alt: #E0E0E0FF; + foreground: #252525FF; + selected: #008EC4FF; + active: #10A778FF; + urgent: #C30771FF; +} diff --git a/.config/rofi/colors/solarized.rasi b/.config/rofi/colors/solarized.rasi new file mode 100644 index 0000000..9051e13 --- /dev/null +++ b/.config/rofi/colors/solarized.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #002B36FF; + background-alt: #073642FF; + foreground: #EEE8D5FF; + selected: #268BD2FF; + active: #859900FF; + urgent: #DC322FFF; +} diff --git a/.config/rofi/colors/tokyonight.rasi b/.config/rofi/colors/tokyonight.rasi new file mode 100644 index 0000000..1145cbd --- /dev/null +++ b/.config/rofi/colors/tokyonight.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Levi Lacoss (fishyfishfish55) + * Github : @fishyfishfish55 + * + * Colors + **/ + +* { + background: #15161EFF; + background-alt: #1A1B26FF; + foreground: #C0CAF5FF; + selected: #33467CFF; + active: #414868FF; + urgent: #F7768EFF; +} diff --git a/.config/rofi/colors/yousai.rasi b/.config/rofi/colors/yousai.rasi new file mode 100644 index 0000000..757cab3 --- /dev/null +++ b/.config/rofi/colors/yousai.rasi @@ -0,0 +1,16 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + **/ + +* { + background: #F5E7DEFF; + background-alt: #EBDCD2FF; + foreground: #34302DFF; + selected: #D97742FF; + active: #BF8F60FF; + urgent: #B23636FF; +} diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi new file mode 100644 index 0000000..6be1014 --- /dev/null +++ b/.config/rofi/config.rasi @@ -0,0 +1,126 @@ +configuration { + display-drun: ""; + drun-display-format: "{name}"; + modi: "drun"; + show-icons: false; +} + +@import "~/.config/rofi/colors/Paledark.rasi" + +* { + font: "Iosevka Regular 14"; + + background-color: @background; + separatorcolor: transparent; + + border: 0; + margin: 0; + padding: 0; + spacing: 0; +} + +window { + width: 420px; + border-radius: 0; + border: 0; + border-color: @background-alt; + background-color: @background; +} + +mainbox { + background-color: @background; + children: [inputbar, listview]; + padding: 5; +} + +listview { + scrollbar: false; + padding: 2 0; + background-color: @background; + columns: 1; + lines: 7; + margin: 8 0 0 0; +} + + +inputbar { + children: [prompt, entry]; + background-color: @background-alt; + border-radius: 0; +} + +prompt { + background-color: @accent; + text-color: @background; + enabled: true; + border-radius: 0; + padding: 10 10 0 10; +} + +entry { + background-color: transparent; + text-color: @foreground; + placeholder-color: @foreground; + border-radius: 0; + placeholder: "Search..."; + blink: true; + padding: 8; + +} + +element { + background-color: rgba(0,0,0,0); + padding: 10; + border-radius: 0; +} + +element-text { + background-color: inherit; + text-color: inherit; + expand: true; + horizontal-align: 0; + vertical-align: 0.5; +} + +element-icon { + background-color: inherit; + text-color: inherit; + padding: 0 10 0 0; +} + +element.normal.normal { + background-color: @background; + text-color: @foreground; +} +element.normal.urgent { + background-color: @accent; + text-color: @foreground; +} +element.normal.active { + background-color: @accent; + text-color: @background; +} +element.selected.normal { + background-color: @accent; + text-color: @background; +} +element.selected.urgent { + background-color: @background; + text-color: @foreground; +} +element.selected.active { + background-color: @accent; + text-color: @background; +} +element.alternate.normal { + background-color: @background; + text-color: @foreground; +} +element.alternate.urgent { + background-color: @background; + text-color: @foreground; +} +element.alternate.active { + background-color: @background; + text-color: @foreground; +} \ No newline at end of file diff --git a/.config/rofi/images/a.png b/.config/rofi/images/a.png new file mode 100644 index 0000000..d70c5fb Binary files /dev/null and b/.config/rofi/images/a.png differ diff --git a/.config/rofi/images/b.png b/.config/rofi/images/b.png new file mode 100644 index 0000000..34214a2 Binary files /dev/null and b/.config/rofi/images/b.png differ diff --git a/.config/rofi/images/c.png b/.config/rofi/images/c.png new file mode 100644 index 0000000..9e18e5f Binary files /dev/null and b/.config/rofi/images/c.png differ diff --git a/.config/rofi/images/d.png b/.config/rofi/images/d.png new file mode 100644 index 0000000..5f68a1b Binary files /dev/null and b/.config/rofi/images/d.png differ diff --git a/.config/rofi/images/e.jpg b/.config/rofi/images/e.jpg new file mode 100644 index 0000000..51995e4 Binary files /dev/null and b/.config/rofi/images/e.jpg differ diff --git a/.config/rofi/images/f.png b/.config/rofi/images/f.png new file mode 100644 index 0000000..fb69e73 Binary files /dev/null and b/.config/rofi/images/f.png differ diff --git a/.config/rofi/images/flowers-1.png b/.config/rofi/images/flowers-1.png new file mode 100644 index 0000000..155b593 Binary files /dev/null and b/.config/rofi/images/flowers-1.png differ diff --git a/.config/rofi/images/flowers-2.png b/.config/rofi/images/flowers-2.png new file mode 100644 index 0000000..e4bf205 Binary files /dev/null and b/.config/rofi/images/flowers-2.png differ diff --git a/.config/rofi/images/flowers-3.png b/.config/rofi/images/flowers-3.png new file mode 100644 index 0000000..2c6f3a6 Binary files /dev/null and b/.config/rofi/images/flowers-3.png differ diff --git a/.config/rofi/images/g.png b/.config/rofi/images/g.png new file mode 100644 index 0000000..d42e1f4 Binary files /dev/null and b/.config/rofi/images/g.png differ diff --git a/.config/rofi/images/gradient.png b/.config/rofi/images/gradient.png new file mode 100644 index 0000000..e51c308 Binary files /dev/null and b/.config/rofi/images/gradient.png differ diff --git a/.config/rofi/images/h.jpg b/.config/rofi/images/h.jpg new file mode 100644 index 0000000..7829121 Binary files /dev/null and b/.config/rofi/images/h.jpg differ diff --git a/.config/rofi/images/i.jpg b/.config/rofi/images/i.jpg new file mode 100644 index 0000000..f31ee84 Binary files /dev/null and b/.config/rofi/images/i.jpg differ diff --git a/.config/rofi/images/j.jpg b/.config/rofi/images/j.jpg new file mode 100644 index 0000000..e70a715 Binary files /dev/null and b/.config/rofi/images/j.jpg differ diff --git a/.config/rofi/images/paper.png b/.config/rofi/images/paper.png new file mode 100644 index 0000000..4e073fd Binary files /dev/null and b/.config/rofi/images/paper.png differ diff --git a/.config/rofi/images/user.jpeg b/.config/rofi/images/user.jpeg new file mode 100644 index 0000000..3490fed Binary files /dev/null and b/.config/rofi/images/user.jpeg differ diff --git a/.config/rofi/launchers/type-1/launcher.sh b/.config/rofi/launchers/type-1/launcher.sh new file mode 100755 index 0000000..85b7df4 --- /dev/null +++ b/.config/rofi/launchers/type-1/launcher.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Rofi : Launcher (Modi Drun, Run, File Browser, Window) +# +## Available Styles +# +## style-1 style-2 style-3 style-4 style-5 +## style-6 style-7 style-8 style-9 style-10 +## style-11 style-12 style-13 style-14 style-15 + +dir="$HOME/.config/rofi/launchers/type-1" +theme='style-1' + +## Run +rofi \ + -show drun \ + -theme ${dir}/${theme}.rasi diff --git a/.config/rofi/launchers/type-1/shared/colors.rasi b/.config/rofi/launchers/type-1/shared/colors.rasi new file mode 100644 index 0000000..103ad63 --- /dev/null +++ b/.config/rofi/launchers/type-1/shared/colors.rasi @@ -0,0 +1,18 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + * + * Available Colors Schemes + * + * adapta catppuccin everforest navy paper + * arc cyberpunk gruvbox nord solarized + * black dracula lovelace onedark yousai + * + **/ + +/* Import color-scheme from `colors` directory */ + +@import "~/.config/rofi/colors/onedark.rasi" diff --git a/.config/rofi/launchers/type-1/shared/fonts.rasi b/.config/rofi/launchers/type-1/shared/fonts.rasi new file mode 100644 index 0000000..430c73d --- /dev/null +++ b/.config/rofi/launchers/type-1/shared/fonts.rasi @@ -0,0 +1,12 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Fonts + * + **/ + +* { + font: "JetBrains Mono Nerd Font 10"; +} diff --git a/.config/rofi/launchers/type-1/style-1.rasi b/.config/rofi/launchers/type-1/style-1.rasi new file mode 100644 index 0000000..2fff263 --- /dev/null +++ b/.config/rofi/launchers/type-1/style-1.rasi @@ -0,0 +1,307 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser"; + show-icons: false; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 20px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 40px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + children: [ "prompt", "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 10px ; + handle-color: @handle-colour; + border-radius: 10px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px 10px; + border: 0px solid; + border-radius: 20px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 5px 10px; + border: 0px solid; + border-radius: 20px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 5px 10px; + border: 0px solid; + border-radius: 20px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 2px solid; + border-radius: 20px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-10.rasi b/.config/rofi/launchers/type-1/style-10.rasi new file mode 100644 index 0000000..e3f413b --- /dev/null +++ b/.config/rofi/launchers/type-1/style-10.rasi @@ -0,0 +1,323 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run"; + show-icons: false; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(foreground); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: north; + anchor: north; + fullscreen: false; + width: 100%; + x-offset: 0px; + y-offset: 0px; + + children: [ horibox ]; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Horizontal Box -----*****/ +horibox { + spacing: 0px; + background-color: @background-colour; + text-color: @foreground-colour; + orientation: horizontal; + children: [ "prompt", "textbox-prompt-colon","entry", "listview" ]; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 40px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + padding: 10px; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + padding: 10px 0px 10px 0px; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 10px; + expand: false; + width: 20em; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 100; + cycle: true; + dynamic: true; + scrollbar: false; + layout: horizontal; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 8px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 8px; + margin: 0px; + padding: 10px 8px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; +} +button { + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: transparent; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(normal-foreground); + text-color: var(normal-background); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 8px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-11.rasi b/.config/rofi/launchers/type-1/style-11.rasi new file mode 100644 index 0000000..59f8849 --- /dev/null +++ b/.config/rofi/launchers/type-1/style-11.rasi @@ -0,0 +1,307 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser"; + show-icons: false; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + children: [ "prompt", "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 6; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 2px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-12.rasi b/.config/rofi/launchers/type-1/style-12.rasi new file mode 100644 index 0000000..8d30e4a --- /dev/null +++ b/.config/rofi/launchers/type-1/style-12.rasi @@ -0,0 +1,325 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser"; + show-icons: false; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); + + /* For Screens with 1920x1080 resolution */ + screen-margin: 310px 400px; + box-spacing: 20px; + element-padding: 15px; + element-radius: 100%; + element-spacing: 15px; + + /* For Screens with 1366x768 resolution */ + /* + screen-margin: 190px 250px; + box-spacing: 20px; + element-padding: 10px; + element-radius: 100%; + element-spacing: 10px; + */ + /* Use this as reference and create for your screen resolution */ +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: @box-spacing; + margin: @screen-margin; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: @element-spacing; + margin: 0px; + padding: @element-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + children: [ "prompt", "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 3; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: @box-spacing; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 10px ; + handle-color: @handle-colour; + border-radius: @element-radius; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: @element-spacing; + margin: 0px; + padding: @element-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: @box-spacing; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: @element-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: @element-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: @element-padding; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-13.rasi b/.config/rofi/launchers/type-1/style-13.rasi new file mode 100644 index 0000000..1b82aa2 --- /dev/null +++ b/.config/rofi/launchers/type-1/style-13.rasi @@ -0,0 +1,325 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: false; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); + + /* For Screens with 1920x1080 resolution */ + screen-margin: 310px 500px; + box-spacing: 20px; + element-padding: 15px; + element-radius: 8px; + element-spacing: 15px; + + /* For Screens with 1366x768 resolution */ + /* + screen-margin: 190px 350px; + box-spacing: 20px; + element-padding: 10px; + element-radius: 6px; + element-spacing: 10px; + */ + /* Use this as reference and create for your screen resolution */ +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: @box-spacing; + margin: @screen-margin; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: @element-spacing; + margin: 0px; + padding: @element-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + children: [ "prompt", "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ":"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: @box-spacing; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 8px ; + handle-color: @handle-colour; + border-radius: @element-radius; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: @element-spacing; + margin: 0px; + padding: @element-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: @box-spacing; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: @element-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: @element-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: @element-padding; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-14.rasi b/.config/rofi/launchers/type-1/style-14.rasi new file mode 100644 index 0000000..2cbceca --- /dev/null +++ b/.config/rofi/launchers/type-1/style-14.rasi @@ -0,0 +1,335 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); + + /* For Screens with 1920x1080 resolution */ + screen-margin: 275px 400px; + box-spacing: 20px; + list-padding: 8px; + element-padding: 15px; + element-radius: 8px; + element-spacing: 15px; + + /* For Screens with 1366x768 resolution */ + /* + screen-margin: 120px 225px; + box-spacing: 20px; + list-padding: 4px; + element-padding: 10px; + element-radius: 6px; + element-spacing: 10px; + */ + /* Use this as reference and create for your screen resolution */ +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: @box-spacing; + margin: @screen-margin; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + children: [ "textbox-prompt-colon", "entry", "mode-switcher" ]; +} + +prompt { + enabled: true; + padding: @element-padding; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + padding: @element-padding; + str: ""; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; +} +entry { + enabled: true; + expand: true; + padding: @element-padding; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: @box-spacing; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 8px ; + handle-color: @handle-colour; + border-radius: @element-radius; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: @element-spacing; + margin: 0px; + padding: @list-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: @box-spacing; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: @element-padding; + width: 125px; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: @element-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: @element-padding; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-15.rasi b/.config/rofi/launchers/type-1/style-15.rasi new file mode 100644 index 0000000..e443bb6 --- /dev/null +++ b/.config/rofi/launchers/type-1/style-15.rasi @@ -0,0 +1,345 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); + + /* For Screens with 1920x1080 resolution */ + screen-margin: 275px 400px; + box-spacing: 20px; + list-padding: 8px; + element-padding: 15px; + element-radius: 8px; + element-spacing: 15px; + + /* For Screens with 1366x768 resolution */ + /* + screen-margin: 180px 225px; + box-spacing: 20px; + list-padding: 4px; + element-padding: 10px; + element-radius: 6px; + element-spacing: 10px; + */ + /* Use this as reference and create for your screen resolution */ +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: @box-spacing; + margin: @screen-margin; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "custombox" ]; +} + +/*****----- A Custom Box -----*****/ +custombox { + spacing: @box-spacing; + background-color: @background-colour; + text-color: @foreground-colour; + orientation: horizontal; + children: [ "mode-switcher", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + children: [ "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + padding: @element-padding; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + padding: @element-padding; + str: ""; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; +} +entry { + enabled: true; + expand: true; + padding: @element-padding; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: @box-spacing; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 8px ; + handle-color: @handle-colour; + border-radius: @element-radius; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: @element-spacing; + margin: 0px; + padding: @list-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + orientation: vertical; + spacing: @box-spacing; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: @element-padding; + width: 125px; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: @element-padding; + border: 0px solid; + border-radius: @element-radius; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: @element-padding; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-2.rasi b/.config/rofi/launchers/type-1/style-2.rasi new file mode 100644 index 0000000..6f99d10 --- /dev/null +++ b/.config/rofi/launchers/type-1/style-2.rasi @@ -0,0 +1,307 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: false; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(foreground); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 400px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 40px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 12; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 8px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 8px; + margin: 0px; + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(normal-foreground); + text-color: var(normal-background); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-3.rasi b/.config/rofi/launchers/type-1/style-3.rasi new file mode 100644 index 0000000..156e039 --- /dev/null +++ b/.config/rofi/launchers/type-1/style-3.rasi @@ -0,0 +1,307 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run"; + show-icons: false; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(foreground); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 400px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 30px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 6; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 8px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 8px; + margin: 0px; + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(normal-foreground); + text-color: var(normal-background); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(normal-foreground); + text-color: var(normal-background); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-4.rasi b/.config/rofi/launchers/type-1/style-4.rasi new file mode 100644 index 0000000..3e41328 --- /dev/null +++ b/.config/rofi/launchers/type-1/style-4.rasi @@ -0,0 +1,308 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser"; + show-icons: false; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(foreground); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: west; + anchor: west; + fullscreen: false; + width: 450px; + height: 100%; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 40px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 8px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 8px; + margin: 0px; + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(normal-foreground); + text-color: var(normal-background); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; +} +button { + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: transparent; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(normal-foreground); + text-color: var(normal-background); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 8px; + border: 0px solid; + border-radius: 4px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-5.rasi b/.config/rofi/launchers/type-1/style-5.rasi new file mode 100644 index 0000000..4e88e83 --- /dev/null +++ b/.config/rofi/launchers/type-1/style-5.rasi @@ -0,0 +1,309 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 30px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + children: [ "textbox-prompt-colon", "entry", "mode-switcher" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + padding: 5px 0px; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 5px 0px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 10px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px 10px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 5px 10px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 8px 10px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 2px solid; + border-radius: 10px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-6.rasi b/.config/rofi/launchers/type-1/style-6.rasi new file mode 100644 index 0000000..51178bf --- /dev/null +++ b/.config/rofi/launchers/type-1/style-6.rasi @@ -0,0 +1,310 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "mode-switcher", "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + children: [ "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + padding: 5px 0px; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 5px 0px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 10px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + expand: false; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 12px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 12px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 0px; + border: 2px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-7.rasi b/.config/rofi/launchers/type-1/style-7.rasi new file mode 100644 index 0000000..6f8ef84 --- /dev/null +++ b/.config/rofi/launchers/type-1/style-7.rasi @@ -0,0 +1,313 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "mode-switcher", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px 0px 10px 0px; + padding: 5px 10px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + children: [ "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + padding: 5px 0px; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 5px 0px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 10px; + border: 0px 2px 2px 2px ; + border-radius: 0px 0px 10px 10px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 10px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 6px; + border: 0px solid; + border-radius: 6px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + expand: false; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 10px; + border: 0px 0px 2px 0px ; + border-radius: 10px 10px 0px 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: inherit; + cursor: pointer; +} +button selected { + border: 2px 2px 0px 2px ; + border-radius: 10px 10px 0px 0px; + border-color: @border-colour; + background-color: var(normal-background); + text-color: var(normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px 0px 10px 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 10px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 2px solid; + border-radius: 10px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-8.rasi b/.config/rofi/launchers/type-1/style-8.rasi new file mode 100644 index 0000000..ca5623a --- /dev/null +++ b/.config/rofi/launchers/type-1/style-8.rasi @@ -0,0 +1,323 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,ssh,window"; + show-icons: false; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + display-ssh: " SSH"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "custombox" ]; +} + +/*****----- A Custom Box -----*****/ +custombox { + spacing: 10px; + background-color: @background-colour; + text-color: @foreground-colour; + orientation: horizontal; + children: [ "mode-switcher", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px 12px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + children: [ "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + padding: 5px 0px; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 5px 0px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 10px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + expand: false; + orientation: vertical; + spacing: 10px; + margin: 0px; + padding: 0px 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 0px 20px 0px 20px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 12px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 2px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-1/style-9.rasi b/.config/rofi/launchers/type-1/style-9.rasi new file mode 100644 index 0000000..ebf79ca --- /dev/null +++ b/.config/rofi/launchers/type-1/style-9.rasi @@ -0,0 +1,326 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,ssh,window"; + show-icons: false; + display-drun: " Apps"; + display-run: " Run"; + display-filebrowser: " Files"; + display-window: " Windows"; + display-ssh: " SSH"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 700px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 10px; + border-color: @border-colour; + cursor: "default"; + /* Backgroud Colors */ + background-color: @background-colour; + /* Backgroud Image */ + //background-image: url("/path/to/image.png", none); + /* Simple Linear Gradient */ + //background-image: linear-gradient(red, orange, pink, purple); + /* Directional Linear Gradient */ + //background-image: linear-gradient(to bottom, pink, yellow, magenta); + /* Angle Linear Gradient */ + //background-image: linear-gradient(45, cyan, purple, indigo); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "custombox" ]; +} + +/*****----- A Custom Box -----*****/ +custombox { + spacing: 0px; + background-color: @background-colour; + text-color: @foreground-colour; + orientation: horizontal; + children: [ "mode-switcher", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px 12px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + children: [ "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + padding: 5px 0px; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 5px 0px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: inherit; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: inherit; + text-color: inherit; +} +case-indicator { + enabled: true; + background-color: inherit; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 6; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 10px; + border: 2px 2px 2px 0px; + border-radius: 0px 8px 8px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 10px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + expand: false; + orientation: vertical; + spacing: 0px; + margin: 0px; + padding: 0px 0px; + border: 0px solid; + border-radius: 8px 0px 0px 8px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; +} +button { + padding: 0px 20px 0px 20px; + border: 0px 2px 0px 0px; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: pointer; +} +button selected { + border: 2px 0px 2px 2px; + border-radius: 8px 0px 0px 8px; + border-color: @border-colour; + background-color: var(selected-normal-foreground); + text-color: var(selected-normal-background); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 12px; + border: 0px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 2px solid; + border-radius: 8px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-2/launcher.sh b/.config/rofi/launchers/type-2/launcher.sh new file mode 100755 index 0000000..3422cd7 --- /dev/null +++ b/.config/rofi/launchers/type-2/launcher.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Rofi : Launcher (Modi Drun, Run, File Browser, Window) +# +## Available Styles +# +## style-1 style-2 style-3 style-4 style-5 +## style-6 style-7 style-8 style-9 style-10 +## style-11 style-12 style-13 style-14 style-15 + +dir="$HOME/.config/rofi/launchers/type-2" +theme='style-1' + +## Run +rofi \ + -show drun \ + -theme ${dir}/${theme}.rasi diff --git a/.config/rofi/launchers/type-2/shared/colors.rasi b/.config/rofi/launchers/type-2/shared/colors.rasi new file mode 100644 index 0000000..103ad63 --- /dev/null +++ b/.config/rofi/launchers/type-2/shared/colors.rasi @@ -0,0 +1,18 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + * + * Available Colors Schemes + * + * adapta catppuccin everforest navy paper + * arc cyberpunk gruvbox nord solarized + * black dracula lovelace onedark yousai + * + **/ + +/* Import color-scheme from `colors` directory */ + +@import "~/.config/rofi/colors/onedark.rasi" diff --git a/.config/rofi/launchers/type-2/shared/fonts.rasi b/.config/rofi/launchers/type-2/shared/fonts.rasi new file mode 100644 index 0000000..50499c9 --- /dev/null +++ b/.config/rofi/launchers/type-2/shared/fonts.rasi @@ -0,0 +1,12 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Fonts + * + **/ + +* { + font: "Iosevka Nerd Font 10"; +} diff --git a/.config/rofi/launchers/type-2/style-1.rasi b/.config/rofi/launchers/type-2/style-1.rasi new file mode 100644 index 0000000..fe2c342 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-1.rasi @@ -0,0 +1,171 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 400px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 15px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @selected; + text-color: @background; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 6; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: @background; + text-color: @foreground; +} +element selected.normal { + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 15px; + border: 2px solid; + border-radius: 12px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-10.rasi b/.config/rofi/launchers/type-2/style-10.rasi new file mode 100644 index 0000000..09e3a41 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-10.rasi @@ -0,0 +1,194 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + /* For Screens with 1920x1080 resolution */ + screen-margin: 180px 150px; + box-spacing: 40px; + icon-size: 96px; + element-padding: 30px; + element-spacing: 15px; + + /* For Screens with 1366x768 resolution */ + /* + screen-margin: 120px 60px; + box-spacing: 40px; + icon-size: 64px; + element-padding: 20px; + element-spacing: 10px; + */ + /* Use this as reference and create for your screen resolution */ +} + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: @box-spacing; + margin: @screen-margin; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px 50% 0px 0px; + padding: 15px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: @selected; + text-color: @background; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 8; + lines: 3; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: @element-spacing; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: @element-spacing; + margin: 0px; + padding: @element-padding; + border: 0px solid; + border-radius: 30px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: @background; + text-color: @foreground; +} +element selected.normal { + border: 0px 0px 4px 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: @icon-size; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 150px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-11.rasi b/.config/rofi/launchers/type-2/style-11.rasi new file mode 100644 index 0000000..58fa61e --- /dev/null +++ b/.config/rofi/launchers/type-2/style-11.rasi @@ -0,0 +1,183 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: "Applications"; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 150px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px 0px 2px 0px; + border-radius: 100%; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + padding: 12px; + border-radius: 100%; + background-color: @selected; + text-color: @background; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 12px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 3; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 20px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: @background; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: @background-alt; + text-color: @foreground; +} +element alternate.normal { + background-color: @background-alt; + text-color: @foreground; +} +element selected.normal { + border: 0px 0px 2px 2px; + border-radius: 100%; + border-color: @selected; + background-color: @background-alt; + text-color: @selected; +} +element-icon { + padding: 0px 0px 0px 0px; + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 100px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-12.rasi b/.config/rofi/launchers/type-2/style-12.rasi new file mode 100644 index 0000000..858a905 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-12.rasi @@ -0,0 +1,179 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: " Applications"; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 200px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + padding: 15px; + border-radius: 100%; + background-color: @selected; + text-color: @background; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + width: 350px; + padding: 15px 20px; + border-radius: 100%; + background-color: @background-alt; + text-color: @foreground; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 4; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: @background; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: @background; + text-color: @foreground; +} +element selected.normal { + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + padding: 0px 0px 0px 0px; + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 100px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-13.rasi b/.config/rofi/launchers/type-2/style-13.rasi new file mode 100644 index 0000000..b21ca00 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-13.rasi @@ -0,0 +1,179 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: " Apps"; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 100%; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 50px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + padding: 15px; + border-radius: 15px; + background-color: @selected; + text-color: @background; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + width: 350px; + padding: 15px 20px; + border-radius: 15px; + background-color: @background-alt; + text-color: @foreground; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 10; + lines: 1; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 30px 10px; + border: 0px solid; + border-radius: 20px; + border-color: @selected; + background-color: @background; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: @background; + text-color: @foreground; +} +element selected.normal { + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + padding: 0px 0px 0px 0px; + background-color: transparent; + text-color: inherit; + size: 96px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 50px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-14.rasi b/.config/rofi/launchers/type-2/style-14.rasi new file mode 100644 index 0000000..049979b --- /dev/null +++ b/.config/rofi/launchers/type-2/style-14.rasi @@ -0,0 +1,188 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: " Applications"; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1200px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 10px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; + orientation: horizontal; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; + children: [ "prompt", "entry" ]; + orientation: vertical; +} + +prompt { + enabled: true; + expand: false; + padding: 15px 50px; + border-radius: 10px; + background-color: @selected; + text-color: @background; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + padding: 15px 20px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 4; + lines: 1; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px; + border: 0px solid; + border-radius: 10px; + border-color: @selected; + background-color: @background; + text-color: @foreground; + orientation: horizontal; + cursor: pointer; +} +element normal.normal { + background-color: @background-alt; + text-color: @foreground; +} +element alternate.normal { + background-color: @background-alt; + text-color: @foreground; +} +element selected.normal { + border: 0px 2px 0px 2px; + border-radius: 10px; + border-color: @selected; + background-color: @background-alt; + text-color: @selected; +} +element-icon { + padding: 0px; + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-15.rasi b/.config/rofi/launchers/type-2/style-15.rasi new file mode 100644 index 0000000..4b14fc1 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-15.rasi @@ -0,0 +1,151 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: " Applications"; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 450px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "listview", "entry" ]; +} + +/*****----- Inputbar -----*****/ +entry { + enabled: true; + expand: false; + padding: 20px 0px; + background-color: @selected; + text-color: @background; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 3; + lines: 3; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 20px 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: @background; + text-color: @foreground; +} +element selected.normal { + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 64px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 15px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-2.rasi b/.config/rofi/launchers/type-2/style-2.rasi new file mode 100644 index 0000000..49502a0 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-2.rasi @@ -0,0 +1,171 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 700px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 15px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: @background; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @background; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 15px; + border: 2px solid; + border-radius: 12px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-3.rasi b/.config/rofi/launchers/type-2/style-3.rasi new file mode 100644 index 0000000..5e3a6f9 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-3.rasi @@ -0,0 +1,171 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 15px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @foreground; + text-color: @background; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 6px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: @background; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @background; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 15px; + border: 2px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-4.rasi b/.config/rofi/launchers/type-2/style-4.rasi new file mode 100644 index 0000000..f5ab848 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-4.rasi @@ -0,0 +1,180 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: "Applications"; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 30px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + padding: 12px; + background-color: @selected; + text-color: @background; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 12px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: @background-alt; + text-color: @foreground; +} +element alternate.normal { + background-color: @background-alt; + text-color: @foreground; +} +element selected.normal { + border: 0px 0px 0px 4px; + border-color: @selected; + background-color: @background-alt; + text-color: @selected; +} +element-icon { + padding: 0px 0px 0px 10px; + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 15px; + border: 2px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-5.rasi b/.config/rofi/launchers/type-2/style-5.rasi new file mode 100644 index 0000000..50ce121 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-5.rasi @@ -0,0 +1,182 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: "Applications"; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 700px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 16px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 30px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 16px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + padding: 12px; + border-radius: 16px; + background-color: @selected; + text-color: @background; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 12px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 7; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 16px; + border-color: @selected; + background-color: @background; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: @background-alt; + text-color: @foreground; +} +element alternate.normal { + background-color: @background-alt; + text-color: @foreground; +} +element selected.normal { + border: 0px 5px 0px 5px; + border-radius: 16px; + border-color: @selected; + background-color: @background-alt; + text-color: @selected; +} +element-icon { + padding: 0px 0px 0px 10px; + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 15px; + border: 2px solid; + border-radius: 16px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-6.rasi b/.config/rofi/launchers/type-2/style-6.rasi new file mode 100644 index 0000000..2f0ab2b --- /dev/null +++ b/.config/rofi/launchers/type-2/style-6.rasi @@ -0,0 +1,172 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: west; + anchor: west; + fullscreen: false; + width: 450px; + height: 100%; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 12px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @selected; + text-color: @background; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 6; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 6px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: @background; + text-color: @foreground; +} +element selected.normal { + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 15px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-7.rasi b/.config/rofi/launchers/type-2/style-7.rasi new file mode 100644 index 0000000..49e14be --- /dev/null +++ b/.config/rofi/launchers/type-2/style-7.rasi @@ -0,0 +1,172 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 750px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 15px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @selected; + text-color: @background; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 5; + lines: 3; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 20px 10px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: @background; + text-color: @foreground; +} +element selected.normal { + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 64px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 15px; + border: 2px solid; + border-radius: 12px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-8.rasi b/.config/rofi/launchers/type-2/style-8.rasi new file mode 100644 index 0000000..ee20df1 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-8.rasi @@ -0,0 +1,184 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: " Applications"; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 20px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 40px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; + children: [ "prompt", "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + padding: 15px; + border-radius: 100%; + background-color: @selected; + text-color: @background; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + padding: 15px; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 15px 0px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 3; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 20px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + background-color: transparent; + text-color: @foreground; +} +element-icon { + padding: 30px; + border-radius: 20px; + background-color: @background-alt; + text-color: inherit; + size: 64px; + cursor: inherit; +} +element-text { + padding: 10px; + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} +element-text selected { + border-radius: 100%; + background-color: @selected; + text-color: @background; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + border: 2px solid; + border-radius: 20px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-2/style-9.rasi b/.config/rofi/launchers/type-2/style-9.rasi new file mode 100644 index 0000000..75dc924 --- /dev/null +++ b/.config/rofi/launchers/type-2/style-9.rasi @@ -0,0 +1,179 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: " Applications"; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 20px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + margin: 40px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 100%; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; + children: [ "prompt", "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + padding: 15px; + border-radius: 100%; + background-color: @selected; + text-color: @background; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + padding: 15px; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 15px 0px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 6; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 15px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: horizontal; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + border-radius: 100%; + background-color: @background-alt; + text-color: @selected; +} +element-icon { + padding: 10px; + border-radius: 100%; + background-color: @selected; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + border: 2px solid; + border-radius: 20px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +textbox { + background-color: @background; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-3/launcher.sh b/.config/rofi/launchers/type-3/launcher.sh new file mode 100755 index 0000000..ae97b5f --- /dev/null +++ b/.config/rofi/launchers/type-3/launcher.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Rofi : Launcher (Modi Drun, Run, File Browser, Window) +# +## Available Styles +# +## style-1 style-2 style-3 style-4 style-5 +## style-6 style-7 style-8 style-9 style-10 + +dir="$HOME/.config/rofi/launchers/type-3" +theme='style-10' + +## Run +rofi \ + -show drun \ + -theme ${dir}/${theme}.rasi diff --git a/.config/rofi/launchers/type-3/shared/colors.rasi b/.config/rofi/launchers/type-3/shared/colors.rasi new file mode 100644 index 0000000..103ad63 --- /dev/null +++ b/.config/rofi/launchers/type-3/shared/colors.rasi @@ -0,0 +1,18 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + * + * Available Colors Schemes + * + * adapta catppuccin everforest navy paper + * arc cyberpunk gruvbox nord solarized + * black dracula lovelace onedark yousai + * + **/ + +/* Import color-scheme from `colors` directory */ + +@import "~/.config/rofi/colors/onedark.rasi" diff --git a/.config/rofi/launchers/type-3/shared/fonts.rasi b/.config/rofi/launchers/type-3/shared/fonts.rasi new file mode 100644 index 0000000..50499c9 --- /dev/null +++ b/.config/rofi/launchers/type-3/shared/fonts.rasi @@ -0,0 +1,12 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Fonts + * + **/ + +* { + font: "Iosevka Nerd Font 10"; +} diff --git a/.config/rofi/launchers/type-3/style-1.rasi b/.config/rofi/launchers/type-3/style-1.rasi new file mode 100644 index 0000000..3688452 --- /dev/null +++ b/.config/rofi/launchers/type-3/style-1.rasi @@ -0,0 +1,172 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 750px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 12px; + border-color: @selected; + background-color: black / 10%; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 15px; + border: 0px solid; + border-radius: 10px; + border-color: @selected; + background-color: white / 5%; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: transparent; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: transparent; + text-color: inherit; +} +entry { + enabled: true; + background-color: transparent; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 5; + lines: 3; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 20px 10px; + border: 0px solid; + border-radius: 10px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + background-color: white / 5%; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 64px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 15px; + border: 2px solid; + border-radius: 10px; + border-color: @selected; + background-color: black / 10%; + text-color: @foreground; +} +textbox { + background-color: transparent; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-3/style-10.rasi b/.config/rofi/launchers/type-3/style-10.rasi new file mode 100644 index 0000000..3344d36 --- /dev/null +++ b/.config/rofi/launchers/type-3/style-10.rasi @@ -0,0 +1,175 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 40px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px 500px 0px 0px; + padding: 12px; + border: 0px 0px 0px 4px; + border-radius: 0px 100% 100% 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 7; + lines: 3; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 15px 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + border: 0px 0px 0px 4px; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 64px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 40px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + text-color: @foreground; +} +textbox { + background-color: transparent; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-3/style-2.rasi b/.config/rofi/launchers/type-3/style-2.rasi new file mode 100644 index 0000000..3a22461 --- /dev/null +++ b/.config/rofi/launchers/type-3/style-2.rasi @@ -0,0 +1,173 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 100px; + margin: 0px; + padding: 100px 225px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0% 25%; + padding: 18px; + border: 0px solid; + border-radius: 10px; + border-color: @selected; + background-color: white / 5%; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: transparent; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: transparent; + text-color: inherit; +} +entry { + enabled: true; + background-color: transparent; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 8; + lines: 4; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 35px 10px; + border: 0px solid; + border-radius: 15px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + background-color: white / 5%; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 72px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 100px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + text-color: @foreground; +} +textbox { + background-color: transparent; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-3/style-3.rasi b/.config/rofi/launchers/type-3/style-3.rasi new file mode 100644 index 0000000..c604a4b --- /dev/null +++ b/.config/rofi/launchers/type-3/style-3.rasi @@ -0,0 +1,173 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 100px; + margin: 0px; + padding: 100px 225px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0% 28%; + padding: 10px; + border: 1px solid; + border-radius: 6px; + border-color: white / 25%; + background-color: white / 5%; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: transparent; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: transparent; + text-color: inherit; +} +entry { + enabled: true; + background-color: transparent; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 7; + lines: 4; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 35px 10px; + border: 0px solid; + border-radius: 15px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + background-color: white / 5%; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 72px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 100px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + text-color: @foreground; +} +textbox { + background-color: transparent; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-3/style-4.rasi b/.config/rofi/launchers/type-3/style-4.rasi new file mode 100644 index 0000000..db9386b --- /dev/null +++ b/.config/rofi/launchers/type-3/style-4.rasi @@ -0,0 +1,175 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 750px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 12px; + border: 1px solid; + border-radius: 4px; + border-color: @selected; + background-color: @background; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 3; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 20px 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + border: 1px solid; + border-radius: 4px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 64px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 10px; + border: 1px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + text-color: @foreground; +} +textbox { + background-color: transparent; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-3/style-5.rasi b/.config/rofi/launchers/type-3/style-5.rasi new file mode 100644 index 0000000..01b6d47 --- /dev/null +++ b/.config/rofi/launchers/type-3/style-5.rasi @@ -0,0 +1,175 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: north; + anchor: north; + fullscreen: false; + width: 750px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 1px solid; + border-radius: 4px; + border-color: @selected; + background-color: @background; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 7; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: horizontal; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + border: 1px solid; + border-radius: 4px; + border-color: @selected; + background-color: @background; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + text-color: @foreground; +} +textbox { + background-color: transparent; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-3/style-6.rasi b/.config/rofi/launchers/type-3/style-6.rasi new file mode 100644 index 0000000..1c6c33b --- /dev/null +++ b/.config/rofi/launchers/type-3/style-6.rasi @@ -0,0 +1,174 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 500px; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 20px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + text-color: @foreground; + children: [ "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 1; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + margin: 0px; + padding: 20px 10px; + border: 0px solid; + border-radius: 20px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 128px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + text-color: @foreground; +} +textbox { + background-color: transparent; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-3/style-7.rasi b/.config/rofi/launchers/type-3/style-7.rasi new file mode 100644 index 0000000..b516c5f --- /dev/null +++ b/.config/rofi/launchers/type-3/style-7.rasi @@ -0,0 +1,176 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: west; + anchor: west; + fullscreen: false; + width: 600px; + height: 100%; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 40px 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 12px 16px; + border: 0px 0px 2px 0px; + border-radius: 100%; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search Apps"; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 5; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + border: 0px 0px 2px 0px; + border-radius: 12px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 64px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + text-color: @foreground; +} +textbox { + background-color: transparent; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-3/style-8.rasi b/.config/rofi/launchers/type-3/style-8.rasi new file mode 100644 index 0000000..d9bb6de --- /dev/null +++ b/.config/rofi/launchers/type-3/style-8.rasi @@ -0,0 +1,175 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: west; + anchor: west; + fullscreen: false; + width: 500px; + x-offset: 20px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 30px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 12px 16px; + border: 0px 0px 2px 0px; + border-radius: 100%; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search Apps"; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 4; + lines: 4; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + border: 0px 0px 2px 0px; + border-radius: 12px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 64px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + text-color: @foreground; +} +textbox { + background-color: transparent; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-3/style-9.rasi b/.config/rofi/launchers/type-3/style-9.rasi new file mode 100644 index 0000000..dbf1a4e --- /dev/null +++ b/.config/rofi/launchers/type-3/style-9.rasi @@ -0,0 +1,176 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + drun-display-format: "{name}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: east; + anchor: east; + fullscreen: false; + width: 180px; + height: 100%; + x-offset: 0px; + y-offset: 0px; + + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: @background; + cursor: "default"; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 30px 20px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @selected; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 12px 16px; + border: 0px 0px 2px 0px; + border-radius: 4px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @selected; + border-radius: 0px; + background-color: @background-alt; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px 10px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: transparent; + text-color: @foreground; + orientation: vertical; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: @foreground; +} +element selected.normal { + border: 0px 0px 2px 0px; + border-radius: 4px; + border-color: @selected; + background-color: @background-alt; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 64px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + border: 0px solid; + border-radius: 0px; + border-color: @selected; + background-color: black / 10%; + text-color: @foreground; +} +textbox { + background-color: transparent; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; +} diff --git a/.config/rofi/launchers/type-4/launcher.sh b/.config/rofi/launchers/type-4/launcher.sh new file mode 100755 index 0000000..6572cda --- /dev/null +++ b/.config/rofi/launchers/type-4/launcher.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Rofi : Launcher (Modi Drun, Run, File Browser, Window) +# +## Available Styles +# +## style-1 style-2 style-3 style-4 style-5 +## style-6 style-7 style-8 style-9 style-10 + +dir="$HOME/.config/rofi/launchers/type-4" +theme='style-1' + +## Run +rofi \ + -show drun \ + -theme ${dir}/${theme}.rasi diff --git a/.config/rofi/launchers/type-4/shared/colors.rasi b/.config/rofi/launchers/type-4/shared/colors.rasi new file mode 100644 index 0000000..103ad63 --- /dev/null +++ b/.config/rofi/launchers/type-4/shared/colors.rasi @@ -0,0 +1,18 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Colors + * + * Available Colors Schemes + * + * adapta catppuccin everforest navy paper + * arc cyberpunk gruvbox nord solarized + * black dracula lovelace onedark yousai + * + **/ + +/* Import color-scheme from `colors` directory */ + +@import "~/.config/rofi/colors/onedark.rasi" diff --git a/.config/rofi/launchers/type-4/shared/fonts.rasi b/.config/rofi/launchers/type-4/shared/fonts.rasi new file mode 100644 index 0000000..50499c9 --- /dev/null +++ b/.config/rofi/launchers/type-4/shared/fonts.rasi @@ -0,0 +1,12 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Fonts + * + **/ + +* { + font: "Iosevka Nerd Font 10"; +} diff --git a/.config/rofi/launchers/type-4/style-1.rasi b/.config/rofi/launchers/type-4/style-1.rasi new file mode 100644 index 0000000..1aaa5b9 --- /dev/null +++ b/.config/rofi/launchers/type-4/style-1.rasi @@ -0,0 +1,274 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser"; + show-icons: false; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 1px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + background-color: @background-colour; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px 0px 1px 0px; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-4/style-10.rasi b/.config/rofi/launchers/type-4/style-10.rasi new file mode 100644 index 0000000..b4ec747 --- /dev/null +++ b/.config/rofi/launchers/type-4/style-10.rasi @@ -0,0 +1,284 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: false; + display-drun: " Apps"; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: north; + anchor: north; + fullscreen: false; + width: 100%; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + background-color: @background-colour; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 5px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "prompt", "entry", "listview" ]; + orientation: horizontal; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + padding: 5px 10px; + border: 0px; + border-radius: 100%; + border-color: @border-colour; + background-color: @border-colour; + text-color: @background-colour; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + padding: 5px 10px; + width: 200px; + border-radius: 100%; + background-color: @alternate-background; + text-color: @foreground-colour; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + lines: 100; + cycle: true; + dynamic: true; + scrollbar: false; + layout: horizontal; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 5px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px 10px; + border: 0px solid; + border-radius: 100%; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-4/style-2.rasi b/.config/rofi/launchers/type-4/style-2.rasi new file mode 100644 index 0000000..78ad79e --- /dev/null +++ b/.config/rofi/launchers/type-4/style-2.rasi @@ -0,0 +1,274 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: false; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 1px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + background-color: @background-colour; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 5px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px 0px 1px dash 0px; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 12; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-4/style-3.rasi b/.config/rofi/launchers/type-4/style-3.rasi new file mode 100644 index 0000000..3f24a03 --- /dev/null +++ b/.config/rofi/launchers/type-4/style-3.rasi @@ -0,0 +1,274 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + background-color: @background-colour; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 50px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px 0px 2px dash 0px; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 12; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(alternate-background); + text-color: var(selected-normal-background); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-4/style-4.rasi b/.config/rofi/launchers/type-4/style-4.rasi new file mode 100644 index 0000000..e84ec56 --- /dev/null +++ b/.config/rofi/launchers/type-4/style-4.rasi @@ -0,0 +1,274 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + background-color: @background-colour; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 30px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px 0px 10px 10px; + border: 0px; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: ""; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 12; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(alternate-background); + text-color: var(foreground-colour); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-4/style-5.rasi b/.config/rofi/launchers/type-4/style-5.rasi new file mode 100644 index 0000000..70e602d --- /dev/null +++ b/.config/rofi/launchers/type-4/style-5.rasi @@ -0,0 +1,279 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: "drun"; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + background-color: @background-colour; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px 0px 1px 0px; + border-radius: 0px; + border-color: @alternate-background; + background-color: @background-colour; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + padding: 15px; + border: 0px 1px 0px 0px; + border-radius: 0px; + border-color: @alternate-background; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + padding: 15px; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: ""; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px 15px; + border: 0px 0px 1px 0px; + border-radius: 0px; + border-color: @alternate-background; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(alternate-background); + text-color: var(foreground-colour); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-4/style-6.rasi b/.config/rofi/launchers/type-4/style-6.rasi new file mode 100644 index 0000000..6034b34 --- /dev/null +++ b/.config/rofi/launchers/type-4/style-6.rasi @@ -0,0 +1,275 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: "drun :"; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + background-color: @background-colour; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 35%; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; + children: [ "prompt", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: ""; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 12; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(alternate-background); + text-color: var(foreground-colour); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 100px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-4/style-7.rasi b/.config/rofi/launchers/type-4/style-7.rasi new file mode 100644 index 0000000..9cdc9c1 --- /dev/null +++ b/.config/rofi/launchers/type-4/style-7.rasi @@ -0,0 +1,277 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: "drun :"; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: true; + width: 1366px; + height: 768px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + background-color: @background-colour; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 0px; + padding: 25% 35%; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 20px; + border: 0px; + border-radius: 20px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + children: [ "entry" ]; +} + +prompt { + enabled: true; + background-color: transparent; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: "::"; + background-color: transparent; + text-color: inherit; +} +entry { + enabled: true; + background-color: transparent; + text-color: inherit; + cursor: text; + placeholder: "Type here to search for apps"; + placeholder-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 12; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 30px; + border: 0px solid; + border-radius: 20px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 8px; + border: 0px solid; + border-radius: 12px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: white / 5%; + text-color: var(foreground-colour); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: transparent; + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 10px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 100px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @alternate-background; + text-color: @foreground-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-4/style-8.rasi b/.config/rofi/launchers/type-4/style-8.rasi new file mode 100644 index 0000000..75178de --- /dev/null +++ b/.config/rofi/launchers/type-4/style-8.rasi @@ -0,0 +1,274 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser"; + show-icons: false; + display-drun: "drun"; + display-run: "run"; + display-filebrowser: "files"; + display-window: "windows"; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + background-color: @background-colour; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 40px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 0px 5px; + border: 0px; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; + children: [ "prompt", "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ":"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 3; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-background); + text-color: var(urgent-foreground); +} +element normal.active { + background-color: var(active-background); + text-color: var(active-foreground); +} +element selected.normal { + background-color: var(selected-normal-foreground); + text-color: var(selected-normal-background); +} +element selected.urgent { + background-color: var(selected-urgent-background); + text-color: var(selected-urgent-foreground); +} +element selected.active { + background-color: var(selected-active-background); + text-color: var(selected-active-foreground); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-background); + text-color: var(alternate-urgent-foreground); +} +element alternate.active { + background-color: var(alternate-active-background); + text-color: var(alternate-active-foreground); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(alternate-background); + text-color: var(selected-normal-background); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @border-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 20px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-4/style-9.rasi b/.config/rofi/launchers/type-4/style-9.rasi new file mode 100644 index 0000000..73f73c0 --- /dev/null +++ b/.config/rofi/launchers/type-4/style-9.rasi @@ -0,0 +1,274 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: false; + display-drun: "drun"; + display-run: "run"; + display-filebrowser: "files"; + display-window: "windows"; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +@import "shared/colors.rasi" +@import "shared/fonts.rasi" + +* { + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + selected-normal-background: var(selected); + selected-normal-foreground: var(background); + selected-urgent-background: var(active); + selected-urgent-foreground: var(background); + selected-active-background: var(urgent); + selected-active-foreground: var(background); + alternate-normal-background: var(background); + alternate-normal-foreground: var(foreground); + alternate-urgent-background: var(urgent); + alternate-urgent-foreground: var(background); + alternate-active-background: var(active); + alternate-active-foreground: var(background); +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + cursor: "default"; + background-color: @background-colour; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 40px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px 5px; + border: 0px 0px 1px 0px; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; + children: [ "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ":"; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "search..."; + placeholder-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: true; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: "default"; +} +scrollbar { + handle-width: 1px ; + handle-color: @handle-colour; + border-radius: 0px; + background-color: @alternate-background; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 2px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; + cursor: pointer; +} +element normal.normal { + background-color: var(normal-background); + text-color: var(normal-foreground); +} +element normal.urgent { + background-color: var(urgent-foreground); + text-color: var(urgent-background); +} +element normal.active { + background-color: var(active-foreground); + text-color: var(active-background); +} +element selected.normal { + background-color: var(selected-normal-foreground); + text-color: var(selected-normal-background); +} +element selected.urgent { + background-color: var(selected-urgent-foreground); + text-color: var(selected-urgent-background); +} +element selected.active { + background-color: var(selected-active-foreground); + text-color: var(selected-active-background); +} +element alternate.normal { + background-color: var(alternate-normal-background); + text-color: var(alternate-normal-foreground); +} +element alternate.urgent { + background-color: var(alternate-urgent-foreground); + text-color: var(alternate-urgent-background); +} +element alternate.active { + background-color: var(alternate-active-foreground); + text-color: var(alternate-active-background); +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +button { + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: var(selected-normal-background); + text-color: var(selected-normal-foreground); +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: @border-colour; + background-color: transparent; + text-color: @foreground-colour; +} +textbox { + padding: 5px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @border-colour; + vertical-align: 0.5; + horizontal-align: 0.0; + highlight: none; + placeholder-color: @foreground-colour; + blink: true; + markup: true; +} +error-message { + padding: 30px; + border: 0px solid; + border-radius: 0px; + border-color: @border-colour; + background-color: @background-colour; + text-color: @foreground-colour; +} diff --git a/.config/rofi/launchers/type-5/launcher.sh b/.config/rofi/launchers/type-5/launcher.sh new file mode 100755 index 0000000..e9d0a3a --- /dev/null +++ b/.config/rofi/launchers/type-5/launcher.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Rofi : Launcher (Modi Drun, Run, File Browser, Window) +# +## Available Styles +# +## style-1 style-2 style-3 style-4 style-5 + +dir="$HOME/.config/rofi/launchers/type-5" +theme='style-1' + +## Run +rofi \ + -show drun \ + -theme ${dir}/${theme}.rasi diff --git a/.config/rofi/launchers/type-5/style-1.rasi b/.config/rofi/launchers/type-5/style-1.rasi new file mode 100644 index 0000000..21d8cba --- /dev/null +++ b/.config/rofi/launchers/type-5/style-1.rasi @@ -0,0 +1,190 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: false; + display-drun: "Applications"; + drun-display-format: ">> {name} [({generic})]"; +} + +/*****----- Global Properties -----*****/ +* { + font: "Grape Nuts 14"; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 860px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: black; + cursor: "default"; + background-image: url("~/.config/rofi/images/paper.png", none); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 8px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px 0px 0px 0px; + border-color: black; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 95px 0px 0px 0px; + padding: 0px 30px; + border: 0px; + border-radius: 0px; + border-color: #D79290; + background-color: transparent; + text-color: black; + children: [ "prompt", "entry", "num-filtered-rows", "textbox-num-sep", "num-rows" ]; +} + +prompt { + enabled: true; + font: "Grape Nuts Bold 14"; + background-color: transparent; + text-color: inherit; +} +entry { + enabled: true; + expand: true; + padding: 0px 10px 0px 40px; + background-color: transparent; + text-color: inherit; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; +} +num-filtered-rows { + enabled: true; + expand: false; + background-color: transparent; + text-color: inherit; +} +textbox-num-sep { + enabled: true; + expand: false; + str: "/"; + background-color: transparent; + text-color: inherit; +} +num-rows { + enabled: true; + expand: false; + background-color: transparent; + text-color: inherit; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 15; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 4px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: black; + background-color: transparent; + text-color: black; + cursor: "default"; +} +scrollbar { + handle-width: 5px ; + handle-color: black; + border-radius: 0px; + background-color: transparent; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px 0px 0px 100px; + border: 0px solid; + border-radius: 0px; + border-color: black; + background-color: transparent; + text-color: black; + cursor: pointer; +} +element normal.normal { + background-color: transparent; + text-color: black; +} +element selected.normal { + background-color: transparent; + text-color: #D76A67; +} +element alternate.normal { + background-color: transparent; + text-color: black; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + highlight: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + border: 0px solid; + border-radius: 0px; + border-color: black; + background-color: white; + text-color: black; +} +textbox { + vertical-align: 0.5; + horizontal-align: 0.0; +} diff --git a/.config/rofi/launchers/type-5/style-2.rasi b/.config/rofi/launchers/type-5/style-2.rasi new file mode 100644 index 0000000..185718f --- /dev/null +++ b/.config/rofi/launchers/type-5/style-2.rasi @@ -0,0 +1,177 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}\n[({generic})]"; + window-format: "Class : {c}\nWorkspace : {w}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "Iosevka Nerd Font 10"; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border-radius: 12px; + cursor: "default"; + background-image: url("~/.config/rofi/images/gradient.png", width); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + margin: 40px; + padding: 40px; + border-radius: 12px; + background-color: white/50%; + children: [ "inputbar", "mode-switcher", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px 10%; + padding: 0px 0px 10px 0px; + border: 0px 0px 2px 0px; + border-radius: 0px; + border-color: gray/20%; + background-color: transparent; + children: [ "entry" ]; +} + +entry { + enabled: true; + background-color: transparent; + text-color: gray; + cursor: text; + placeholder: "Type to filter"; + placeholder-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 3; + lines: 3; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 40px; + margin: 0px; + padding: 20px 0px 0px 0px; + border: 0px solid; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 15px; + border: 1px solid; + border-radius: 8px; + border-color: gray/30%; + background-color: white; + text-color: black; + cursor: pointer; +} +element normal.active { + background-color: #67FF80; + text-color: black; +} +element selected.normal { + background-color: #FDD66F; + text-color: black; +} +element selected.active { + background-color: #FF7F7C; + text-color: black; +} +element-icon { + background-color: transparent; + size: 48px; + cursor: inherit; +} +element-text { + background-color: inherit; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + expand: false; + spacing: 20px; + margin: 0px 10%; + background-color: transparent; + text-color: white; +} +button { + font: "Iosevka Nerd Font Bold 10"; + padding: 6px; + border: 0px solid; + border-radius: 100%; + background-color: #719DF9; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: #F37277; + text-color: inherit; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + background-color: transparent; + text-color: black; +} +textbox { + padding: 20px; + border-radius: 12px; + background-color: white/30%; + text-color: black; + vertical-align: 0.5; + horizontal-align: 0.0; +} diff --git a/.config/rofi/launchers/type-5/style-3.rasi b/.config/rofi/launchers/type-5/style-3.rasi new file mode 100644 index 0000000..b1563a4 --- /dev/null +++ b/.config/rofi/launchers/type-5/style-3.rasi @@ -0,0 +1,179 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,filebrowser,window"; + show-icons: true; + display-drun: "Apps"; + display-run: "Run"; + display-filebrowser: "Files"; + display-window: "Windows"; + drun-display-format: "{name}\n[({generic})]"; + window-format: "Class : {c}\nWorkspace : {w}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "Iosevka Nerd Font 10"; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 500px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border-radius: 10px; + cursor: "default"; + background-color: white; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 15px; + padding: 30px; + background-color: transparent; + children: [ "inputbar", "mode-switcher", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 15px; + margin: 0px; + background-color: transparent; + children: [ "textbox-prompt-colon", "entry" ]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + padding: 12px 16px; + border: 0px; + border-radius: 10px; + border-color: gray/30%; + background-color: gray/15%; + text-color: black; + str: ""; +} +entry { + enabled: true; + padding: 12px 16px; + border: 0px; + border-radius: 10px; + border-color: gray/30%; + background-color: gray/15%; + text-color: black; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 5; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 10px; + border: 0px solid; + border-radius: 10px; + background-color: transparent; + text-color: black; + cursor: pointer; +} +element normal.active { + background-image: linear-gradient(to right, #19B466, #7BF4B7); + text-color: black; +} +element selected.normal { + border-radius: 10px; + background-image: linear-gradient(to right, #FF9030, #FFC99B); + text-color: black; +} +element selected.active { + background-image: linear-gradient(to right, #EA5553, #EAACAB); + text-color: black; +} +element-icon { + background-color: transparent; + size: 48px; + cursor: inherit; +} +element-text { + background-color: inherit; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + expand: false; + spacing: 15px; + background-color: transparent; +} +button { + font: "Iosevka Nerd Font Bold 10"; + padding: 10px; + border-radius: 100%; + background-image: linear-gradient(to right, #C03FF2, #EEC2FF); + text-color: white; + cursor: pointer; +} +button selected { + background-image: linear-gradient(to right, #44A2F0, #BDDDF8); + text-color: black; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + background-color: white; + text-color: black; +} +textbox { + padding: 0px; + border-radius: 0px; + text-color: black; + vertical-align: 0.5; + horizontal-align: 0.0; +} diff --git a/.config/rofi/launchers/type-5/style-4.rasi b/.config/rofi/launchers/type-5/style-4.rasi new file mode 100644 index 0000000..bc1e59d --- /dev/null +++ b/.config/rofi/launchers/type-5/style-4.rasi @@ -0,0 +1,185 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} {c} {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "Iosevka Nerd Font 10"; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border-radius: 20px; + cursor: "default"; + background-color: #22272C; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 25px; + padding: 50px; + background-color: transparent; + children: [ "inputbar", "message","listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px 200px; + padding: 5px; + border: 1px; + border-radius: 100%; + border-color: gray/25%; + background-color: transparent; + children: [ "textbox-prompt-colon", "entry" ]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + padding: 8px 11px; + border-radius: 100%; + background-color: white; + text-color: black; + str: ""; +} +entry { + enabled: true; + padding: 8px 12px; + border: 0px; + background-color: transparent; + text-color: white; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px; + border: 0px; + border-radius: 100%; + border-color: gray/15%; + background-color: transparent; + text-color: gray; + cursor: pointer; +} +element normal.active { + background-image: linear-gradient(to right, #4C4F52, #2E343B); + text-color: #19B466; +} +element selected.normal { + background-image: linear-gradient(to right, #4C4F52, #2E343B); + text-color: #FF9030; +} +element selected.active { + background-image: linear-gradient(to right, #4C4F52, #2E343B); + text-color: #EA5553; +} +element-icon { + background-color: transparent; + size: 24px; + cursor: inherit; +} +element-text { + background-color: inherit; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + expand: false; + spacing: 0px; + margin: 0px 200px; + padding: 12px; + border-radius: 100%; + background-color: #2E343B; +} +button { + background-color: inherit; + text-color: white; + cursor: pointer; +} +button selected { + background-color: inherit; + text-color: #FF9030; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + background-color: #22272C; + text-color: white; +} +message { + padding: 0px; + background-color: inherit; + text-color: #FF9030; +} +textbox { + padding: 0px; + border-radius: 0px; + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} diff --git a/.config/rofi/launchers/type-5/style-5.rasi b/.config/rofi/launchers/type-5/style-5.rasi new file mode 100644 index 0000000..60e4e22 --- /dev/null +++ b/.config/rofi/launchers/type-5/style-5.rasi @@ -0,0 +1,163 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name} [({generic})]"; + window-format: "{w} {c} {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "Iosevka Nerd Font 10"; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + margin: 0px; + padding: 0px; + border-radius: 20px; + cursor: "default"; + background-color: #162022; + background-image: url("~/.config/rofi/images/flowers-1.png", width); +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 20px; + padding: 40px; + background-color: transparent; + children: [ "inputbar", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + margin: 0px 200px 0px 0px; + padding: 25px; + border: 2px; + border-radius: 20px; + border-color: white; + background-image: url("~/.config/rofi/images/flowers-3.png", none); + children: [ "textbox-prompt-colon", "entry" ]; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + padding: 8px 11px; + border-radius: 8px; + background-color: white; + text-color: black; + str: ""; +} +entry { + enabled: true; + padding: 8px 12px; + border: 0px; + background-color: transparent; + text-color: white; + cursor: text; + placeholder: "Search..."; + placeholder-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + margin: 0px 200px 0px 0px; + padding: 10px; + border: 2px; + border-radius: 20px; + border-color: white; + background-image: url("~/.config/rofi/images/flowers-2.png", width); + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + margin: 0px; + padding: 5px 10px; + border: 0px; + border-radius: 18px; + border-color: white; + background-color: transparent; + text-color: #162022; + cursor: pointer; +} +element selected.normal { + background-color: #162022; + text-color: white; +} +element-icon { + background-color: transparent; + size: 32px; + cursor: inherit; +} +element-text { + background-color: inherit; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +error-message { + padding: 20px; + background-color: transparent; + text-color: white; +} +message { + padding: 0px; + background-color: inherit; + text-color: #FF9030; +} +textbox { + padding: 0px; + border-radius: 0px; + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} diff --git a/.config/rofi/launchers/type-6/launcher.sh b/.config/rofi/launchers/type-6/launcher.sh new file mode 100755 index 0000000..c0b4d33 --- /dev/null +++ b/.config/rofi/launchers/type-6/launcher.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Rofi : Launcher (Modi Drun, Run, File Browser, Window) +# +## Available Styles +# +## style-1 style-2 style-3 style-4 style-5 +## style-6 style-7 style-8 style-9 style-10 + +dir="$HOME/.config/rofi/launchers/type-6" +theme='style-1' + +## Run +rofi \ + -show drun \ + -theme ${dir}/${theme}.rasi diff --git a/.config/rofi/launchers/type-6/style-1.rasi b/.config/rofi/launchers/type-6/style-1.rasi new file mode 100644 index 0000000..198a4e0 --- /dev/null +++ b/.config/rofi/launchers/type-6/style-1.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #201A41; + background-alt: #392684; + foreground: #FFFFFF; + selected: #F801E8; + active: #00CCF5; + urgent: #8D0083; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/a.png", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-6/style-10.rasi b/.config/rofi/launchers/type-6/style-10.rasi new file mode 100644 index 0000000..07c375d --- /dev/null +++ b/.config/rofi/launchers/type-6/style-10.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #11092D; + background-alt: #281657; + foreground: #FFFFFF; + selected: #DF5296; + active: #6E77FF; + urgent: #8E3596; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/j.jpg", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-6/style-2.rasi b/.config/rofi/launchers/type-6/style-2.rasi new file mode 100644 index 0000000..66a1de6 --- /dev/null +++ b/.config/rofi/launchers/type-6/style-2.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #180F39; + background-alt: #32197D; + foreground: #FFFFFF; + selected: #FF00F1; + active: #9878FF; + urgent: #7D0075; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/b.png", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-6/style-3.rasi b/.config/rofi/launchers/type-6/style-3.rasi new file mode 100644 index 0000000..a623e2f --- /dev/null +++ b/.config/rofi/launchers/type-6/style-3.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #09164C; + background-alt: #102886; + foreground: #FFFFFF; + selected: #FA00E9; + active: #3860FF; + urgent: #BB00AF; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/c.png", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-6/style-4.rasi b/.config/rofi/launchers/type-6/style-4.rasi new file mode 100644 index 0000000..ddf2be1 --- /dev/null +++ b/.config/rofi/launchers/type-6/style-4.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #2D1B14; + background-alt: #462D23; + foreground: #FFFFFF; + selected: #E25F3E; + active: #7B6C5B; + urgent: #934A1C; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/d.png", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-6/style-5.rasi b/.config/rofi/launchers/type-6/style-5.rasi new file mode 100644 index 0000000..afc90fb --- /dev/null +++ b/.config/rofi/launchers/type-6/style-5.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #231419; + background-alt: #2D1E23; + foreground: #FFFFFF; + selected: #426647; + active: #2E3F34; + urgent: #D08261; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/e.jpg", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-6/style-6.rasi b/.config/rofi/launchers/type-6/style-6.rasi new file mode 100644 index 0000000..7056c85 --- /dev/null +++ b/.config/rofi/launchers/type-6/style-6.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #D0D0D0; + background-alt: #E9E9E9; + foreground: #161616; + selected: #BEBEBE; + active: #999999; + urgent: #808080; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/f.png", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-6/style-7.rasi b/.config/rofi/launchers/type-6/style-7.rasi new file mode 100644 index 0000000..77eed40 --- /dev/null +++ b/.config/rofi/launchers/type-6/style-7.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #101010; + background-alt: #252525; + foreground: #FFFFFF; + selected: #505050; + active: #909090; + urgent: #707070; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/g.png", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-6/style-8.rasi b/.config/rofi/launchers/type-6/style-8.rasi new file mode 100644 index 0000000..235dad7 --- /dev/null +++ b/.config/rofi/launchers/type-6/style-8.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #030B16; + background-alt: #0A1B37; + foreground: #FFFFFF; + selected: #CB43A6; + active: #095873; + urgent: #2FC6D8; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/h.jpg", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-6/style-9.rasi b/.config/rofi/launchers/type-6/style-9.rasi new file mode 100644 index 0000000..e30583f --- /dev/null +++ b/.config/rofi/launchers/type-6/style-9.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOW"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #131D1F; + background-alt: #183A43; + foreground: #FFFFFF; + selected: #649094; + active: #E9CC9D; + urgent: #FEA861; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/images/i.jpg", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-7/launcher.sh b/.config/rofi/launchers/type-7/launcher.sh new file mode 100755 index 0000000..aa45aa9 --- /dev/null +++ b/.config/rofi/launchers/type-7/launcher.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Rofi : Launcher (Modi Drun, Run, File Browser, Window) +# +## Available Styles +# +## style-1 style-2 style-3 style-4 style-5 +## style-6 style-7 style-8 style-9 style-10 + +dir="$HOME/.config/rofi/launchers/type-7" +theme='style-1' + +## Run +rofi \ + -show drun \ + -theme ${dir}/${theme}.rasi diff --git a/.config/rofi/launchers/type-7/style-1.rasi b/.config/rofi/launchers/type-7/style-1.rasi new file mode 100644 index 0000000..092f4f8 --- /dev/null +++ b/.config/rofi/launchers/type-7/style-1.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #11092D; + background-alt: #281657; + foreground: #FFFFFF; + selected: #DF5296; + active: #6E77FF; + urgent: #8E3596; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 700px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 20px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 80px 60px; + background-color: transparent; + background-image: url("~/.config/rofi/images/a.png", width); + text-color: @foreground; + orientation: horizontal; + children: [ "textbox-prompt-colon", "entry", "dummy", "mode-switcher" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 12px 15px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + width: 250px; + padding: 12px 16px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} +dummy { + expand: true; + background-color: transparent; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + background-color: transparent; + text-color: @foreground; +} +button { + width: 45px; + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 7; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + padding: 4px; + border-radius: 100%; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 12px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-7/style-10.rasi b/.config/rofi/launchers/type-7/style-10.rasi new file mode 100644 index 0000000..124df89 --- /dev/null +++ b/.config/rofi/launchers/type-7/style-10.rasi @@ -0,0 +1,207 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: false; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #11092D; + background-alt: #281657; + foreground: #FFFFFF; + selected: #DF5296; + active: #6E77FF; + urgent: #8E3596; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: west; + anchor: west; + fullscreen: false; + width: 400px; + x-offset: 20px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 0px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox" ]; +} + +listbox { + spacing: 10px; + padding: 10px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 0px; + padding: 100px 40px; + background-color: transparent; + background-image: url("~/.config/rofi/images/j.jpg", width); + text-color: @foreground; + orientation: horizontal; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 8px 12px; + border: 0px 2px 2px 2px; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: inherit; +} +entry { + enabled: true; + expand: true; + padding: 8px 12px; + border: 2px 2px 0px 0px; + border-radius: 0px; + border-color: @selected; + background-color: @background-alt; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 8px; + border-radius: 0px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 5; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + padding: 8px; + border-radius: 0px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 8px; + border-radius: 0px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 8px; + border-radius: 0px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-7/style-2.rasi b/.config/rofi/launchers/type-7/style-2.rasi new file mode 100644 index 0000000..40a2375 --- /dev/null +++ b/.config/rofi/launchers/type-7/style-2.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "Apps"; + display-run: "Run"; + display-filebrowser: "Files"; + display-window: "Windows"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #180F39; + background-alt: #32197D; + foreground: #FFFFFF; + selected: #FF00F1; + active: #9878FF; + urgent: #7D0075; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 20px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 80px 60px; + background-color: transparent; + background-image: url("~/.config/rofi/images/b.png", width); + text-color: @foreground; + orientation: horizontal; + children: [ "textbox-prompt-colon", "entry", "dummy", "mode-switcher" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 12px 15px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + width: 300px; + padding: 12px 16px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} +dummy { + expand: true; + background-color: transparent; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + background-color: transparent; + text-color: @foreground; +} +button { + width: 80px; + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + padding: 4px; + border-radius: 100%; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 12px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-7/style-3.rasi b/.config/rofi/launchers/type-7/style-3.rasi new file mode 100644 index 0000000..6ac4900 --- /dev/null +++ b/.config/rofi/launchers/type-7/style-3.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #09164C; + background-alt: #102886; + foreground: #FFFFFF; + selected: #FA00E9; + active: #3860FF; + urgent: #BB00AF; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 10px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox" ]; +} + +listbox { + spacing: 15px; + padding: 15px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 100px 60px; + background-color: transparent; + background-image: url("~/.config/rofi/images/c.png", width); + text-color: @foreground; + orientation: horizontal; + children: [ "textbox-prompt-colon", "entry", "dummy", "mode-switcher" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 12px 15px; + border-radius: 12px; + background-color: @background-alt; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + width: 150px; + padding: 12px 16px; + border-radius: 12px; + background-color: @background-alt; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} +dummy { + expand: true; + background-color: transparent; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + background-color: transparent; + text-color: @foreground; +} +button { + width: 40px; + padding: 12px; + border-radius: 12px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 5; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + padding: 6px; + border-radius: 10px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 10px; + border-radius: 10px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 10px; + border-radius: 10px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-7/style-4.rasi b/.config/rofi/launchers/type-7/style-4.rasi new file mode 100644 index 0000000..9657878 --- /dev/null +++ b/.config/rofi/launchers/type-7/style-4.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #2D1B14; + background-alt: #462D23; + foreground: #FFFFFF; + selected: #E25F3E; + active: #7B6C5B; + urgent: #934A1C; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: west; + anchor: west; + fullscreen: false; + width: 500px; + height: 100%; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 0px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox", "mode-switcher" ]; +} + +listbox { + spacing: 15px; + padding: 15px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 40px 40px 155px; + background-color: transparent; + background-image: url("~/.config/rofi/images/d.png", width); + text-color: @foreground; + orientation: horizontal; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 12px 15px; + border-radius: 0px; + background-color: @background-alt; + text-color: inherit; +} +entry { + enabled: true; + expand: true; + padding: 12px 16px; + border-radius: 0px; + background-color: @background-alt; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} +dummy { + expand: true; + background-color: transparent; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + padding: 15px; + spacing: 10px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 12px; + border-radius: 0px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + padding: 8px; + border-radius: 0px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 24px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 12px; + border-radius: 0px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 12px; + border-radius: 0px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-7/style-5.rasi b/.config/rofi/launchers/type-7/style-5.rasi new file mode 100644 index 0000000..0edb39d --- /dev/null +++ b/.config/rofi/launchers/type-7/style-5.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,filebrowser,window"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #231419; + background-alt: #2D1E23; + foreground: #FFFFFF; + selected: #426647; + active: #2E3F34; + urgent: #D08261; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 600px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 20px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 80px 60px; + background-color: transparent; + background-image: url("~/.config/rofi/images/e.jpg", width); + text-color: @foreground; + orientation: horizontal; + children: [ "textbox-prompt-colon", "entry", "dummy", "mode-switcher" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 12px 15px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + width: 250px; + padding: 12px 16px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} +dummy { + expand: true; + background-color: transparent; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + background-color: transparent; + text-color: @foreground; +} +button { + width: 45px; + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 7; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + padding: 4px; + border-radius: 100%; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 12px; + border-radius: 20px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-7/style-6.rasi b/.config/rofi/launchers/type-7/style-6.rasi new file mode 100644 index 0000000..d500569 --- /dev/null +++ b/.config/rofi/launchers/type-7/style-6.rasi @@ -0,0 +1,210 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: true; + display-drun: "APPS"; + display-run: "RUN"; + display-filebrowser: "FILES"; + display-window: "WINDOWS"; + drun-display-format: "{name}"; + window-format: "{w} · {c}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #D0D0D0; + background-alt: #E9E9E9; + foreground: #161616; + selected: #BEBEBE; + active: #999999; + urgent: #808080; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 15px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 100px 60px; + background-color: transparent; + background-image: url("~/.config/rofi/images/f.png", width); + text-color: @foreground; + orientation: horizontal; + children: [ "textbox-prompt-colon", "entry", "dummy", "mode-switcher" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 12px 15px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + width: 300px; + padding: 12px 16px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} +dummy { + expand: true; + background-color: transparent; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + background-color: transparent; + text-color: @foreground; +} +button { + width: 80px; + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 3; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + padding: 10px; + border-radius: 15px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; + orientation: vertical; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 64px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 15px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 15px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-7/style-7.rasi b/.config/rofi/launchers/type-7/style-7.rasi new file mode 100644 index 0000000..98d135b --- /dev/null +++ b/.config/rofi/launchers/type-7/style-7.rasi @@ -0,0 +1,203 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: false; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #101010; + background-alt: #252525; + foreground: #FFFFFF; + selected: #505050; + active: #909090; + urgent: #707070; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 400px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 20px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview", "mode-switcher" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 100px 40px; + background-color: transparent; + background-image: url("~/.config/rofi/images/g.png", width); + text-color: @foreground; + orientation: horizontal; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 12px 15px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; +} +entry { + enabled: true; + expand: true; + padding: 12px 16px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + background-color: transparent; + text-color: @foreground; +} +button { + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 1; + lines: 5; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + padding: 12px; + border-radius: 100%; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 15px; + border-radius: 0px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-7/style-8.rasi b/.config/rofi/launchers/type-7/style-8.rasi new file mode 100644 index 0000000..0ed4797 --- /dev/null +++ b/.config/rofi/launchers/type-7/style-8.rasi @@ -0,0 +1,209 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,run,filebrowser,window"; + show-icons: false; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #030B16; + background-alt: #0A1B37; + foreground: #FFFFFF; + selected: #CB43A6; + active: #095873; + urgent: #2FC6D8; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 800px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 30px 5px 30px 5px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 100px 60px; + background-color: transparent; + background-image: url("~/.config/rofi/images/h.jpg", width); + text-color: @foreground; + orientation: horizontal; + children: [ "textbox-prompt-colon", "entry", "dummy", "mode-switcher" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 12px 15px; + border-radius: 15px 5px 15px 5px; + background-color: @background-alt; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + width: 250px; + padding: 12px 16px; + border-radius: 5px 15px 5px 15px; + background-color: @background-alt; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} +dummy { + expand: true; + background-color: transparent; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + background-color: transparent; + text-color: @foreground; +} +button { + width: 45px; + padding: 12px; + border-radius: 15px 5px 15px 5px; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 2; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 10px; + padding: 12px; + border-radius: 15px 5px 15px 5px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 12px; + border-radius: 15px 5px 15px 5px; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 12px; + border-radius: 0px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/launchers/type-7/style-9.rasi b/.config/rofi/launchers/type-7/style-9.rasi new file mode 100644 index 0000000..ff3bf0a --- /dev/null +++ b/.config/rofi/launchers/type-7/style-9.rasi @@ -0,0 +1,210 @@ +/** + * + * Author : Aditya Shakya (adi1090x) + * Github : @adi1090x + * + * Rofi Theme File + * Rofi Version: 1.7.3 + **/ + +/*****----- Configuration -----*****/ +configuration { + modi: "drun,filebrowser,window"; + show-icons: true; + display-drun: ""; + display-run: ""; + display-filebrowser: ""; + display-window: ""; + drun-display-format: "{name}"; + window-format: "{w}: {c}"; +} + +/*****----- Global Properties -----*****/ +* { + font: "JetBrains Mono Nerd Font 10"; + background: #131D1F; + background-alt: #183A43; + foreground: #FFFFFF; + selected: #649094; + active: #E9CC9D; + urgent: #FEA861; +} + +/*****----- Main Window -----*****/ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 700px; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 20px; + cursor: "default"; + background-color: @background; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: vertical; + children: [ "inputbar", "listbox" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 80px 60px; + background-color: transparent; + background-image: url("~/.config/rofi/images/i.jpg", width); + text-color: @foreground; + orientation: horizontal; + children: [ "textbox-prompt-colon", "entry", "dummy", "mode-switcher" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + padding: 12px 15px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; +} +entry { + enabled: true; + expand: false; + width: 250px; + padding: 12px 16px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} +dummy { + expand: true; + background-color: transparent; +} + +/*****----- Mode Switcher -----*****/ +mode-switcher{ + enabled: true; + spacing: 10px; + background-color: transparent; + text-color: @foreground; +} +button { + width: 45px; + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @selected; + text-color: @foreground; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 3; + lines: 1; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @foreground; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + spacing: 15px; + padding: 35px 10px; + border-radius: 20px; + background-color: transparent; + text-color: @foreground; + cursor: pointer; + orientation: vertical; +} +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: @urgent; + text-color: @foreground; +} +element normal.active { + background-color: @active; + text-color: @foreground; +} +element selected.normal { + background-color: @selected; + text-color: @foreground; +} +element selected.urgent { + background-color: @urgent; + text-color: @foreground; +} +element selected.active { + background-color: @urgent; + text-color: @foreground; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 96px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +/*****----- Message -----*****/ +message { + background-color: transparent; +} +textbox { + padding: 12px; + border-radius: 100%; + background-color: @background-alt; + text-color: @foreground; + vertical-align: 0.5; + horizontal-align: 0.0; +} +error-message { + padding: 12px; + border-radius: 0px; + background-color: @background; + text-color: @foreground; +} diff --git a/.config/rofi/scripts/launcher_t1 b/.config/rofi/scripts/launcher_t1 new file mode 120000 index 0000000..9a28f03 --- /dev/null +++ b/.config/rofi/scripts/launcher_t1 @@ -0,0 +1 @@ +../launchers/type-1/launcher.sh \ No newline at end of file diff --git a/.config/rofi/scripts/launcher_t2 b/.config/rofi/scripts/launcher_t2 new file mode 120000 index 0000000..4574d1d --- /dev/null +++ b/.config/rofi/scripts/launcher_t2 @@ -0,0 +1 @@ +../launchers/type-2/launcher.sh \ No newline at end of file diff --git a/.config/rofi/scripts/launcher_t3 b/.config/rofi/scripts/launcher_t3 new file mode 120000 index 0000000..e1c334c --- /dev/null +++ b/.config/rofi/scripts/launcher_t3 @@ -0,0 +1 @@ +../launchers/type-3/launcher.sh \ No newline at end of file diff --git a/.config/rofi/scripts/launcher_t4 b/.config/rofi/scripts/launcher_t4 new file mode 120000 index 0000000..e6cb56e --- /dev/null +++ b/.config/rofi/scripts/launcher_t4 @@ -0,0 +1 @@ +../launchers/type-4/launcher.sh \ No newline at end of file diff --git a/.config/rofi/scripts/launcher_t5 b/.config/rofi/scripts/launcher_t5 new file mode 120000 index 0000000..fc78e94 --- /dev/null +++ b/.config/rofi/scripts/launcher_t5 @@ -0,0 +1 @@ +../launchers/type-5/launcher.sh \ No newline at end of file diff --git a/.config/rofi/scripts/launcher_t6 b/.config/rofi/scripts/launcher_t6 new file mode 120000 index 0000000..3b8d494 --- /dev/null +++ b/.config/rofi/scripts/launcher_t6 @@ -0,0 +1 @@ +../launchers/type-6/launcher.sh \ No newline at end of file diff --git a/.config/rofi/scripts/launcher_t7 b/.config/rofi/scripts/launcher_t7 new file mode 120000 index 0000000..dde37fe --- /dev/null +++ b/.config/rofi/scripts/launcher_t7 @@ -0,0 +1 @@ +../launchers/type-7/launcher.sh \ No newline at end of file diff --git a/.config/rofi/scripts/powermenu_t1 b/.config/rofi/scripts/powermenu_t1 new file mode 120000 index 0000000..9d864f6 --- /dev/null +++ b/.config/rofi/scripts/powermenu_t1 @@ -0,0 +1 @@ +../powermenu/type-1/powermenu.sh \ No newline at end of file diff --git a/.config/rofi/scripts/powermenu_t2 b/.config/rofi/scripts/powermenu_t2 new file mode 120000 index 0000000..2833c51 --- /dev/null +++ b/.config/rofi/scripts/powermenu_t2 @@ -0,0 +1 @@ +../powermenu/type-2/powermenu.sh \ No newline at end of file diff --git a/.config/rofi/scripts/powermenu_t3 b/.config/rofi/scripts/powermenu_t3 new file mode 120000 index 0000000..4386fa2 --- /dev/null +++ b/.config/rofi/scripts/powermenu_t3 @@ -0,0 +1 @@ +../powermenu/type-3/powermenu.sh \ No newline at end of file diff --git a/.config/rofi/scripts/powermenu_t4 b/.config/rofi/scripts/powermenu_t4 new file mode 120000 index 0000000..e3e1703 --- /dev/null +++ b/.config/rofi/scripts/powermenu_t4 @@ -0,0 +1 @@ +../powermenu/type-4/powermenu.sh \ No newline at end of file diff --git a/.config/rofi/scripts/powermenu_t5 b/.config/rofi/scripts/powermenu_t5 new file mode 120000 index 0000000..a20c500 --- /dev/null +++ b/.config/rofi/scripts/powermenu_t5 @@ -0,0 +1 @@ +../powermenu/type-5/powermenu.sh \ No newline at end of file diff --git a/.config/rofi/scripts/powermenu_t6 b/.config/rofi/scripts/powermenu_t6 new file mode 120000 index 0000000..3be8c2a --- /dev/null +++ b/.config/rofi/scripts/powermenu_t6 @@ -0,0 +1 @@ +../powermenu/type-6/powermenu.sh \ No newline at end of file diff --git a/.config/rtile/rtile.xml b/.config/rtile/rtile.xml new file mode 100755 index 0000000..a76afc2 --- /dev/null +++ b/.config/rtile/rtile.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/.config/sbp/colors.conf b/.config/sbp/colors.conf new file mode 100644 index 0000000..7aabdcc --- /dev/null +++ b/.config/sbp/colors.conf @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# Color configuration for the segments. +# See src/colors/*.bash for the color values +# All segments colors have default values in src/config/colors.conf + +# This is how you override them: +# SEGMENTS_TIMESTAMP_COLOR_PRIMARY=$color2 +# SEGMENTS_TIMESTAMP_COLOR_SECONDARY=$color5 diff --git a/.config/sbp/hook.log b/.config/sbp/hook.log new file mode 100644 index 0000000..f826261 --- /dev/null +++ b/.config/sbp/hook.log @@ -0,0 +1,25 @@ + +[23.09.10 03:52:16] [rescuetime.bash - segments::rescuetime_refresh]: No cache folder + +[23.09.10 03:52:16] [rescuetime.bash - segments::rescuetime_refresh]: RESCUETIME_API_KEY not set + +[23.09.10 03:52:16] [wttr.bash - segments::wttr_refresh]: No cache folder + +[23.09.10 03:52:17] [wttr.bash - segments::wttr_fetch_changes]: wttr fetch return code 0 + +[23.09.10 03:52:17] [wttr.bash - segments::wttr_fetch_changes]: wttr fetch content 0.0mm;+55°F;↗11mph + +[23.09.10 04:06:03] [rescuetime.bash - segments::rescuetime_refresh]: No cache folder + +[23.09.10 04:06:03] [rescuetime.bash - segments::rescuetime_refresh]: RESCUETIME_API_KEY not set + +[23.09.10 04:06:03] [wttr.bash - segments::wttr_fetch_changes]: wttr fetch return code 0 + +[23.09.10 04:06:03] [wttr.bash - segments::wttr_fetch_changes]: wttr fetch content 0.0mm;+55°F;↗11mph +Error calling StartServiceByName for org.freedesktop.Notifications: Timeout was reached +Error calling StartServiceByName for org.freedesktop.Notifications: Timeout was reached +Error calling StartServiceByName for org.freedesktop.Notifications: Timeout was reached +Error calling StartServiceByName for org.freedesktop.Notifications: Timeout was reached +Error calling StartServiceByName for org.freedesktop.Notifications: Timeout was reached +Error calling StartServiceByName for org.freedesktop.Notifications: Timeout was reached +Error calling StartServiceByName for org.freedesktop.Notifications: Timeout was reached diff --git a/.config/sbp/settings.conf b/.config/sbp/settings.conf new file mode 100644 index 0000000..ec17eff --- /dev/null +++ b/.config/sbp/settings.conf @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +SBP_THEME_COLOR='default-256' +SBP_THEME_LAYOUT='lines' + +# Hooks will run once before every prompt +# Run 'sbp list hooks' to list all available hooks +SBP_HOOKS=('alert') + +# Segments are generated before each prompt and can +# be added, removed and reordered +# Run 'sbp list segments' to list all available segments +# Maybe you don't want to run all segments when in +# a small window? + +#if [[ "$COLUMNS" -le 120 ]]; then + # Let's adjust to the smaller screen + SBP_THEME_LAYOUT='lines' + SBP_SEGMENTS_LEFT=('host' 'path' 'git' 'command') +# SBP_SEGMENTS_RIGHT=('timestamp') +#else +# SBP_SEGMENTS_LEFT=('host' 'path' 'python_env' 'k8s' 'git' 'nix') +# SBP_SEGMENTS_RIGHT=('command' 'timestamp') +# SBP_SEGMENTS_LINE_TWO=('prompt_ready') +#fi + +# Segment specific settings +SEGMENTS_K8S_DEFAULT_USER="$USER" +SEGMENTS_K8S_HIDE_CLUSTER=0 +SEGMENTS_LOAD_THRESHOLD=50 +SEGMENTS_LOAD_THRESHOLD_HIGH=80 +SEGMENTS_RESCUETIME_REFRESH_RATE=600 +SEGMENTS_TIMESTAMP_FORMAT="%H:%M:%S" +SEGMENTS_WTTR_LOCATION='Fort Worth' +SEGMENTS_WTTR_FORMAT='%p;%t;%w' + +# vim: set ft=bash: diff --git a/.config/systemd/user/default.target.wants/modprobed-db.service b/.config/systemd/user/default.target.wants/modprobed-db.service new file mode 120000 index 0000000..3f0cbde --- /dev/null +++ b/.config/systemd/user/default.target.wants/modprobed-db.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/modprobed-db.service \ No newline at end of file diff --git a/.config/tint2/ArchLabs.tint2rc b/.config/tint2/ArchLabs.tint2rc new file mode 100644 index 0000000..d1e9399 --- /dev/null +++ b/.config/tint2/ArchLabs.tint2rc @@ -0,0 +1,307 @@ +#---- Generated by tint2conf 0f4c ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Panel +rounded = 0 +border_width = 0 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Battery, Launcher +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #808fa0 100 +border_color_hover = #222222 90 +background_color_pressed = #808fa0 100 +border_color_pressed = #222222 90 + +# Background 7: Systray +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 8: Clock +rounded = 0 +border_width = 0 +border_sides = L +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 9: Button +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 10: Active taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +#------------------------------------- +# Panel +panel_items = PLTCS +panel_size = 100% 30 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 5 +taskbar_background_id = 4 +taskbar_active_background_id = 10 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 10 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #1a5fb4 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 1 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 12 5 10 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 100 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %a %d %b %Y %H:%M +time2_format = +time1_font = sans 12 +time1_timezone = +time2_timezone = +time2_font = sans 0 +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 8 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 15 4 +button_background_id = 9 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 8 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 \ No newline at end of file diff --git a/.config/tint2/ArchLabs.tint2rc.backup.1677232467 b/.config/tint2/ArchLabs.tint2rc.backup.1677232467 new file mode 100644 index 0000000..636f177 --- /dev/null +++ b/.config/tint2/ArchLabs.tint2rc.backup.1677232467 @@ -0,0 +1,235 @@ +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive desktop name, Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active desktop name, Active taskbar, Battery, Button, Clock, Launcher, Systray +rounded = 0 +border_width = 0 +border_sides = LR +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PLTSC +panel_size = 100% 24 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 2 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 35 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %H:%M +time2_format = +time1_font = sans 12 +time1_timezone = +time2_font = sans 0 +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command= jgmenu_run >/dev/null 2>&1 & +button_rclick_command= exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command= +button_uwheel_command= +button_dwheel_command= +button_font_color = #000000 100 +button_padding = 8 2 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 diff --git a/.config/tint2/ArchLabsX.tint2rc b/.config/tint2/ArchLabsX.tint2rc new file mode 100644 index 0000000..6418610 --- /dev/null +++ b/.config/tint2/ArchLabsX.tint2rc @@ -0,0 +1,308 @@ +#---- Generated by tint2conf b1b8 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Panel +rounded = 0 +border_width = 0 +border_sides = B +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #111111 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = B +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #111111 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Battery, Clock, Launcher +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #060606 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #808fa0 100 +border_color_hover = #222222 90 +background_color_pressed = #808fa0 100 +border_color_pressed = #222222 90 + +# Background 7: Systray +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 8: +rounded = 0 +border_width = 0 +border_sides = L +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 9: Button +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 10: Active taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +#------------------------------------- +# Panel +panel_items = PLTSC +panel_size = 100% 27 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 5 +taskbar_background_id = 4 +taskbar_active_background_id = 10 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 10 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = Iosevka SS08 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #1a5fb4 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = Iosevka SS08 9 +task_tooltip = 1 +task_thumbnail = 1 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 12 5 10 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 100 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Fixed SS08 Medium 9 +time1_timezone = +time2_timezone = +time2_font = sans 0 +clock_font_color = #e1e1e1 100 +clock_padding = 8 0 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 15 4 +button_background_id = 9 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 8 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = Iosevka SS08 9 + diff --git a/.config/tint2/ArchLabsX.tint2rc.backup.1686540996 b/.config/tint2/ArchLabsX.tint2rc.backup.1686540996 new file mode 100644 index 0000000..d1e9399 --- /dev/null +++ b/.config/tint2/ArchLabsX.tint2rc.backup.1686540996 @@ -0,0 +1,307 @@ +#---- Generated by tint2conf 0f4c ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Panel +rounded = 0 +border_width = 0 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Battery, Launcher +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #808fa0 100 +border_color_hover = #222222 90 +background_color_pressed = #808fa0 100 +border_color_pressed = #222222 90 + +# Background 7: Systray +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 8: Clock +rounded = 0 +border_width = 0 +border_sides = L +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 9: Button +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 10: Active taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +#------------------------------------- +# Panel +panel_items = PLTCS +panel_size = 100% 30 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 5 +taskbar_background_id = 4 +taskbar_active_background_id = 10 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 10 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #1a5fb4 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 1 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 12 5 10 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 100 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %a %d %b %Y %H:%M +time2_format = +time1_font = sans 12 +time1_timezone = +time2_timezone = +time2_font = sans 0 +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 8 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 15 4 +button_background_id = 9 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 8 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 \ No newline at end of file diff --git a/.config/tint2/ArchLabsX.tint2rc.backup.1686543119 b/.config/tint2/ArchLabsX.tint2rc.backup.1686543119 new file mode 100644 index 0000000..90cbfa1 --- /dev/null +++ b/.config/tint2/ArchLabsX.tint2rc.backup.1686543119 @@ -0,0 +1,308 @@ +#---- Generated by tint2conf 6017 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Panel +rounded = 0 +border_width = 0 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #111111 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Battery, Launcher +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #808fa0 100 +border_color_hover = #222222 90 +background_color_pressed = #808fa0 100 +border_color_pressed = #222222 90 + +# Background 7: Systray +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 8: Clock +rounded = 0 +border_width = 0 +border_sides = L +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 9: Button +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 10: Active taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +#------------------------------------- +# Panel +panel_items = PLTCS +panel_size = 100% 30 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 5 +taskbar_background_id = 4 +taskbar_active_background_id = 10 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 10 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #1a5fb4 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 1 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 12 5 10 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 100 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %a %d %b %Y %H:%M +time2_format = +time1_font = sans 12 +time1_timezone = +time2_timezone = +time2_font = sans 0 +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 8 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 15 4 +button_background_id = 9 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 8 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/ArchLabsX.tint2rc.backup.1686544159 b/.config/tint2/ArchLabsX.tint2rc.backup.1686544159 new file mode 100644 index 0000000..8519297 --- /dev/null +++ b/.config/tint2/ArchLabsX.tint2rc.backup.1686544159 @@ -0,0 +1,308 @@ +#---- Generated by tint2conf 4221 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Panel +rounded = 0 +border_width = 0 +border_sides = B +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #111111 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = B +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #111111 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Battery, Clock, Launcher +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #060606 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #808fa0 100 +border_color_hover = #222222 90 +background_color_pressed = #808fa0 100 +border_color_pressed = #222222 90 + +# Background 7: Systray +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 8: +rounded = 0 +border_width = 0 +border_sides = L +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 9: Button +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 10: Active taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +#------------------------------------- +# Panel +panel_items = PLTSC +panel_size = 100% 26 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 5 +taskbar_background_id = 4 +taskbar_active_background_id = 10 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 10 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = Iosevka SS08 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #1a5fb4 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = Iosevka SS08 9 +task_tooltip = 1 +task_thumbnail = 1 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 12 5 10 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 100 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Fixed SS08 Medium 11 +time1_timezone = +time2_timezone = +time2_font = sans 0 +clock_font_color = #e1e1e1 100 +clock_padding = 10 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 15 4 +button_background_id = 9 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 8 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = Iosevka SS08 9 + diff --git a/.config/tint2/executor/network b/.config/tint2/executor/network new file mode 100755 index 0000000..ca50e6b --- /dev/null +++ b/.config/tint2/executor/network @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +export LC_ALL=POSIX LANG=POSIX; . "${HOME}/.owl4ce_var" + +type -p ip iwgetid &>/dev/null || exec echo 'Install iproute2/wireless-tools!' + +if iwgetid "$INT_WIFI" &>/dev/null; then + if [ -n "$(iwgetid "$INT_WIFI" | grep -oP '"\K[^"]+')" ]; then + if ip addr show "$INT_WIFI" | grep -Fqo 'inet'; then + status="$(iwgetid "$INT_WIFI" --raw)" + icon='' + else + status="No IP address (${INT_WIFI})" + icon='' + fi + else + status="Disconnected" + icon='' + fi +elif ip link show "$INT_ETH" &>/dev/null; then + if ip addr show "$INT_ETH" | grep -Fqo 'inet'; then + status="$(ip addr show "$INT_ETH" | grep -oP 'inet \K[^/]+' | sed 1q) (${INT_ETH})" + icon='' + else + status="No IP address (${INT_ETH})" + icon='' + fi +else + status="Network interface not found (${INT_ETH}/${INT_WIFI})" + icon='' +fi + +case ${1} in + status) exec echo "$status" + ;; + icon) exec echo "$icon" + ;; +esac + +exit ${?} diff --git a/.config/tint2/executor/temp b/.config/tint2/executor/temp new file mode 100755 index 0000000..4e5cb44 --- /dev/null +++ b/.config/tint2/executor/temp @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +export LC_ALL=POSIX LANG=POSIX; . "${HOME}/.owl4ce_var" + +LINUX_SYS='/sys/devices/virtual/thermal' + +if [ -d "${LINUX_SYS}/${TEMP_DEV}" ]; then + exec echo "$(expr $(<"${LINUX_SYS}/${TEMP_DEV}/temp") / 1000)"$'\xc2\xb0C' +elif [ ! -d "$LINUX_SYS" ]; then + exec echo "${LINUX_SYS} is an invalid path!" +else + exec echo "${TEMP_DEV} not found!" +fi + +exit ${?} diff --git a/.config/tint2/executor/volume b/.config/tint2/executor/volume new file mode 100755 index 0000000..e609f24 --- /dev/null +++ b/.config/tint2/executor/volume @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +export LC_ALL=POSIX LANG=POSIX; . "${HOME}/.owl4ce_var" + +type -p amixer &>/dev/null || exec echo 'Install alsa-utils!' + +VOLUME="$(amixer get Master | grep -oP '\[\K[^%\]]+' | sed 1q)" + +icon() +{ + if [ "$VOLUME" -eq 0 ]; then + icon='' + elif [ "$VOLUME" -lt 30 ]; then + icon='' + elif [ "$VOLUME" -lt 70 ]; then + icon='' + else + icon='' + fi + exec echo "$icon" +} + +case ${1} in + percent) if amixer get Master | grep -Fqo 'off'; then + exec echo 'Muted' + else + exec echo "${VOLUME}%" + fi + ;; + icon) if amixer get Master | grep -Fqo 'off'; then + exec echo "" + else + icon + fi + ;; + up) amixer set Master on -q + exec amixer sset Master "${AUDIO_STEPS:-5}%+" -q + ;; + down) amixer set Master on -q + exec amixer sset Master "${AUDIO_STEPS:-5}%-" -q + ;; + mute) exec amixer set Master 1+ toggle -q + ;; +esac + +exit ${?} diff --git a/.config/tint2/icons/appearance.png b/.config/tint2/icons/appearance.png new file mode 100644 index 0000000..c112e4b Binary files /dev/null and b/.config/tint2/icons/appearance.png differ diff --git a/.config/tint2/icons/battery.png b/.config/tint2/icons/battery.png new file mode 100644 index 0000000..02ce34a Binary files /dev/null and b/.config/tint2/icons/battery.png differ diff --git a/.config/tint2/icons/launch.png b/.config/tint2/icons/launch.png new file mode 100755 index 0000000..f59b986 Binary files /dev/null and b/.config/tint2/icons/launch.png differ diff --git a/.config/tint2/icons/music.png b/.config/tint2/icons/music.png new file mode 100644 index 0000000..e6496b2 Binary files /dev/null and b/.config/tint2/icons/music.png differ diff --git a/.config/tint2/icons/poweroff.png b/.config/tint2/icons/poweroff.png new file mode 100644 index 0000000..1960a4c Binary files /dev/null and b/.config/tint2/icons/poweroff.png differ diff --git a/.config/tint2/icons/telegram.png b/.config/tint2/icons/telegram.png new file mode 100644 index 0000000..e4f1ef2 Binary files /dev/null and b/.config/tint2/icons/telegram.png differ diff --git a/.config/tint2/icons/wifi.png b/.config/tint2/icons/wifi.png new file mode 100644 index 0000000..ef35ad1 Binary files /dev/null and b/.config/tint2/icons/wifi.png differ diff --git a/.config/tint2/menu.svg b/.config/tint2/menu.svg new file mode 100755 index 0000000..5ce5b7b --- /dev/null +++ b/.config/tint2/menu.svg @@ -0,0 +1,136 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/.config/tint2/squared/menu.svg b/.config/tint2/squared/menu.svg new file mode 100644 index 0000000..3c9846f --- /dev/null +++ b/.config/tint2/squared/menu.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/.config/tint2/squared/tint2rc b/.config/tint2/squared/tint2rc new file mode 100644 index 0000000..4b8e817 --- /dev/null +++ b/.config/tint2/squared/tint2rc @@ -0,0 +1,307 @@ +#---- Generated by tint2conf 52db ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Battery, Panel +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #f7fdfe 100 +border_color = #deceb7 100 +background_color_hover = #f7fdfe 100 +border_color_hover = #deceb7 100 +background_color_pressed = #f7fdfe 100 +border_color_pressed = #deceb7 100 + +# Background 2: Default task, Iconified task, Inactive desktop name +rounded = 5 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #f7fdfe 100 +border_color = #f7fdfe 100 +background_color_hover = #f7fdfe 100 +border_color_hover = #f7fdfe 100 +background_color_pressed = #f7fdfe 100 +border_color_pressed = #f7fdfe 100 + +# Background 3: Active desktop name, Active task +rounded = 5 +border_width = 3 +border_sides = B +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #f7fdfe 100 +border_color = #e4b5bb 100 +background_color_hover = #f7fdfe 100 +border_color_hover = #e4b5bb 100 +background_color_pressed = #f7fdfe 100 +border_color_pressed = #e4b5bb 100 + +# Background 4: Urgent task +rounded = 5 +border_width = 1 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #d7afc4 100 +border_color = #a5b8d6 100 +background_color_hover = #d7afc4 100 +border_color_hover = #a5b8d6 100 +background_color_pressed = #d7afc4 100 +border_color_pressed = #a5b8d6 100 + +# Background 5: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #f7fdfe 100 +border_color = #f7fdfe 100 +background_color_hover = #70656b 100 +border_color_hover = #f7fdfe 100 +background_color_pressed = #f7fdfe 100 +border_color_pressed = #f7fdfe 100 + +# Background 6: Button +rounded = 0 +border_width = 0 +border_sides = R +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #e4b5bb 100 +border_color = #f7fdfe 100 +background_color_hover = #d5acb9 100 +border_color_hover = #555555 100 +background_color_pressed = #e4b5bb 100 +border_color_pressed = #555555 100 + +# Background 7: +rounded = 0 +border_width = 1 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #f7fdfe 100 +border_color = #777777 30 +background_color_hover = #f7fdfe 100 +border_color_hover = #777777 30 +background_color_pressed = #f7fdfe 100 +border_color_pressed = #777777 30 + +#------------------------------------- +# Panel +panel_items = PFSFB:E:C: +panel_size = 40% 40 +panel_margin = 30 30 +panel_padding = 0 0 4 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_position = bottom left horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0 +autohide_hide_timeout = 0.5 +autohide_height = 2 +strut_policy = none +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 21 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 0 0 0 +taskbar_background_id = 0 +taskbar_active_background_id = 0 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 1 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 6 3 +taskbar_name_background_id = 2 +taskbar_name_active_background_id = 3 +taskbar_name_font = SF Pro Display 12 +taskbar_name_font_color = #70656b 100 +taskbar_name_active_font_color = #70656b 100 +taskbar_distribute_size = 1 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 1 +task_icon = 0 +task_centered = 1 +urgent_nb_of_blink = 100000 +task_maximum_size = 250 35 +task_padding = 10 10 4 +task_font = SF Pro Display 12 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #70656b 100 +task_icon_asb = 100 0 0 +task_background_id = 2 +task_active_background_id = 3 +task_urgent_background_id = 4 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = none +mouse_right = close +mouse_scroll_up = prev_task +mouse_scroll_down = next_task + +#------------------------------------- +# System tray (notification area) +systray_padding = 5 5 2 +systray_background_id = 0 +systray_sort = ascending +systray_icon_size = 22 +systray_icon_asb = 100 50 -50 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 0 0 2 +launcher_background_id = 0 +launcher_icon_background_id = 0 +launcher_icon_size = 22 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +time1_format = %a %d %b %I:%M %p +time2_format = +time1_font = SF Pro Display Medium 12 +time1_timezone = +time2_timezone = +time2_font = sans 7 +clock_font_color = #70656b 100 +clock_padding = 1 0 +clock_background_id = 0 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = zenity --calendar --text "" +clock_rclick_command = orage +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 10 +battery_low_cmd = xmessage 'tint2: Battery low!' +battery_full_cmd = +bat1_font = SF Pro Display 10 +bat2_font = SF Pro Display Light 9 +battery_font_color = #70656b 100 +bat1_format = +bat2_format = +battery_padding = 0 0 +battery_background_id = 1 +battery_hide = 101 +battery_lclick_command = +battery_rclick_command = +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Separator 1 +separator = new +separator_background_id = 0 +separator_color = #777777 87 +separator_style = empty +separator_size = 5 +separator_padding = 1 0 + +#------------------------------------- +# Separator 2 +separator = new +separator_background_id = 0 +separator_color = #777777 80 +separator_style = empty +separator_size = 5 +separator_padding = 1 0 + +#------------------------------------- +# Separator 3 +separator = new +separator_background_id = 0 +separator_color = #777777 80 +separator_style = empty +separator_size = 5 +separator_padding = 1 0 + +#------------------------------------- +# Executor 1 +execp = new +execp_command = mpc current +execp_interval = 0 +execp_has_icon = 0 +execp_cache_icon = 1 +execp_continuous = 0 +execp_markup = 1 +execp_lclick_command = mpc toggle +execp_rclick_command = +execp_mclick_command = +execp_uwheel_command = mpc prev +execp_dwheel_command = mpc next +execp_font = SF Pro Display Medium 12 +execp_font_color = #70656b 100 +execp_padding = 0 0 +execp_background_id = 0 +execp_centered = 0 +execp_icon_w = 0 +execp_icon_h = 0 + +#------------------------------------- +# Button 1 +button = new +button_icon = /home/reorr/.config/tint2/menu.svg +button_text = +button_lclick_command = rofi -show drun +button_rclick_command = +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 11 7 +button_background_id = 6 +button_centered = 0 +button_max_icon_size = 20 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0.5 +tooltip_hide_timeout = 0.1 +tooltip_padding = 5 5 +tooltip_background_id = 5 +tooltip_font_color = #70656b 100 +tooltip_font = SF Pro Display 12 + diff --git a/.config/tint2/tint2rc b/.config/tint2/tint2rc new file mode 100644 index 0000000..5fba8d9 --- /dev/null +++ b/.config/tint2/tint2rc @@ -0,0 +1,262 @@ +#---- Generated by tint2conf a652 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Panel +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #040404 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +border_width = 4 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +# Background 7: Button, Clock, Systray +rounded = 0 +border_width = 4 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +#------------------------------------- +# Panel +panel_items = PFSC +panel_size = 100% 42 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 5 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = none +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 98 0 10 +mouse_pressed_icon_asb = 100 1 1 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = single_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 0 +task_centered = 0 +urgent_nb_of_blink = 20 +task_maximum_size = 0 0 +task_padding = 0 0 0 +task_font = monospace 0 +task_tooltip = 0 +task_thumbnail = 0 +task_thumbnail_size = 8 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 0 0 0 +task_active_icon_asb = 0 0 0 +task_urgent_icon_asb = 0 0 0 +task_iconified_icon_asb = 0 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = none +mouse_right = close +mouse_scroll_up = none +mouse_scroll_down = none + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 8 8 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 10 +systray_monitor = primary +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Nerd Font Medium 9 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 8 8 +clock_background_id = 7 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 0 +battery_low_cmd = +battery_full_cmd = +battery_font_color = #000000 100 +bat1_format = +bat2_format = +battery_padding = 0 0 +battery_background_id = 0 +battery_hide = 101 +battery_lclick_command = +battery_rclick_command = +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/ArchLabs/symbolic/places/start-here-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 4 +button_background_id = 7 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/tint2rc.backup.1637405442 b/.config/tint2/tint2rc.backup.1637405442 new file mode 100644 index 0000000..d2176cb --- /dev/null +++ b/.config/tint2/tint2rc.backup.1637405442 @@ -0,0 +1,201 @@ +#---- Generated by tint2conf aeaf ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Panel +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #000000 60 +border_color = #000000 30 +background_color_hover = #000000 60 +border_color_hover = #000000 30 +background_color_pressed = #000000 60 +border_color_pressed = #000000 30 + +# Background 2: Default task, Iconified task +rounded = 4 +border_width = 1 +border_sides = TBLR +background_color = #777777 20 +border_color = #777777 30 +background_color_hover = #aaaaaa 22 +border_color_hover = #eaeaea 44 +background_color_pressed = #555555 4 +border_color_pressed = #eaeaea 44 + +# Background 3: Active task +rounded = 4 +border_width = 1 +border_sides = TBLR +background_color = #777777 20 +border_color = #ffffff 40 +background_color_hover = #aaaaaa 22 +border_color_hover = #eaeaea 44 +background_color_pressed = #555555 4 +border_color_pressed = #eaeaea 44 + +# Background 4: Urgent task +rounded = 4 +border_width = 1 +border_sides = TBLR +background_color = #aa4400 100 +border_color = #aa7733 100 +background_color_hover = #cc7700 100 +border_color_hover = #aa7733 100 +background_color_pressed = #555555 4 +border_color_pressed = #aa7733 100 + +# Background 5: Tooltip +rounded = 1 +border_width = 1 +border_sides = TBLR +background_color = #222222 100 +border_color = #333333 100 +background_color_hover = #ffffaa 100 +border_color_hover = #000000 100 +background_color_pressed = #ffffaa 100 +border_color_pressed = #000000 100 + +#------------------------------------- +# Panel +panel_items = LTSC +panel_size = 100% 30 +panel_margin = 0 0 +panel_padding = 2 0 2 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_position = bottom center horizontal +panel_layer = top +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0 +autohide_hide_timeout = 0.5 +autohide_height = 2 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 1 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 + +#------------------------------------- +# Taskbar +taskbar_mode = single_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 0 0 2 +taskbar_background_id = 0 +taskbar_active_background_id = 0 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 2 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font_color = #e3e3e3 100 +taskbar_name_active_font_color = #ffffff 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 1 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 100000 +task_maximum_size = 150 35 +task_padding = 2 2 4 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #ffffff 100 +task_background_id = 2 +task_active_background_id = 3 +task_urgent_background_id = 4 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = none +mouse_right = close +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 0 4 2 +systray_background_id = 0 +systray_sort = ascending +systray_icon_size = 24 +systray_icon_asb = 100 0 0 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 2 4 2 +launcher_background_id = 0 +launcher_icon_background_id = 0 +launcher_icon_size = 24 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = tint2conf.desktop +launcher_item_app = firefox.desktop +launcher_item_app = iceweasel.desktop +launcher_item_app = chromium-browser.desktop +launcher_item_app = google-chrome.desktop + +#------------------------------------- +# Clock +time1_format = %H:%M +time2_format = %A %d %B +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 2 0 +clock_background_id = 0 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = +clock_rclick_command = orage +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 10 +battery_low_cmd = xmessage 'tint2: Battery low!' +battery_full_cmd = +battery_font_color = #ffffff 100 +bat1_format = +bat2_format = +battery_padding = 1 0 +battery_background_id = 0 +battery_hide = 101 +battery_lclick_command = +battery_rclick_command = +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0.5 +tooltip_hide_timeout = 0.1 +tooltip_padding = 4 4 +tooltip_background_id = 5 +tooltip_font_color = #dddddd 100 + diff --git a/.config/tint2/tint2rc.backup.1637540346 b/.config/tint2/tint2rc.backup.1637540346 new file mode 100644 index 0000000..636f177 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1637540346 @@ -0,0 +1,235 @@ +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive desktop name, Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active desktop name, Active taskbar, Battery, Button, Clock, Launcher, Systray +rounded = 0 +border_width = 0 +border_sides = LR +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PLTSC +panel_size = 100% 24 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 2 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 35 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %H:%M +time2_format = +time1_font = sans 12 +time1_timezone = +time2_font = sans 0 +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command= jgmenu_run >/dev/null 2>&1 & +button_rclick_command= exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command= +button_uwheel_command= +button_dwheel_command= +button_font_color = #000000 100 +button_padding = 8 2 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 diff --git a/.config/tint2/tint2rc.backup.1637543706 b/.config/tint2/tint2rc.backup.1637543706 new file mode 100644 index 0000000..3d64779 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1637543706 @@ -0,0 +1,255 @@ +#---- Generated by tint2conf 0a4e ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = B +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Battery, Button, Clock, Launcher, Systray +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PLTSC +panel_size = 100% 32 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 2 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 35 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %H:%M +time2_format = +time1_font = sans 12 +time1_timezone = +time2_timezone = +time2_font = sans 0 +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 2 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/tint2rc.backup.1677232206 b/.config/tint2/tint2rc.backup.1677232206 new file mode 100644 index 0000000..d2176cb --- /dev/null +++ b/.config/tint2/tint2rc.backup.1677232206 @@ -0,0 +1,201 @@ +#---- Generated by tint2conf aeaf ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Panel +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #000000 60 +border_color = #000000 30 +background_color_hover = #000000 60 +border_color_hover = #000000 30 +background_color_pressed = #000000 60 +border_color_pressed = #000000 30 + +# Background 2: Default task, Iconified task +rounded = 4 +border_width = 1 +border_sides = TBLR +background_color = #777777 20 +border_color = #777777 30 +background_color_hover = #aaaaaa 22 +border_color_hover = #eaeaea 44 +background_color_pressed = #555555 4 +border_color_pressed = #eaeaea 44 + +# Background 3: Active task +rounded = 4 +border_width = 1 +border_sides = TBLR +background_color = #777777 20 +border_color = #ffffff 40 +background_color_hover = #aaaaaa 22 +border_color_hover = #eaeaea 44 +background_color_pressed = #555555 4 +border_color_pressed = #eaeaea 44 + +# Background 4: Urgent task +rounded = 4 +border_width = 1 +border_sides = TBLR +background_color = #aa4400 100 +border_color = #aa7733 100 +background_color_hover = #cc7700 100 +border_color_hover = #aa7733 100 +background_color_pressed = #555555 4 +border_color_pressed = #aa7733 100 + +# Background 5: Tooltip +rounded = 1 +border_width = 1 +border_sides = TBLR +background_color = #222222 100 +border_color = #333333 100 +background_color_hover = #ffffaa 100 +border_color_hover = #000000 100 +background_color_pressed = #ffffaa 100 +border_color_pressed = #000000 100 + +#------------------------------------- +# Panel +panel_items = LTSC +panel_size = 100% 30 +panel_margin = 0 0 +panel_padding = 2 0 2 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_position = bottom center horizontal +panel_layer = top +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0 +autohide_hide_timeout = 0.5 +autohide_height = 2 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 1 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 + +#------------------------------------- +# Taskbar +taskbar_mode = single_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 0 0 2 +taskbar_background_id = 0 +taskbar_active_background_id = 0 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 2 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font_color = #e3e3e3 100 +taskbar_name_active_font_color = #ffffff 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 1 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 100000 +task_maximum_size = 150 35 +task_padding = 2 2 4 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #ffffff 100 +task_background_id = 2 +task_active_background_id = 3 +task_urgent_background_id = 4 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = none +mouse_right = close +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 0 4 2 +systray_background_id = 0 +systray_sort = ascending +systray_icon_size = 24 +systray_icon_asb = 100 0 0 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 2 4 2 +launcher_background_id = 0 +launcher_icon_background_id = 0 +launcher_icon_size = 24 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = tint2conf.desktop +launcher_item_app = firefox.desktop +launcher_item_app = iceweasel.desktop +launcher_item_app = chromium-browser.desktop +launcher_item_app = google-chrome.desktop + +#------------------------------------- +# Clock +time1_format = %H:%M +time2_format = %A %d %B +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 2 0 +clock_background_id = 0 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = +clock_rclick_command = orage +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 10 +battery_low_cmd = xmessage 'tint2: Battery low!' +battery_full_cmd = +battery_font_color = #ffffff 100 +bat1_format = +bat2_format = +battery_padding = 1 0 +battery_background_id = 0 +battery_hide = 101 +battery_lclick_command = +battery_rclick_command = +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0.5 +tooltip_hide_timeout = 0.1 +tooltip_padding = 4 4 +tooltip_background_id = 5 +tooltip_font_color = #dddddd 100 + diff --git a/.config/tint2/tint2rc.backup.1677232264 b/.config/tint2/tint2rc.backup.1677232264 new file mode 100644 index 0000000..5788113 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1677232264 @@ -0,0 +1,299 @@ +#---- Generated by tint2conf 2920 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Активная задача +rounded = 0 +border_width = 2 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #5a74ca 100 +background_color_hover = #888888 20 +border_color_hover = #5a74ca 100 +background_color_pressed = #888888 20 +border_color_pressed = #5a74ca 100 + +# Background 2: Задача по умолчанию, Свернутая задача +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Неотложная задача +rounded = 0 +border_width = 2 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Неактивная панель задач +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #2b303b 80 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Активная панель задач, Батарея, Панель запуска, Панель, Системный лоток, Часы +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #17181a 100 +border_color = #d8d8d8 0 +background_color_hover = #5a74ca 62 +border_color_hover = #d8d8d8 0 +background_color_pressed = #5a74ca 62 +border_color_pressed = #d8d8d8 0 + +# Background 6: Всплывающий текст, Разделитель, Button +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #17181a 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = :PCPP: +panel_size = 100% 34 +panel_margin = 0 10 +panel_padding = 0 0 0 +panel_background_id = 5 +wm_menu = 1 +panel_dock = 0 +panel_position = bottom center horizontal +panel_layer = top +panel_monitor = all +panel_shrink = 1 +autohide = 0 +autohide_show_timeout = 0 +autohide_hide_timeout = 0.1 +autohide_height = 1 +strut_policy = none +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 0 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = Clear Sans Medium, Medium 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 36 26 +task_padding = 10 8 4 +task_tooltip = 0 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = next_task +mouse_right = close +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 2 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 50 0 0 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 24 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +time1_format = %a. %d %b %H:%M +time2_format = +time1_font = Clear Sans Medium, Medium 9 +time1_timezone = +time2_timezone = +clock_font_color = #aeb4c6 100 +clock_padding = 4 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = xfdesktop --menu +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = Ubuntu 11 +bat2_font = Ubuntu 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Separator 1 +separator = new +separator_background_id = 0 +separator_color = #777777 80 +separator_style = empty +separator_size = 7 +separator_padding = 0 0 + +#------------------------------------- +# Separator 2 +separator = new +separator_background_id = 6 +separator_color = #777777 80 +separator_style = empty +separator_size = 7 +separator_padding = 0 0 + +#------------------------------------- +# Button 1 +button = new +button_text =  +button_lclick_command = sh $HOME/.bin/toggle-bar.sh +button_rclick_command = $HOME/.bin/toggle-pager.sh +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font = Font Awesome 5 Free 10 +button_font_color = #aeb4c6 100 +button_padding = 5 0 +button_background_id = 6 +button_centered = 0 +button_max_icon_size = 0 + +#------------------------------------- +# Button 2 +button = new +button_text =  +button_lclick_command = $HOME/.bin/toggle-tint.sh +button_rclick_command = xkill +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font = Font Awesome 5 Free 8 +button_font_color = #aeb4c6 100 +button_padding = 5 0 +button_background_id = 6 +button_centered = 0 +button_max_icon_size = 0 + +#------------------------------------- +# Button 3 +button = new +button_text =  +button_lclick_command = $HOME/.bin/xfce-theme.sh +button_rclick_command = $HOME/.bin/compton.sh +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font = Font Awesome 5 Free 8 +button_font_color = #aeb4c6 100 +button_padding = 5 0 +button_background_id = 6 +button_centered = 0 +button_max_icon_size = 0 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = Ubuntu 10 + diff --git a/.config/tint2/tint2rc.backup.1677232309 b/.config/tint2/tint2rc.backup.1677232309 new file mode 100644 index 0000000..838a869 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1677232309 @@ -0,0 +1,291 @@ +#---- Generated by tint2conf ce7e ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Активная задача +rounded = 0 +border_width = 2 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #5a74ca 100 +background_color_hover = #888888 20 +border_color_hover = #5a74ca 100 +background_color_pressed = #888888 20 +border_color_pressed = #5a74ca 100 + +# Background 2: Задача по умолчанию, Свернутая задача +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Неотложная задача +rounded = 0 +border_width = 2 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #ffa2b1 100 +background_color_hover = #888888 20 +border_color_hover = #ffa2b1 100 +background_color_pressed = #888888 20 +border_color_pressed = #ffa2b1 100 + +# Background 4: Неактивная панель задач +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #2b303b 80 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Активная панель задач, Батарея, Панель запуска, Системный лоток +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #2b303b 90 +border_color = #d8d8d8 0 +background_color_hover = #5294e2 62 +border_color_hover = #d8d8d8 0 +background_color_pressed = #5294e2 62 +border_color_pressed = #d8d8d8 0 + +# Background 6: Всплывающий текст, Разделитель, Часы, Button +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #2b303b 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PPLTSCP: +panel_size = 100% 26 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = Clear Sans Medium, Medium 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 1 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 150 26 +task_padding = 6 5 4 +task_font = Clear Sans Medium, Medium 9 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #9baec8 100 +task_active_font_color = #9baec8 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #777d8e 100 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 20 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 30 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = next_task +mouse_right = close +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 4 2 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 50 0 0 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 24 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +time1_format = %H:%M +time2_format = +time1_font = Clear Sans Medium, Medium 11 +time1_timezone = +time2_timezone = +clock_font_color = #aeb4c6 100 +clock_padding = 2 0 +clock_background_id = 6 +clock_tooltip = %e %B %Y +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = Clear Sans 10 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Separator 1 +separator = new +separator_background_id = 6 +separator_color = #777777 80 +separator_style = empty +separator_size = 5 +separator_padding = 0 0 + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/Papirus-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run +button_rclick_command = rofi -modi run,drun -show drun -location 1 -xoffset 0 -yoffset 26 -line-padding 4 -columns 1 -width 25 -lines 10 -padding 15 -hide-scrollbar -show-icons -drun-icon-theme +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 2 +button_background_id = 6 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Button 2 +button = new +button_icon = /usr/share/icons/Papirus/32x32/apps/cs-desktop.svg +button_text = +button_lclick_command = show_desktop +button_rclick_command = +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 4 +button_background_id = 6 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Button 3 +button = new +button_text =  +button_lclick_command = oblogout +button_rclick_command = rofi-logout +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font = Font Awesome 5 Free 9 +button_font_color = #5a74ca 73 +button_padding = 8 4 +button_background_id = 6 +button_centered = 0 +button_max_icon_size = 0 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #777d8e 100 +tooltip_font = Clear Sans Medium, Medium 9 + diff --git a/.config/tint2/tint2rc.backup.1677232331 b/.config/tint2/tint2rc.backup.1677232331 new file mode 100644 index 0000000..636f177 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1677232331 @@ -0,0 +1,235 @@ +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive desktop name, Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active desktop name, Active taskbar, Battery, Button, Clock, Launcher, Systray +rounded = 0 +border_width = 0 +border_sides = LR +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PLTSC +panel_size = 100% 24 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 2 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 35 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %H:%M +time2_format = +time1_font = sans 12 +time1_timezone = +time2_font = sans 0 +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command= jgmenu_run >/dev/null 2>&1 & +button_rclick_command= exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command= +button_uwheel_command= +button_dwheel_command= +button_font_color = #000000 100 +button_padding = 8 2 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 diff --git a/.config/tint2/tint2rc.backup.1677232336 b/.config/tint2/tint2rc.backup.1677232336 new file mode 100644 index 0000000..838a869 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1677232336 @@ -0,0 +1,291 @@ +#---- Generated by tint2conf ce7e ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Активная задача +rounded = 0 +border_width = 2 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #5a74ca 100 +background_color_hover = #888888 20 +border_color_hover = #5a74ca 100 +background_color_pressed = #888888 20 +border_color_pressed = #5a74ca 100 + +# Background 2: Задача по умолчанию, Свернутая задача +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Неотложная задача +rounded = 0 +border_width = 2 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #ffa2b1 100 +background_color_hover = #888888 20 +border_color_hover = #ffa2b1 100 +background_color_pressed = #888888 20 +border_color_pressed = #ffa2b1 100 + +# Background 4: Неактивная панель задач +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #2b303b 80 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Активная панель задач, Батарея, Панель запуска, Системный лоток +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #2b303b 90 +border_color = #d8d8d8 0 +background_color_hover = #5294e2 62 +border_color_hover = #d8d8d8 0 +background_color_pressed = #5294e2 62 +border_color_pressed = #d8d8d8 0 + +# Background 6: Всплывающий текст, Разделитель, Часы, Button +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #2b303b 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PPLTSCP: +panel_size = 100% 26 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = Clear Sans Medium, Medium 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 1 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 150 26 +task_padding = 6 5 4 +task_font = Clear Sans Medium, Medium 9 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #9baec8 100 +task_active_font_color = #9baec8 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #777d8e 100 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 20 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 30 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = next_task +mouse_right = close +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 4 2 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 50 0 0 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 24 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +time1_format = %H:%M +time2_format = +time1_font = Clear Sans Medium, Medium 11 +time1_timezone = +time2_timezone = +clock_font_color = #aeb4c6 100 +clock_padding = 2 0 +clock_background_id = 6 +clock_tooltip = %e %B %Y +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = Clear Sans 10 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Separator 1 +separator = new +separator_background_id = 6 +separator_color = #777777 80 +separator_style = empty +separator_size = 5 +separator_padding = 0 0 + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/Papirus-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run +button_rclick_command = rofi -modi run,drun -show drun -location 1 -xoffset 0 -yoffset 26 -line-padding 4 -columns 1 -width 25 -lines 10 -padding 15 -hide-scrollbar -show-icons -drun-icon-theme +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 2 +button_background_id = 6 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Button 2 +button = new +button_icon = /usr/share/icons/Papirus/32x32/apps/cs-desktop.svg +button_text = +button_lclick_command = show_desktop +button_rclick_command = +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 4 +button_background_id = 6 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Button 3 +button = new +button_text =  +button_lclick_command = oblogout +button_rclick_command = rofi-logout +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font = Font Awesome 5 Free 9 +button_font_color = #5a74ca 73 +button_padding = 8 4 +button_background_id = 6 +button_centered = 0 +button_max_icon_size = 0 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #777d8e 100 +tooltip_font = Clear Sans Medium, Medium 9 + diff --git a/.config/tint2/tint2rc.backup.1677232545 b/.config/tint2/tint2rc.backup.1677232545 new file mode 100644 index 0000000..636f177 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1677232545 @@ -0,0 +1,235 @@ +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive desktop name, Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active desktop name, Active taskbar, Battery, Button, Clock, Launcher, Systray +rounded = 0 +border_width = 0 +border_sides = LR +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PLTSC +panel_size = 100% 24 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 2 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 35 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %H:%M +time2_format = +time1_font = sans 12 +time1_timezone = +time2_font = sans 0 +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command= jgmenu_run >/dev/null 2>&1 & +button_rclick_command= exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command= +button_uwheel_command= +button_dwheel_command= +button_font_color = #000000 100 +button_padding = 8 2 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 diff --git a/.config/tint2/tint2rc.backup.1677232841 b/.config/tint2/tint2rc.backup.1677232841 new file mode 100644 index 0000000..7030fb4 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1677232841 @@ -0,0 +1,254 @@ +#---- Generated by tint2conf 4aeb ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Battery, Button, Clock, Systray +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PTSC +panel_size = 100% 24 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 2 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 35 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %I:%M +time2_format = +time1_font = Iosevka SS07 11 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/Papirus-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 2 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/tint2rc.backup.1677232974 b/.config/tint2/tint2rc.backup.1677232974 new file mode 100644 index 0000000..7030fb4 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1677232974 @@ -0,0 +1,254 @@ +#---- Generated by tint2conf 4aeb ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Battery, Button, Clock, Systray +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PTSC +panel_size = 100% 24 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 2 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 35 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %I:%M +time2_format = +time1_font = Iosevka SS07 11 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/Papirus-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 2 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/tint2rc.backup.1686541175 b/.config/tint2/tint2rc.backup.1686541175 new file mode 100644 index 0000000..d1e9399 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1686541175 @@ -0,0 +1,307 @@ +#---- Generated by tint2conf 0f4c ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Panel +rounded = 0 +border_width = 0 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Battery, Launcher +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #808fa0 100 +border_color_hover = #222222 90 +background_color_pressed = #808fa0 100 +border_color_pressed = #222222 90 + +# Background 7: Systray +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 8: Clock +rounded = 0 +border_width = 0 +border_sides = L +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 9: Button +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 10: Active taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +#------------------------------------- +# Panel +panel_items = PLTCS +panel_size = 100% 30 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 5 +taskbar_background_id = 4 +taskbar_active_background_id = 10 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 10 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #1a5fb4 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 1 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 12 5 10 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 100 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %a %d %b %Y %H:%M +time2_format = +time1_font = sans 12 +time1_timezone = +time2_timezone = +time2_font = sans 0 +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 8 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 15 4 +button_background_id = 9 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 8 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 \ No newline at end of file diff --git a/.config/tint2/tint2rc.backup.1686541306 b/.config/tint2/tint2rc.backup.1686541306 new file mode 100644 index 0000000..79a44be --- /dev/null +++ b/.config/tint2/tint2rc.backup.1686541306 @@ -0,0 +1,308 @@ +#---- Generated by tint2conf 7bab ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Panel +rounded = 0 +border_width = 0 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Battery, Launcher +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #121212 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #808fa0 100 +border_color_hover = #222222 90 +background_color_pressed = #808fa0 100 +border_color_pressed = #222222 90 + +# Background 7: Systray +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 8: Clock +rounded = 0 +border_width = 0 +border_sides = L +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 9: Button +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 10: Active taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #202020 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +#------------------------------------- +# Panel +panel_items = PLTCS +panel_size = 100% 30 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 5 +taskbar_background_id = 4 +taskbar_active_background_id = 10 +taskbar_name = 1 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 10 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #1a5fb4 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 1 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 12 5 10 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 100 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %a %d %b %Y %H:%M +time2_format = +time1_font = sans 12 +time1_timezone = +time2_timezone = +time2_font = sans 0 +clock_font_color = #ffffff 100 +clock_padding = 10 4 +clock_background_id = 8 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 15 4 +button_background_id = 9 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 8 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/tint2rc.backup.1686543241 b/.config/tint2/tint2rc.backup.1686543241 new file mode 100644 index 0000000..8519297 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1686543241 @@ -0,0 +1,308 @@ +#---- Generated by tint2conf 4221 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Panel +rounded = 0 +border_width = 0 +border_sides = B +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #111111 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = B +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #111111 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Battery, Clock, Launcher +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #060606 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #808fa0 100 +border_color_hover = #222222 90 +background_color_pressed = #808fa0 100 +border_color_pressed = #222222 90 + +# Background 7: Systray +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 8: +rounded = 0 +border_width = 0 +border_sides = L +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 9: Button +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 10: Active taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +#------------------------------------- +# Panel +panel_items = PLTSC +panel_size = 100% 26 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 5 +taskbar_background_id = 4 +taskbar_active_background_id = 10 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 10 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = Iosevka SS08 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #1a5fb4 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = Iosevka SS08 9 +task_tooltip = 1 +task_thumbnail = 1 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 12 5 10 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 100 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Fixed SS08 Medium 11 +time1_timezone = +time2_timezone = +time2_font = sans 0 +clock_font_color = #e1e1e1 100 +clock_padding = 10 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 15 4 +button_background_id = 9 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 8 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = Iosevka SS08 9 + diff --git a/.config/tint2/tint2rc.backup.1686544162 b/.config/tint2/tint2rc.backup.1686544162 new file mode 100644 index 0000000..6418610 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1686544162 @@ -0,0 +1,308 @@ +#---- Generated by tint2conf b1b8 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task, Panel +rounded = 0 +border_width = 0 +border_sides = B +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #111111 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = B +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #111111 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Battery, Clock, Launcher +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #060606 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #808fa0 100 +border_color_hover = #222222 90 +background_color_pressed = #808fa0 100 +border_color_pressed = #222222 90 + +# Background 7: Systray +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 8: +rounded = 0 +border_width = 0 +border_sides = L +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 9: Button +rounded = 0 +border_width = 0 +border_sides = +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +# Background 10: Active taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #101010 100 +border_color = #77767b 100 +background_color_hover = #888888 20 +border_color_hover = #808fa0 100 +background_color_pressed = #888888 20 +border_color_pressed = #808fa0 100 + +#------------------------------------- +# Panel +panel_items = PLTSC +panel_size = 100% 27 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 1 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 100 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 5 +taskbar_background_id = 4 +taskbar_active_background_id = 10 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 10 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = Iosevka SS08 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #1a5fb4 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = Iosevka SS08 9 +task_tooltip = 1 +task_thumbnail = 1 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 12 5 10 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 100 0 100 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 5 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme = ArchLabs-Dark +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Fixed SS08 Medium 9 +time1_timezone = +time2_timezone = +time2_font = sans 0 +clock_font_color = #e1e1e1 100 +clock_padding = 8 0 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = jgmenu +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 15 4 +button_background_id = 9 +button_centered = 1 +button_max_icon_size = 22 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 8 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = Iosevka SS08 9 + diff --git a/.config/tint2/tint2rc.backup.1686548717 b/.config/tint2/tint2rc.backup.1686548717 new file mode 100644 index 0000000..f84b1f3 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1686548717 @@ -0,0 +1,254 @@ +#---- Generated by tint2conf aa77 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Battery, Button, Clock, Systray +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #040404 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PTSC +panel_size = 100% 27 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 98 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 4 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 98 0 10 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Fixed SS08 9 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 8 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/ArchLabs-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 4 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/tint2rc.backup.1688771696 b/.config/tint2/tint2rc.backup.1688771696 new file mode 100644 index 0000000..9256689 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1688771696 @@ -0,0 +1,229 @@ +#---- Generated by tint2conf d65c ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Battery, Button, Clock, Systray +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #040404 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PFSC +panel_size = 100% 32 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = none +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 98 0 10 +mouse_pressed_icon_asb = 100 0 1 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 0 +task_centered = 0 +urgent_nb_of_blink = 20 +task_maximum_size = 0 0 +task_padding = 0 +task_font = monospace 0 +task_tooltip = 0 +task_thumbnail = 0 +task_thumbnail_size = 0 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 0 0 0 +task_active_icon_asb = 0 0 0 +task_urgent_icon_asb = 0 0 0 +task_iconified_icon_asb = 0 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = +mouse_middle = +mouse_right = +mouse_scroll_up = +mouse_scroll_down = + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 4 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 98 0 10 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Fixed SS08 9 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 8 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/ArchLabs-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 4 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/tint2rc.backup.1689131957 b/.config/tint2/tint2rc.backup.1689131957 new file mode 100644 index 0000000..c76d689 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1689131957 @@ -0,0 +1,249 @@ +#---- Generated by tint2conf 57fd ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Button, Clock, Systray +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #040404 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PFSC +panel_size = 100% 32 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 5 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = none +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 98 0 10 +mouse_pressed_icon_asb = 100 0 1 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 0 +task_centered = 0 +urgent_nb_of_blink = 20 +task_maximum_size = 0 0 +task_padding = 0 0 0 +task_font = monospace 0 +task_tooltip = 0 +task_thumbnail = 0 +task_thumbnail_size = 8 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 0 0 0 +task_active_icon_asb = 0 0 0 +task_urgent_icon_asb = 0 0 0 +task_iconified_icon_asb = 0 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = none +mouse_right = close +mouse_scroll_up = none +mouse_scroll_down = none + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 4 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 98 0 10 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Fixed SS08 9 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 8 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 0 +battery_low_cmd = +battery_full_cmd = +battery_font_color = #000000 100 +bat1_format = +bat2_format = +battery_padding = 0 0 +battery_background_id = -1 +battery_hide = 0 +battery_lclick_command = +battery_rclick_command = +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/ArchLabs-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 4 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/tint2rc.backup.1695770747 b/.config/tint2/tint2rc.backup.1695770747 new file mode 100644 index 0000000..e1745b5 --- /dev/null +++ b/.config/tint2/tint2rc.backup.1695770747 @@ -0,0 +1,269 @@ +#---- Generated by tint2conf d453 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +rounded_corners = TL TR BL BR +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +rounded_corners = TL TR BL BR +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000 0 +border_color = #000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +rounded_corners = TL TR BL BR +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +rounded_corners = TL TR BL BR +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000 0 +background_color_hover = #888888 20 +border_color_hover = #000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000 0 + +# Background 5: Active taskbar, Panel +rounded = 0 +rounded_corners = +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #040404 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +rounded_corners = +border_width = 4 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +# Background 7: Button, Clock, Systray +rounded = 0 +rounded_corners = +border_width = 4 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000 0 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +#------------------------------------- +# Panel +panel_items = PFSC +panel_size = 100% 42 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 5 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = bottom center horizontal +panel_layer = top +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 98 0 10 +mouse_pressed_icon_asb = 100 1 1 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 0 +task_centered = 0 +urgent_nb_of_blink = 20 +task_maximum_size = 0 0 +task_padding = 0 0 0 +task_font = monospace 0 +task_tooltip = 0 +task_thumbnail = 0 +task_thumbnail_size = 8 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 0 0 0 +task_active_icon_asb = 0 0 0 +task_urgent_icon_asb = 0 0 0 +task_iconified_icon_asb = 0 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = none +mouse_right = close +mouse_scroll_up = none +mouse_scroll_down = none + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 8 8 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 98 0 10 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Nerd Font Medium 9 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 8 8 +clock_background_id = 7 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 0 +battery_low_cmd = +battery_full_cmd = +battery_font_color = #000 100 +bat1_format = +bat2_format = +battery_padding = 0 0 +battery_background_id = 0 +battery_hide = 101 +battery_lclick_command = +battery_rclick_command = +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/ArchLabs/symbolic/places/start-here-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000 100 +button_padding = 8 4 8 +button_background_id = 7 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/xstefen.tint2rc b/.config/tint2/xstefen.tint2rc new file mode 100644 index 0000000..7bb94f5 --- /dev/null +++ b/.config/tint2/xstefen.tint2rc @@ -0,0 +1,262 @@ +#---- Generated by tint2conf ca38 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Panel +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #040404 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +# Background 7: Button, Clock, Systray +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +#------------------------------------- +# Panel +panel_items = PFSC +panel_size = 100% 42 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 5 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = none +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 98 0 10 +mouse_pressed_icon_asb = 100 0 1 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 0 +task_centered = 0 +urgent_nb_of_blink = 20 +task_maximum_size = 0 0 +task_padding = 0 0 0 +task_font = monospace 0 +task_tooltip = 0 +task_thumbnail = 0 +task_thumbnail_size = 8 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 0 0 0 +task_active_icon_asb = 0 0 0 +task_urgent_icon_asb = 0 0 0 +task_iconified_icon_asb = 0 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = none +mouse_right = close +mouse_scroll_up = none +mouse_scroll_down = none + +#------------------------------------- +# System tray (notification area) +systray_padding = 0 8 8 +systray_background_id = 7 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 98 0 10 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka SS08 Semi-Bold 9 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 8 4 +clock_background_id = 7 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 0 +battery_low_cmd = +battery_full_cmd = +battery_font_color = #000000 100 +bat1_format = +bat2_format = +battery_padding = 0 0 +battery_background_id = 0 +battery_hide = 101 +battery_lclick_command = +battery_rclick_command = +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/ArchLabs-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 4 +button_background_id = 7 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/xstefen.tint2rc.backup.1686548709 b/.config/tint2/xstefen.tint2rc.backup.1686548709 new file mode 100644 index 0000000..367afba --- /dev/null +++ b/.config/tint2/xstefen.tint2rc.backup.1686548709 @@ -0,0 +1,254 @@ +#---- Generated by tint2conf 7f82 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Battery, Button, Clock, Systray +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #040404 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PTSC +panel_size = 100% 27 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 98 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 4 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 98 0 10 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %I:%M +time2_format = +time1_font = Iosevka Semi-Bold 11 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 8 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/ArchLabs-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 4 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/xstefen.tint2rc.backup.1689131988 b/.config/tint2/xstefen.tint2rc.backup.1689131988 new file mode 100644 index 0000000..f84b1f3 --- /dev/null +++ b/.config/tint2/xstefen.tint2rc.backup.1689131988 @@ -0,0 +1,254 @@ +#---- Generated by tint2conf aa77 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Battery, Button, Clock, Systray +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #040404 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PTSC +panel_size = 100% 27 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 0 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = top center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = follow_size +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 98 0 10 +mouse_pressed_icon_asb = 100 0 0 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 1 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 1 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 10 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 1 +task_centered = 1 +urgent_nb_of_blink = 20 +task_maximum_size = 24 20 +task_padding = 6 4 4 +task_font = monospace 10 +task_tooltip = 1 +task_thumbnail = 0 +task_thumbnail_size = 210 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 80 0 0 +task_active_icon_asb = 100 0 0 +task_urgent_icon_asb = 100 0 0 +task_iconified_icon_asb = 80 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = close +mouse_right = none +mouse_scroll_up = toggle +mouse_scroll_down = iconify + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 4 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 98 0 10 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 +launcher_item_app = /usr/share/applications/exo-terminal-emulator.desktop +launcher_item_app = /usr/share/applications/exo-file-manager.desktop +launcher_item_app = /usr/share/applications/exo-web-browser.desktop + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Fixed SS08 9 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 8 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 20 +battery_low_cmd = notify-send "Battery Low" +battery_full_cmd = +bat1_font = sans 11 +bat2_font = sans 0 +battery_font_color = #b5b5b5 100 +bat1_format = +bat2_format = +battery_padding = 4 2 +battery_background_id = 5 +battery_hide = 101 +battery_lclick_command = xfce4-power-manager-settings +battery_rclick_command = xfce4-power-manager-settings +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/ArchLabs-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 4 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/tint2/xstefen.tint2rc.backup.1689132942 b/.config/tint2/xstefen.tint2rc.backup.1689132942 new file mode 100644 index 0000000..59fd94f --- /dev/null +++ b/.config/tint2/xstefen.tint2rc.backup.1689132942 @@ -0,0 +1,249 @@ +#---- Generated by tint2conf bac7 ---- +# See https://gitlab.com/o9000/tint2/wikis/Configure for +# full documentation of the configuration options. +#------------------------------------- +# Gradients +#------------------------------------- +# Backgrounds +# Background 1: Active task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #1793d1 100 +background_color_hover = #888888 20 +border_color_hover = #1793d1 100 +background_color_pressed = #888888 20 +border_color_pressed = #1793d1 100 + +# Background 2: Default task, Iconified task +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 0 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #888888 20 +background_color_pressed = #888888 20 +border_color_pressed = #888888 20 + +# Background 3: Urgent task +rounded = 0 +border_width = 3 +border_sides = T +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #888888 0 +border_color = #e64141 100 +background_color_hover = #888888 20 +border_color_hover = #e64141 100 +background_color_pressed = #888888 20 +border_color_pressed = #e64141 100 + +# Background 4: Inactive taskbar +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #212121 90 +border_color = #000000 0 +background_color_hover = #888888 20 +border_color_hover = #000000 0 +background_color_pressed = #888888 20 +border_color_pressed = #000000 0 + +# Background 5: Active taskbar, Button, Clock, Panel, Systray +rounded = 0 +border_width = 0 +border_sides = LR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #040404 90 +border_color = #d8d8d8 0 +background_color_hover = #d8d8d8 0 +border_color_hover = #d8d8d8 0 +background_color_pressed = #d8d8d8 0 +border_color_pressed = #d8d8d8 0 + +# Background 6: Launcher, Tooltip +rounded = 0 +border_width = 0 +border_sides = TBLR +border_content_tint_weight = 0 +background_content_tint_weight = 0 +background_color = #000000 100 +border_color = #222222 90 +background_color_hover = #2b303b 100 +border_color_hover = #222222 90 +background_color_pressed = #2b303b 100 +border_color_pressed = #222222 90 + +#------------------------------------- +# Panel +panel_items = PFSC +panel_size = 100% 44 +panel_margin = 0 0 +panel_padding = 0 0 0 +panel_background_id = 5 +wm_menu = 1 +panel_dock = 0 +panel_pivot_struts = 0 +panel_position = bottom center horizontal +panel_layer = bottom +panel_monitor = all +panel_shrink = 0 +autohide = 0 +autohide_show_timeout = 0.3 +autohide_hide_timeout = 1.5 +autohide_height = 6 +strut_policy = none +panel_window_name = tint2 +disable_transparency = 0 +mouse_effects = 1 +font_shadow = 0 +mouse_hover_icon_asb = 98 0 10 +mouse_pressed_icon_asb = 100 0 1 +scale_relative_to_dpi = 0 +scale_relative_to_screen_height = 0 + +#------------------------------------- +# Taskbar +taskbar_mode = multi_desktop +taskbar_hide_if_empty = 0 +taskbar_padding = 0 0 0 +taskbar_background_id = 4 +taskbar_active_background_id = 5 +taskbar_name = 0 +taskbar_hide_inactive_tasks = 0 +taskbar_hide_different_monitor = 0 +taskbar_hide_different_desktop = 0 +taskbar_always_show_all_desktop_tasks = 0 +taskbar_name_padding = 4 4 +taskbar_name_background_id = 0 +taskbar_name_active_background_id = 0 +taskbar_name_font = monospace 9 +taskbar_name_font_color = #828282 100 +taskbar_name_active_font_color = #a0a0bd 100 +taskbar_distribute_size = 0 +taskbar_sort_order = none +task_align = left + +#------------------------------------- +# Task +task_text = 0 +task_icon = 0 +task_centered = 0 +urgent_nb_of_blink = 20 +task_maximum_size = 0 0 +task_padding = 0 0 0 +task_font = monospace 0 +task_tooltip = 0 +task_thumbnail = 0 +task_thumbnail_size = 8 +task_font_color = #828282 60 +task_active_font_color = #828282 100 +task_urgent_font_color = #ffffff 100 +task_iconified_font_color = #d8d8d8 60 +task_icon_asb = 0 0 0 +task_active_icon_asb = 0 0 0 +task_urgent_icon_asb = 0 0 0 +task_iconified_icon_asb = 0 0 0 +task_background_id = 2 +task_active_background_id = 1 +task_urgent_background_id = 3 +task_iconified_background_id = 2 +mouse_left = toggle_iconify +mouse_middle = none +mouse_right = close +mouse_scroll_up = none +mouse_scroll_down = none + +#------------------------------------- +# System tray (notification area) +systray_padding = 8 4 4 +systray_background_id = 5 +systray_sort = right2left +systray_icon_size = 16 +systray_icon_asb = 98 0 10 +systray_monitor = 1 +systray_name_filter = + +#------------------------------------- +# Launcher +launcher_padding = 5 0 5 +launcher_background_id = 6 +launcher_icon_background_id = 0 +launcher_icon_size = 16 +launcher_icon_asb = 100 0 0 +launcher_icon_theme_override = 0 +startup_notifications = 1 +launcher_tooltip = 1 + +#------------------------------------- +# Clock +time1_format = %I:%M %p +time2_format = +time1_font = Iosevka Fixed SS08 9 +time1_timezone = +time2_timezone = +clock_font_color = #ffffff 100 +clock_padding = 8 4 +clock_background_id = 5 +clock_tooltip = +clock_tooltip_timezone = +clock_lclick_command = gsimplecal +clock_rclick_command = gsimplecal +clock_mclick_command = +clock_uwheel_command = +clock_dwheel_command = + +#------------------------------------- +# Battery +battery_tooltip = 1 +battery_low_status = 0 +battery_low_cmd = +battery_full_cmd = +battery_font_color = #000000 100 +bat1_format = +bat2_format = +battery_padding = 0 0 +battery_background_id = 0 +battery_hide = 101 +battery_lclick_command = +battery_rclick_command = +battery_mclick_command = +battery_uwheel_command = +battery_dwheel_command = +ac_connected_cmd = +ac_disconnected_cmd = + +#------------------------------------- +# Button 1 +button = new +button_icon = /usr/share/icons/ArchLabs-Dark/symbolic/actions/view-app-grid-symbolic.svg +button_text = +button_lclick_command = jgmenu_run >/dev/null 2>&1 & +button_rclick_command = exo-open ~/.config/jgmenu/jgmenurc +button_mclick_command = +button_uwheel_command = +button_dwheel_command = +button_font_color = #000000 100 +button_padding = 8 4 +button_background_id = 5 +button_centered = 1 +button_max_icon_size = 16 + +#------------------------------------- +# Tooltip +tooltip_show_timeout = 0 +tooltip_hide_timeout = 0 +tooltip_padding = 10 6 +tooltip_background_id = 6 +tooltip_font_color = #d8d8d8 100 +tooltip_font = sans 10 + diff --git a/.config/user-dirs.dirs b/.config/user-dirs.dirs new file mode 100644 index 0000000..7f9a959 --- /dev/null +++ b/.config/user-dirs.dirs @@ -0,0 +1,15 @@ +# This file is written by xdg-user-dirs-update +# If you want to change or add directories, just edit the line you're +# interested in. All local changes will be retained on the next run. +# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped +# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an +# absolute path. No other format is supported. +# +XDG_DESKTOP_DIR="$HOME/Desktop" +XDG_DOWNLOAD_DIR="$HOME/Downloads" +XDG_TEMPLATES_DIR="$HOME/Templates" +XDG_PUBLICSHARE_DIR="$HOME/Public" +XDG_DOCUMENTS_DIR="$HOME/Documents" +XDG_MUSIC_DIR="$HOME/Music" +XDG_PICTURES_DIR="$HOME/Pictures" +XDG_VIDEOS_DIR="$HOME/Videos" diff --git a/.config/yadm/bootstrap b/.config/yadm/bootstrap new file mode 100644 index 0000000..d36eaf5 --- /dev/null +++ b/.config/yadm/bootstrap @@ -0,0 +1,11 @@ +#!/bin/sh + +# This is a file that contains needed bootstrap operations that are needed +# after initial clone of the dotfiles. + +# Because Git submodule commands cannot operate without a work tree, they must +# be run from within $HOME (assuming this is the root of your dotfiles) +cd "$HOME" + +echo "Init submodules" +yadm submodule update --recursive --init diff --git a/.config/yadm/config b/.config/yadm/config new file mode 100644 index 0000000..e69de29 diff --git a/.config/yadm/encrypt b/.config/yadm/encrypt new file mode 100644 index 0000000..d263c45 --- /dev/null +++ b/.config/yadm/encrypt @@ -0,0 +1,6 @@ +# https://yadm.io/docs/encryption# +.ssh/** +.gnupg/** +.android-certs/** +.config/rclone/** +.config/gh/** diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..3b2ad13 --- /dev/null +++ b/.gitconfig @@ -0,0 +1,69 @@ +[user] + name = Stefen Wakefield + email = me@xstefen.dev + signingkey = 0xF52B5BFA7BD26BB4 +[core] + abbrev = 12 + editor = nano +[commit] + gpgsign = true +[format] + signoff = true +[merge] + log = true + renamelimit = 7297 + tool = meld +[mergetool] + keepbackup = false +[mergetool "meld"] + cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED" +[diff] + tool = meld +[difftool] + prompt = false +[difftool "meld"] + cmd = meld "$LOCAL" "$REMOTE" +[credential] + helper = cache --timeout=7200 +[alias] + co = checkout + up = !git pull --rebase --prune $@ && git submodule update --init --recursive + cob = checkout -b + cm = !git add -A && git commit -m + save = !git add -A && git commit -m 'SAVEPOINT' + wip = commit -am "WIP" + undo = reset HEAD~1 --mixed + amend = commit -a --amend + cp = cherry-pick + cpa = cherry-pick --abort + cpc = cherry-pick --continue + yolo = !git add -A && git commit -m "$(curl --silent --fail https://whatthecommit.com/index.txt)" +[advice] + detachedhead = false +[pull] + rebase = true +[url "git@git.sr.ht:"] + pushInsteadOf = https://git.sr.ht/ +[url "git@github.com:"] + pushInsteadOf = git://github.com/ +[filter "lfs"] + required = true + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process +[credential "https://github.com"] + helper = + helper = !/usr/bin/gh auth git-credential +[credential "https://gist.github.com"] + helper = + helper = !/usr/bin/gh auth git-credential +[color] + branch = auto + diff = auto + interactive = auto + status = auto +[http] + postBuffer = 524288000 + cookiefile = /home/xstefen/.gitcookies +[safe] + directory = /mnt/files/Downloads/Fido diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..6bc40ad --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule ".config/kitty/kitty-themes"] + path = .config/kitty/kitty-themes + url = https://github.com/dexpota/kitty-themes +[submodule ".sbp"] + path = .sbp + url = https://github.com/brujoand/sbp diff --git a/.gtkrc-2.0 b/.gtkrc-2.0 new file mode 100644 index 0000000..04584d9 --- /dev/null +++ b/.gtkrc-2.0 @@ -0,0 +1,19 @@ +# DO NOT EDIT! This file will be overwritten by LXAppearance. +# Any customization should be done in ~/.gtkrc-2.0.mine instead. + +include "/home/xstefen/.gtkrc-2.0.mine" +gtk-theme-name="Plata-Noir" +gtk-icon-theme-name="ArchLabs-Dark" +gtk-font-name="Sans 9" +gtk-cursor-theme-name="Adwaita" +gtk-cursor-theme-size=32 +gtk-toolbar-style=GTK_TOOLBAR_ICONS +gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=0 +gtk-enable-input-feedback-sounds=0 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle="hintslight" +gtk-xft-rgba="rgb" diff --git a/.inputrc b/.inputrc new file mode 100644 index 0000000..1b9db05 --- /dev/null +++ b/.inputrc @@ -0,0 +1,58 @@ +# Make Tab autocomplete regardless of filename case +set completion-ignore-case on + +# List all matches in case multiple possible completions are possible +set show-all-if-ambiguous on + +# Immediately add a trailing slash when autocompleting symlinks to directories +set mark-symlinked-directories on + +# Show all autocomplete results at once +set page-completions off + +# If there are more than 200 possible completions for a word, ask to show them all +set completion-query-items 200 + +# Show extra file information when completing, like `ls -F` does +set visible-stats on + +# Be more intelligent when autocompleting by also looking at the text after +# the cursor. For example, when the current line is "cd ~/src/mozil", and +# the cursor is on the "z", pressing Tab will not autocomplete it to "cd +# ~/src/mozillail", but to "cd ~/src/mozilla". (This is supported by the +# Readline used by Bash 4.) +set skip-completed-text on + +# Allow UTF-8 input and output, instead of showing stuff like $'\0123\0456' +set input-meta on +set output-meta on +set convert-meta off + +# Flip through autocompletion matches with Shift-Tab. +"\e[Z": menu-complete + +# Key bindings, up/down arrow searches through history +"\e[A": history-search-backward +"\e[B": history-search-forward +"\eOA": history-search-backward +"\eOB": history-search-forward +# This file comes from 'skeswa/prompt'. + +# This file controls the behaviour of line input editing for +# programs that use the Gnu Readline library. + +# Makes tab completion more pleasant. +set show-all-if-ambiguous on +set completion-ignore-case on + +# Arrow keys in keypad mode. +"\C-[OA": history-search-backward +"\C-[OB": history-search-forward +"\C-[OC": forward-char +"\C-[OD": backward-char + +# Arrow keys in ANSI mode +"\C-[[A": history-search-backward +"\C-[[B": history-search-forward +"\C-[[C": forward-char +"\C-[[D": backward-char diff --git a/.kickshawrc b/.kickshawrc new file mode 100755 index 0000000..f3e8b2d --- /dev/null +++ b/.kickshawrc @@ -0,0 +1,22 @@ +# Generated by Kickshaw GTK3 1.0.73 + +[VIEW] + +sf-showmenuidcol=true +sf-showexecutecol=true +sf-showicons=true +sf-highlightsep=true +sf-showtreelines=true +sf-elmviscol=false +sf-highlightingstate=true +sf-gridstate=no_grid_lines + +[OPTIONS] + +sf-createbackup=true +sf-usetabs=true +sf-separaterootmenu=true +sf-sortoptions=false +sf-notifyaboutconversions=true +sf-useheaderbar=false +sf-showmenubutton=true diff --git a/.local/bin/$ b/.local/bin/$ new file mode 100755 index 0000000..6ec53ed --- /dev/null +++ b/.local/bin/$ @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# Ever pasted "$ somecommand" into the terminal and gotten this error? +# -bash: $: command not found + +# Begone, silly errors! Lazy copy + paste forever!! ETCETERA!!!! + +echo 'Quit pasting in commands from the internet, you lazy bum.' +"$@" diff --git a/.local/bin/Anytype-0.34.3_61d7dedec57aa8dec9d3e01ff6a0b455.AppImage b/.local/bin/Anytype-0.34.3_61d7dedec57aa8dec9d3e01ff6a0b455.AppImage new file mode 100755 index 0000000..a61b1f7 Binary files /dev/null and b/.local/bin/Anytype-0.34.3_61d7dedec57aa8dec9d3e01ff6a0b455.AppImage differ diff --git a/.local/bin/__pycache__/exrex.cpython-311.pyc b/.local/bin/__pycache__/exrex.cpython-311.pyc new file mode 100644 index 0000000..9aa7f18 Binary files /dev/null and b/.local/bin/__pycache__/exrex.cpython-311.pyc differ diff --git a/.local/bin/__pycache__/fbpack.cpython-311.pyc b/.local/bin/__pycache__/fbpack.cpython-311.pyc new file mode 100644 index 0000000..a258dbb Binary files /dev/null and b/.local/bin/__pycache__/fbpack.cpython-311.pyc differ diff --git a/.local/bin/__pycache__/packedstruct.cpython-311.pyc b/.local/bin/__pycache__/packedstruct.cpython-311.pyc new file mode 100644 index 0000000..c9fc05e Binary files /dev/null and b/.local/bin/__pycache__/packedstruct.cpython-311.pyc differ diff --git a/.local/bin/__pycache__/readelf.cpython-311.pyc b/.local/bin/__pycache__/readelf.cpython-311.pyc new file mode 100644 index 0000000..ca3260f Binary files /dev/null and b/.local/bin/__pycache__/readelf.cpython-311.pyc differ diff --git a/.local/bin/aosp_gsi b/.local/bin/aosp_gsi new file mode 100755 index 0000000..8966cea --- /dev/null +++ b/.local/bin/aosp_gsi @@ -0,0 +1,43 @@ +#!/bin/bash + +. build/envsetup.sh + +PLATFORM="${1}" +SQUASH="${2}" + +TOP="${ANDROID_BUILD_TOP}" +MANIFEST="${TOP}/.repo/manifest.xml" +BRANCH=$(grep "default revision" "${MANIFEST}" \ + | sed 's/^ *//g;s/ /dev/null; then + git commit --no-edit + OLD_MSG=$(git log --format=%B -n1) + git commit --amend -m "[DNM] Squash of ${STAGINGBRANCH}" -m "$OLD_MSG" + fi + else + git merge --log aosp/"${PLATFORM}"-gsi + if [ $? -eq 1 ]; then read; fi + fi +done diff --git a/.local/bin/aosp_merge b/.local/bin/aosp_merge new file mode 100755 index 0000000..1611a2e --- /dev/null +++ b/.local/bin/aosp_merge @@ -0,0 +1,43 @@ +#!/bin/bash + +. build/envsetup.sh + +NEWTAG="${1}" +SQUASH="${2}" + +TOP="${ANDROID_BUILD_TOP}" +MANIFEST="${TOP}/.repo/manifests/default.xml" +BRANCH=$(grep "default revision" "${MANIFEST}" \ + | sed 's/^ *//g;s/ /dev/null; then + git commit --no-edit + OLD_MSG=$(git log --format=%B -n1) + git commit --amend -m "[DNM] Squash of ${STAGINGBRANCH}" -m "$OLD_MSG" + fi + else + git merge --log "${NEWTAG}" + if [ $? -eq 1 ]; then read; fi + fi +done diff --git a/.local/bin/aospdtgen b/.local/bin/aospdtgen new file mode 120000 index 0000000..8f3415f --- /dev/null +++ b/.local/bin/aospdtgen @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/aospdtgen/bin/aospdtgen \ No newline at end of file diff --git a/.local/bin/backup_home.sh b/.local/bin/backup_home.sh new file mode 100755 index 0000000..da9e0c3 --- /dev/null +++ b/.local/bin/backup_home.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# What to backup. +bfiles=".local/bin .ssh .gnupg .config .xstefenrc .gitconfig \ + .bashrc .inputrc .nanorc .xprofile \ + .android-certs android/utils android/stock" + +# Where to backup to. +bdest="/mnt/seagate/Backups/" + +# Create archive filename. +bdate=$(date +%Y%m%d) +bhost=$(hostname -s) +barchive="$bhost-$bdate.tgz" + +# Print start status message. +echo "Backing up $bfiles to $bdest/$barchive" +date +echo + +# Backup the files using tar. +tar czf $bdest/$barchive $bfiles + +# Print end status message. +echo +echo "Backup finished" +date + +# Long listing of files in $dest to check file sizes. +ls -lh $bdest diff --git a/.local/bin/bar b/.local/bin/bar new file mode 100755 index 0000000..0dc8bb5 --- /dev/null +++ b/.local/bin/bar @@ -0,0 +1,196 @@ +#!/bin/bash +# shellcheck disable=SC2059,SC2064,SC2086 + +# simple lightweight lemonbar script for use with dk + +set -eE -o pipefail + +bg="#111111" +fg="#666666" +highlight="#6699ee" +underline=3 +separator="┃" + +# xfonts (adjust size based on resolution) +px=$(xrandr | grep ' connected' | tail -n1 | grep -o '[0-9]\+x[0-9]\+' | cut -d'x' -f2) +mm=$(xrandr | grep ' connected' | tail -n1 | grep -o '[0-9]\+mm' | tail -n1 | sed 's/mm//') +dpi=$(( (px / mm) * 25 )) + +if (( dpi >= 140 )); then + font0="-xos4-terminus-medium-r-normal--24-240-72-72-c-120-iso10646-1" +elif (( dpi >= 120 )); then + font0="-xos4-terminus-medium-r-normal--18-240-72-72-c-120-iso10646-1" +elif (( dpi >= 100 )); then + font0="-xos4-terminus-medium-r-normal--14-240-72-72-c-120-iso10646-1" +else + font0="-xos4-terminus-medium-r-normal--12-240-72-72-c-120-iso10646-1" +fi + +font1="" +font2="" +font3="" + +# xft fonts +# font0="monospace:pixelsize=24" +# font1="Font Awesome 5 Brands:pixelsize=20" +# font2="icomoon:pixelsize=18" +# font3="Anonymice Nerd Font Mono:pixelsize=18" + +fifo="/tmp/bar.fifo" + +# mimic dwm style layout symbols +typeset -A layouts=( +[tile]="[]=" +[mono]="[M]" +[none]="><>" +[grid]="###" +[spiral]="(@)" +[dwindle]="[\\]" +[tstack]="F^F" +) + +clock() +{ + if [[ $1 ]]; then + while :; do + date +"T%%{A1:$1:} %a %H:%M %%{A}" + sleep 60 + done + else + while :; do + date +"T %a %H:%M " + sleep 60 + done + fi +} + +battery() +{ + if [[ $1 ]]; then + while :; do + lvl=$(acpi --battery 2>/dev/null | grep -v 'Unknown\| 0%' | cut -d, -f2 | tr -d '[:space:]') + if [[ $lvl ]]; then + printf 'B%s\n' "%{A1:$1:} Bat: $(acpi --battery 2>/dev/null | grep -v 'Unknown\| 0%' | cut -d, -f2 | tr -d '[:space:]') %{A}${separator}" + sleep 60 + else + return # no battery so we don't need to continue + fi + done + else + while :; do + lvl=$(acpi --battery 2>/dev/null | grep -v 'Unknown\| 0%' | cut -d, -f2 | tr -d '[:space:]') + if [[ $lvl ]]; then + printf 'B%s\n' " Bat: $(acpi --battery 2>/dev/null | grep -v 'Unknown\| 0%' | cut -d, -f2 | tr -d '[:space:]') ${separator}" + sleep 60 + else + return # no battery so we don't need to continue + fi + done + fi +} + +volume() +{ + if [[ $1 ]]; then + while :; do + printf 'V%s\n' "%{A1:$1:} Vol: $(pamixer --get-volume-human) %{A}${separator}" + sleep 1 + done + else + while :; do + printf 'V%s\n' " Vol: $(pamixer --get-volume-human) ${separator}" + sleep 1 + done + fi +} + +network() +{ + check() + { + if hash nm-online > /dev/null 2>&1 && [[ $(systemctl is-active NetworkManager.service) == "active" ]]; then + nm-online > /dev/null 2>&1 + else + ping -qc1 'archlinux.org' > /dev/null 2>&1 + fi + } + + if [[ $1 ]]; then + until check; do + printf 'N%s\n' "%{A1:$1:} disconnected %{A}${separator}" + sleep 30 + done + while :; do + printf 'N%s\n' "%{A1:$1:} connected %{A}${separator}" + sleep 240 + done + else + until check; do + printf 'N%s\n' " disconnected %{A}${separator}" + sleep 30 + done + while :; do + printf 'N%s\n' " connected %{A}${separator}" + sleep 240 + done + fi +} + +parsefifo() +{ + typeset f='' b='' u='' wm='' time='' net='' bat='' vol='' title='' layout='' + + while read -r line; do + case $line in + T*) time="${line#?}" ;; + V*) vol="${line#?}" ;; + B*) bat="${line#?}" ;; + N*) net="${line#?}" ;; + A*) title="${line#?}"; title="${title:0:50}";; + L*) l="${line#?}"; layout="${layouts[$l]}" ;; + W*) + wm='' IFS=':' # set the internal field separator to ':' + set -- ${line#?} # split the line into arguments ($@) based on the field separator + for item in "$@"; do + name=${item#?} + case $item in + A*) f="$highlight" b="$bg" u="$highlight" ;; # occupied - focused + a*) f="$fg" b="$bg" u="$highlight" ;; # occupied - unfocused + I*) f="$highlight" b="$bg" u="$fg" ;; # unoccupied - focused + i*) f="$fg" b="$bg" u="$fg" ;; # unoccupied - unfocused + esac + wm="$wm%{F$f}%{B$b}%{+u}%{U$u}%{A:dkcmd ws $name:} $name %{A}%{-u}%{B-}%{F-}" + done + ;; + esac + printf "%s\n" "%{l}$wm $separator $layout%{c}$title%{r}${net}${bat}${vol}${time}" + done +} + + +# kill the process and cleanup if we exit or get killed +trap "trap - TERM; kill 0; rm -f '$fifo'" INT TERM QUIT EXIT PIPE + +# make the fifo +[ -e "$fifo" ] && rm "$fifo" +mkfifo "$fifo" + + +# here we dump info into the FIFO, order does not matter things are parsed +# out using the first character of the line. Click commands for left button +# can be added by passing an argument containing the command (like volume below) +network 'al-terminal -e nmtui-connect' > "$fifo" & +clock 'gsimplecal' > "$fifo" & +battery '' > "$fifo" & +volume 'pavucontrol' > "$fifo" & +dkcmd status type=bar > "$fifo" & + + +# run the pipeline +if [[ $1 == '-b' ]]; then + parsefifo < "$fifo" | lemonbar -b -a 32 -u $underline -B "$bg" -F "$fg" -f "$font0" -f "$font1" -f "$font2" -f "$font3" | sh +else + parsefifo < "$fifo" | lemonbar -a 32 -u $underline -B "$bg" -F "$fg" -f "$font0" -f "$font1" -f "$font2" -f "$font3" | sh +fi + +# vim:ft=sh:fdm=marker:fmr={,} diff --git a/.local/bin/bash-template.sh b/.local/bin/bash-template.sh new file mode 100644 index 0000000..3434eb1 --- /dev/null +++ b/.local/bin/bash-template.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash + +set -Eeuo pipefail +trap cleanup SIGINT SIGTERM ERR EXIT + +script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) + +usage() { + cat <] [-s ] [-p ] [-o] [-f] + +Script description here. + +Available options: + +-h, --help Print this help and exit +-c, --clobber Wipe the out directory +-i, --installclean Remove installed files +-r, --repo-sync Sync repos before build +-v, --variant Target build variant (eng, userdebug, user) +-j, --jobs Specify how many threads to use (defaults to auto) +-m, --module Build a particular module +-s, --sign-keys Location of signing keys to sign build with +-p, --pwfile Signing keys passwd file if used +-o, --ota Generate an OTA zip +-f, --fastboot Generate a fastboot images zip + +EOF + exit +} + +cleanup() { + trap - SIGINT SIGTERM ERR EXIT + # script cleanup here +} + +setup_colors() { + if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then + NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m' + else + NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW='' + fi +} + +msg() { + echo >&2 -e "${1-}" +} + +die() { + local msg=$1 + local code=${2-1} # default exit status 1 + msg "$msg" + exit "$code" +} + +parse_params() { + # default values of variables set from params + flag=0 + param='' + + while :; do + case "${1-}" in + -h | --help) usage ;; + -v | --verbose) set -x ;; + --no-color) NO_COLOR=1 ;; + -f | --flag) flag=1 ;; + -p | --param) + param="${2-}" + shift + ;; + -?*) die "Unknown option: $1" ;; + *) break ;; + esac + shift + done + + args=("$@") + + # check required params and arguments + [[ -z "${param-}" ]] && die "Missing required parameter: param" + [[ ${#args[@]} -eq 0 ]] && die "Missing script arguments" + + return 0 +} + +parse_params "$@" +setup_colors + +# script logic here + +msg "${RED}Read parameters:${NOFORMAT}" +msg "- flag: ${flag}" +msg "- param: ${param}" +msg "- arguments: ${args[*]-}" \ No newline at end of file diff --git a/.local/bin/best_kernel b/.local/bin/best_kernel new file mode 100755 index 0000000..3d5cd1a --- /dev/null +++ b/.local/bin/best_kernel @@ -0,0 +1,111 @@ +#!/usr/bin/env python + +import argparse +import sys +import time + +from multiprocessing import Event, Pool, Process, Queue +from queue import Empty +from subprocess import Popen, PIPE + + +def run_subprocess(cmd): + sp = Popen(cmd, stdout=PIPE, stderr=PIPE, + shell=True, universal_newlines=True) + comm = sp.communicate() + exit_code = sp.returncode + if exit_code != 0: + print("There was an error running the subprocess.\n" + "cmd: %s\n" + "exit code: %d\n" + "stdout: %s\n" + "stderr: %s" % (cmd, exit_code, comm[0], comm[1])) + return comm + + +def get_tags(tag_name): + cmd = "git tag -l %s" % tag_name + comm = run_subprocess(cmd) + return comm[0].strip("\n").split("\n") + + +def get_total_changes(tag_name): + cmd = "git diff %s --shortstat" % tag_name + comm = run_subprocess(cmd) + try: + a, d = comm[0].split(",")[1:] + a = int(a.strip().split()[0]) + d = int(d.strip().split()[0]) + except ValueError: + total = None + else: + total = a + d + return total + + +def worker(tag_name): + tc = get_total_changes(tag_name) + worker.q.put((tag_name, tc)) + + +def worker_init(q): + worker.q = q + + +def background(q, e, s): + best = 9999999999999 + tag = "" + while True: + try: + tn, tc = q.get(False) + except Empty: + if e.is_set(): + break + else: + if not s: + print("%s has %d lines changed" % (tn, tc)) + if best > tc: + best = tc + tag = tn + if not s: + print("%s is the new best match with %d lines changed" % (tn, tc)) + print("Best match") + print("TAG: %s" % tag) + print("Lines changed: %d" % best) + + +def main(): + import argparse # Only needed for main() + parser = argparse.ArgumentParser() + parser.add_argument("-j", action="store", dest="jobs", default=1, type=int, + metavar="N", help="number of jobs to run at once") + parser.add_argument("-s", action="store_true", dest="silent", default=False, + help="reduce the verbosity of the output") + parser.add_argument("tag_name", metavar="", + help="tag name to search for (can contain wildcards)") + args = parser.parse_args() + + tags = get_tags(args.tag_name) + if not tags: + print("No tags to check. bailing.") + sys.exit(1) + if not args.silent: + print("number of tags to check: %d" % len(tags)) + + queue = Queue() + event = Event() + + b = Process(target=background, args=(queue, event, args.silent)) + b.start() + + pool = Pool(args.jobs, worker_init, [queue]) + pool.map(worker, tags) + + pool.close() + pool.join() + event.set() + b.join() + + +if __name__ == '__main__': + main() diff --git a/.local/bin/bin2hex.py b/.local/bin/bin2hex.py new file mode 100755 index 0000000..3aabd33 --- /dev/null +++ b/.local/bin/bin2hex.py @@ -0,0 +1,115 @@ +#!/usr/bin/python3 + +# Copyright (c) 2008-2018 Alexander Belchenko +# All rights reserved. +# +# Redistribution and use in source and binary forms, +# with or without modification, are permitted provided +# that the following conditions are met: +# +# * Redistributions of source code must retain +# the above copyright notice, this list of conditions +# and the following disclaimer. +# * Redistributions in binary form must reproduce +# the above copyright notice, this list of conditions +# and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the author nor the names +# of its contributors may be used to endorse +# or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +'''Intel HEX file format bin2hex convertor utility.''' + +VERSION = '2.2' + +if __name__ == '__main__': + import getopt + import os + import sys + + usage = '''Bin2Hex convertor utility. +Usage: + python bin2hex.py [options] INFILE [OUTFILE] + +Arguments: + INFILE name of bin file for processing. + Use '-' for reading from stdin. + + OUTFILE name of output file. If omitted then output + will be writing to stdout. + +Options: + -h, --help this help message. + -v, --version version info. + --offset=N offset for loading bin file (default: 0). +''' + + offset = 0 + + try: + opts, args = getopt.getopt(sys.argv[1:], "hv", + ["help", "version", "offset="]) + + for o, a in opts: + if o in ("-h", "--help"): + print(usage) + sys.exit(0) + elif o in ("-v", "--version"): + print(VERSION) + sys.exit(0) + elif o in ("--offset"): + base = 10 + if a[:2].lower() == '0x': + base = 16 + try: + offset = int(a, base) + except: + raise getopt.GetoptError('Bad offset value') + + if not args: + raise getopt.GetoptError('Input file is not specified') + + if len(args) > 2: + raise getopt.GetoptError('Too many arguments') + + except getopt.GetoptError: + msg = sys.exc_info()[1] # current exception + txt = 'ERROR: '+str(msg) # that's required to get not-so-dumb result from 2to3 tool + print(txt) + print(usage) + sys.exit(2) + + from intelhex import compat + + fin = args[0] + if fin == '-': + # read from stdin + fin = compat.get_binary_stdin() + elif not os.path.isfile(fin): + txt = "ERROR: File not found: %s" % fin # that's required to get not-so-dumb result from 2to3 tool + print(txt) + sys.exit(1) + + if len(args) == 2: + fout = args[1] + else: + # write to stdout + fout = sys.stdout # compat.get_binary_stdout() + + from intelhex import bin2hex + sys.exit(bin2hex(fin, fout, offset)) diff --git a/.local/bin/bonsai b/.local/bin/bonsai new file mode 100755 index 0000000..ce74ab3 --- /dev/null +++ b/.local/bin/bonsai @@ -0,0 +1,554 @@ +#!/usr/bin/env bash + +# I'm a bonsai-making machine! + +################################################# +## +# author: John Allbritten +# my website: theSynAck.com +# +# repo: https://gitlab.com/jallbrit +# script can be found in the bin/bin/fun folder. +# +# license: this script is published under GPLv3. +# I don't care what you do with it, but I do ask +# that you leave this message please! +# +# inspiration: http://andai.tv/bonsai/ +# andai's version was written in JS and served +# as the basis for this script. Originally, this +# was just a port. +## +################################################# + +# ------ vars ------ +# CLI options + +flag_h=false +live=false +infinite=false + +termCols=$(tput cols) +termRows=$(tput lines) +geometry="$((termCols - 1)),$termRows" + +leafchar='&' +termColors=false + +message="" +flag_m=false +basetype=1 +multiplier=5 + +lifeStart=28 +steptime=0.01 # time between steps + +# non-CLI options +lineWidth=4 # words per line + +# ------ parse options ------ + +OPTS="hlt:ig:c:Tm:b:M:L:" # the colon means it requires a value +LONGOPTS="help,live,time:,infinite,geo:,leaf:,termcolors,message:,base:,multiplier:,life:" + +parsed=$(getopt --options=$OPTS --longoptions=$LONGOPTS -- "$@") +eval set -- "${parsed[@]}" + +while true; do + case "$1" in + -h|--help) + flag_h=true + shift + ;; + + -l|--live) + live=true + shift + ;; + + -t|--time) + steptime="$2" + shift 2 + ;; + + -i|--infinite) + infinite=true + shift + ;; + + -g|--geo) + geo=$2 + shift 2 + ;; + + -c|--leaf) + leafchar="$2" + shift 2 + ;; + + -T|--termcolors) + termColors=true + shift + ;; + + -m|--message) + flag_m=true + message="$2" + shift 2 + ;; + + -b|--basetype) + basetype="$2" + shift 2 + ;; + + -M|--multiplier) + multiplier="$2" + shift 2 + ;; + + -L|--life) + lifeStart="$2" + shift 2 + ;; + + --) # end of arguments + shift + break + ;; + + *) + echo "error while parsing CLI options" + flag_h=true + ;; + esac +done + +HELP="Usage: bonsai [-h] [-i] [-l] [-T] [-m message] [-t time] + [-g x,y] [ -c char] [-M 0-9] + +bonsai.sh is a static and live bonsai tree generator, written in bash. + +optional args: + -l, --live enable live generation + -t, --time time time between each step of growth [default: 0.01] + -m, --message text attach a message to the tree + -b, --basetype 0-2 which ascii-art plant base to use (0 for none) [default: 1] + -i, --infinite keep generating trees until quit (2s between each) + -T, --termcolors use terminal colors + -g, --geo geo set custom geometry [default: fit to terminal] + -c, --leaf char character used for leaves [default: &] + -M, --multiplier 0-9 branch multiplier; higher equals more branching [default: 5] + -L, --life int life of tree; higher equals more overall growth [default: 28] + -h, --help show help" + +# check for help +$flag_h && echo -e "$HELP" && exit 0 + +# geometry processing +cols=$(echo "$geometry" | cut -d ',' -f1) # width; X +rows=$(echo "$geometry" | cut -d ',' -f2) # height; Y + +IFS=$'\n' # delimit strings by newline +tabs 4 # set tabs to 4 spaces + +declare -A gridMessage + +# message processing +if [ $flag_m = true ]; then + + messageWidth=20 + + # make room for the message to go on the right side + cols=$((cols - messageWidth - 8 )) + + # wordwrap message, delimiting by spaces + message="$(echo "$message" | fold -sw $messageWidth)" + + # get number of lines in the message + messageLineCount=0 + for line in $message; do + messageLineCount=$((messageLineCount + 1)) + done + + messageOffset=$((rows - messageLineCount - 7)) + + # put lines of message into a grid + index=$messageOffset + for line in $message; do + gridMessage[$index]="$line" + index=$((index + 1)) + done +fi + +# define colors +if [ $termColors = true ]; then + LightBrown='\e[1;33m' + DarkBrown='\e[0;33m' + BrownGreen='\e[1;32m' + Green='\e[0;32m' +else + LightBrown='\e[38;5;172m' + DarkBrown='\e[38;5;130m' + BrownGreen='\e[38;5;142m' + Green='\e[38;5;106m' +fi +Grey='\e[1;30m' +R='\e[0m' + +# create ascii base in lines +base="" +case $basetype in + 0) + base="" ;; + + 1) + width=15 + art="\ +${Grey}:${Green}___________${DarkBrown}./~~\\.${Green}___________${Grey}: + \\ / + \\________________________/ + (_) (_)" + ;; + + 2) + width=7 + art="\ +${Grey}(${Green}---${DarkBrown}./~~\\.${Green}---${Grey}) + ( ) + (________)" + ;; +esac + +# get base height +baseHeight=0 +for line in $art; do + baseHeight=$(( baseHeight + 1 )) +done + +# add spaces before base so that it's in the middle of the terminal +iter=1 +for line in $art; do + filler='' + for (( i=0; i < $(( (cols / 2) - width )); i++)); do + filler+=" " + done + base+="${filler}${line}" + [ $iter -ne $baseHeight ] && base+='\n' + iter=$((iter+1)) +done +unset IFS # reset delimiter + +rows=$((rows - baseHeight)) + +declare -A grid # must be done outside function for unknown reason + +trap 'echo "press q to quit"' SIGINT # disable CTRL+C + +init() { + branches=0 + shoots=0 + + branchesMax=$((multiplier * 110)) + shootsMax=$multiplier + + # fill grid full of spaces + for (( row=0; row < $rows; row++ )); do + for (( col=0; col < $cols; col++ )); do + grid[$row,$col]=' ' + done + done + + # No echo stdin and hide the cursor + if [ $live = true ]; then + stty -echo + echo -ne "\e[?25l" + + echo -ne "\e[2J" + fi +} + +grow() { + local start=$((cols / 2)) + + local x=$((cols / 2)) # start halfway across the screen + local y=$rows # start just above the base + + branch $x $y trunk $lifeStart +} + +branch() { + # argument declarations + local x=$1 + local y=$2 + local type=$3 + local life=$4 + local dx=0 + local dy=0 + + # check if the user is hitting q + timeout=0.001 + [ $live = "false" ] && timeout=.0001 + read -n 1 -t $timeout input + [ "$input" = "q" ] && clean "quit" + + branches=$((branches + 1)) + + # as long as we're alive... + while [ $life -gt 0 ]; do + + life=$((life - 1)) # ensure life ends + + # case $life in + # [0]) type=dead ;; + # [1-4]) type=dying ;; + # esac + + # set dy based on type + case $type in + shoot*) # if this is a shoot, trend horizontal/downward growth + case "$((RANDOM % 10))" in + [0-1]) dy=-1 ;; + [2-7]) dy=0 ;; + [8-9]) dy=1 ;; + esac + ;; + + dying) # discourage vertical growth + case "$((RANDOM % 10))" in + [0-1]) dy=-1 ;; + [2-8]) dy=0 ;; + [9-10]) dy=1 ;; + esac + ;; + + *) # otherwise, let it grow up/not at all + dy=0 + [ $life -ne $lifeStart ] && [ $((RANDOM % 10)) -gt 2 ] && dy=-1 + ;; + esac + # if we're about to hit the ground, cut it off + [ $dy -gt 0 ] && [ $y -gt $(( rows - 1 )) ] && dy=0 + [ $type = "trunk" ] && [ $life -lt 4 ] && dy=0 + + # set dx based on type + case $type in + shootLeft) # tend left: dx=[-2,1] + case $(( RANDOM % 10 )) in + [0-1]) dx=-2 ;; + [2-5]) dx=-1 ;; + [6-8]) dx=0 ;; + [9]) dx=1 ;; + esac ;; + + shootRight) # tend right: dx=[-1,2] + case $(( RANDOM % 10 )) in + [0-1]) dx=2 ;; + [2-5]) dx=1 ;; + [6-8]) dx=0 ;; + [9]) dx=-1 ;; + esac ;; + + dying) # tend left/right: dx=[-3,3] + dx=$(( (RANDOM % 7) - 3)) ;; + + *) # tend equal: dx=[-1,1] + dx=$(( (RANDOM % 3) - 1)) ;; + + esac + + # re-branch upon conditions + if [ $branches -lt $branchesMax ]; then + + # branch is dead + if [ $life -lt 3 ]; then + branch $x $y dead $life + + # branch is dying and needs to branch into leaves + elif [ $type = trunk ] && [ $life -lt $((multiplier + 2)) ]; then + branch $x $y dying $life + + elif [[ $type = "shoot"* ]] && [ $life -lt $((multiplier + 2)) ]; then + branch $x $y dying $life + + # re-branch if: not close to the base AND (pass a chance test OR be a trunk, not have too man shoots already, and not be about to die) + elif [[ $type = trunk && $life -lt $((lifeStart - 8)) \ + && ( $(( RANDOM % (16 - multiplier) )) -eq 0 \ + || ($type = trunk && $(( life % 5 )) -eq 0 && $life -gt 5) ) ]]; then + + # if a trunk is splitting and not about to die, chance to create another trunk + if [ $((RANDOM % 3)) -eq 0 ] && [ $life -gt 7 ]; then + branch $x $y trunk $life + + elif [ $shoots -lt $shootsMax ]; then + + # give the shoot some life + tmpLife=$(( life + multiplier - 2 )) + [ $tmpLife -lt 0 ] && tmpLife=0 + + # first shoot is randomly directed + if [ $shoots -eq 0 ]; then + tmpType=shootLeft + [ $((RANDOM % 2)) -eq 0 ] && tmpType=shootRight + + + # secondary shoots alternate from the first + else + case $tmpType in + shootLeft) # last shoot was left, shoot right + tmpType=shootRight ;; + shootRight) # last shoot was right, shoot left + tmpType=shootLeft ;; + esac + fi + branch $x $y $tmpType $tmpLife + shoots=$((shoots + 1)) + fi + fi + else # if we're past max branches but want to branch... + char='<>' + fi + + # implement dx,dy + x=$((x + dx)) + y=$((y + dy)) + + # choose color + case $type in + trunk|shoot*) + color=${DarkBrown} + [ $(( RANDOM % 4 )) -eq 0 ] && color=${LightBrown} + ;; + + dying) color=${BrownGreen} ;; + + dead) color=${Green} ;; + esac + + # choose branch character + case $type in + trunk) + if [ $dx -lt 0 ]; then + char='\\' + elif [ $dx -eq 0 ]; then + char='/|' + elif [ $dx -gt 0 ]; then + char='/' + fi + [ $dy -eq 0 ] && char='/~' # not growing + #[ $dy -lt 0 ] && char='/~' # growing + ;; + + # shoots tend to look horizontal + shootLeft) + case $dx in + [-3,-1]) char='\\|' ;; + [0]) char='/|' ;; + [1,3]) char='/' ;; + esac + #[ $dy -lt 0 ] && char='/~' # growing up + [ $dy -gt 0 ] && char='/' # growing down + [ $dy -eq 0 ] && char='\\_' # not growing + ;; + + shootRight) + case $dx in + [-3,-1]) char='\\|' ;; + [0]) char='/|' ;; + [1,3]) char='/' ;; + esac + #[ $dy -lt 0 ] && char='' # growing up + [ $dy -gt 0 ] && char='\\' # growing down + [ $dy -eq 0 ] && char='_/' # not growing + ;; + + #dead) + # #life=$((life + 1)) + # char="${leafchar}" + # [ $dx -lt -2 ] || [ $dx -gt 2 ] && char="${leafchar}${leafchar}" + # ;; + + esac + + # set leaf if needed + [ $life -lt 4 ] && char="${leafchar}" + + # uncomment for help debugging + #echo -e "$life:\t$x, $y: $char" + + # put character in grid + grid[$y,$x]="${color}${char}${R}" + + # if live, print what we have so far and let the user see it + if [ $live = true ]; then + print + sleep $steptime + fi + done +} + +print() { + # parse grid for output + output="" + for (( row=0; row < $rows; row++)); do + + line="" + + for (( col=0; col < $cols; col++ )); do + + # this prints a space at 0,0 and is necessary at the moment + [ $live = true ] && echo -ne "\e[0;0H " + + # grab the character from our grid + line+="${grid[$row,$col]}" + done + + # add our message + if [ $flag_m = true ]; then + # remove trailing whitespace before we add our message + line=$(sed -r 's/[ \t]*$//' <(printf "$line")) + line+=" \t${gridMessage[$row]}" + fi + + line="${line}\n" + + # end 'er with the ol' newline + output+="$line" + done + + # add the ascii-art base we generated earlier + output+="$base" + + # output, removing trailing whitespace + sed -r 's/[ \t]*$//' <(printf "$output") +} + +clean() { + # Show cursor and echo stdin + if [ $live = true ]; then + echo -ne "\e[?25h" + stty echo + fi + + echo "" # ensure the cursor resets to the next line + + # if we wanna quit + if [ "$1" = "quit" ]; then + trap SIGINT + exit 0 + fi +} + +bonsai() { + init + grow + print + clean +} + +bonsai + +while [ $infinite = true ]; do + sleep 2 + bonsai +done diff --git a/.local/bin/build-anykernel.sh b/.local/bin/build-anykernel.sh new file mode 100755 index 0000000..54cb619 --- /dev/null +++ b/.local/bin/build-anykernel.sh @@ -0,0 +1,204 @@ +#!/bin/bash + +# +# Build Script for RenderZenith! +# Based off AK's build script - Thanks! +# + +# Bash Color +rm .version +green='\033[01;32m' +red='\033[01;31m' +blink_red='\033[05;31m' +restore='\033[0m' + +clear + +# Resources +THREAD="-j$(grep -c ^processor /proc/cpuinfo)" +KERNEL="Image.gz" +export DEFCONFIG="oneplus6_defconfig" + +# Kernel Details +VER=RenderZenith +DEVICE=OP6 +VARIANT="OP6-Q-UNIFIED" + +# Kernel zip name +HASH=`git rev-parse --short=8 HEAD` +KERNEL_ZIP="RZ-$VARIANT-$(date +%y%m%d)-$HASH" + +# Enable ccache per device +CCACHE=ccache +export CCACHE_DIR="$HOME/.ccache/kernel/$DEVICE" + +# Vars +export LOCALVERSION=~`echo $VER` +export ARCH=arm64 +export SUBARCH=arm64 +export KBUILD_BUILD_USER=xstefen +export KBUILD_BUILD_HOST=leviathan +export LOCALVERSION=~`echo $KERNEL_ZIP` + +# Extra make arguments +EXTRA_CONFIGS="CONFIG_DEBUG_SECTION_MISMATCH=y" + +# Paths +KERNEL_DIR=`pwd` +KBUILD_OUTPUT="${KERNEL_DIR}/out" +REPACK_DIR="${HOME}/android/AnyKernel3" +PATCH_DIR="${HOME}/android/AnyKernel3/patch" +MODULES_DIR="${HOME}/android/AnyKernel3/modules" +ZIP_MOVE="${HOME}/android/zips" +ZIMAGE_DIR="$KBUILD_OUTPUT/arch/arm64/boot" + +# Create output directory +mkdir -p $KBUILD_OUTPUT + +# Functions +#function checkout_ak3_branches { +# cd $REPACK_DIR +# git checkout rz-op6-oos-q +# cd $KERNEL_DIR +#} + +function clean_all { + rm -rf $REPACK_DIR/$MODULES_DIR/* + rm -f $REPACK_DIR/$KERNEL + rm -f $REPACK_DIR/zImage + rm -f $REPACK_DIR/dtb + echo + make O=$KBUILD_OUTPUT clean && make O=$KBUILD_OUTPUT mrproper +} + +function make_clang_kernel { + export CROSS_COMPILE="${HOME}/android/toolchains/proton-clang/bin/aarch64-linux-gnu-" + REAL_CC="${HOME}/android/toolchains/proton-clang/bin/clang" + + echo + make $DEFCONFIG O=$KBUILD_OUTPUT $EXTRA_CONFIGS + + echo + echo "Building with Clang..." + echo + + PATH="${HOME}/android/toolchains/proton-clang/bin:${PATH}" \ + make $THREAD \ + ARCH=$ARCH \ + CC="$CCACHE $REAL_CC" \ + CROSS_COMPILE="$CROSS_COMPILE" \ + O=$KBUILD_OUTPUT \ + $EXTRA_CONFIGS +} + +function make_gcc_kernel { + export CROSS_COMPILE="${CCACHE} ${HOME}/android/toolchains/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-" + + echo + echo "Building with GCC..." + echo + + make O=${KBUILD_OUTPUT} $DEFCONFIG + make -s O=${KBUILD_OUTPUT} $THREAD $EXTRA_CONFIGS +} + +function make_modules { + # Remove and re-create modules directory + rm -rf $MODULES_DIR + mkdir -p $MODULES_DIR + + # Copy modules over + echo + find $KBUILD_OUTPUT -name '*.ko' -exec cp -v {} $MODULES_DIR \; + + # Strip modules + ${CROSS_COMPILE}strip --strip-unneeded $MODULES_DIR/*.ko + + # Sign modules + if grep -Fxq "CONFIG_MODULE_SIG=y" $KBUILD_OUTPUT/.config + then + find $MODULES_DIR -name '*.ko' -exec $KBUILD_OUTPUT/scripts/sign-file sha512 $KBUILD_OUTPUT/certs/signing_key.pem $KBUILD_OUTPUT/certs/signing_key.x509 {} \; + fi +} + +function make_zip { + cp -vr $ZIMAGE_DIR/$KERNEL $REPACK_DIR/$KERNEL + find $KBUILD_OUTPUT/arch/arm64/boot/dts -name '*.dtb' -exec cat {} + > $REPACK_DIR/dtb + cd $REPACK_DIR + zip -r9 $KERNEL_ZIP.zip * + mv $KERNEL_ZIP.zip $ZIP_MOVE + cd $KERNEL_DIR +} + +DATE_START=$(date +"%s") + +echo -e "${green}" +echo "RenderZenith creation script:" +echo -e "${restore}" + +while read -p "Do you want to clean stuffs (y/n)? " cchoice +do +case "$cchoice" in + y|Y ) + #checkout_ak3_branches + clean_all + echo + echo "All Cleaned now." + break + ;; + n|N ) + #checkout_ak3_branches + break + ;; + * ) + echo + echo "Invalid try again!" + echo + ;; +esac +done + +echo + +echo "Pick which toolchain to build with:" +select choice in Clang GCC +do +case "$choice" in + "Clang") + make_clang_kernel + break;; + "GCC") + make_gcc_kernel + break;; +esac +done + +while read -p "Do you want to ZIP kernel (y/n)? " dchoice +do +case "$dchoice" in + y|Y) + make_modules + make_zip + break + ;; + n|N ) + break + ;; + * ) + echo + echo "Invalid try again!" + echo + ;; +esac +done + +echo -e "${green}" +echo "-------------------" +echo "Build Completed in:" +echo "-------------------" +echo -e "${restore}" + +DATE_END=$(date +"%s") +DIFF=$(($DATE_END - $DATE_START)) +echo "Time: $(($DIFF / 60)) minute(s) and $(($DIFF % 60)) seconds." +echo diff --git a/.local/bin/build-cos.sh b/.local/bin/build-cos.sh new file mode 100644 index 0000000..3434eb1 --- /dev/null +++ b/.local/bin/build-cos.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash + +set -Eeuo pipefail +trap cleanup SIGINT SIGTERM ERR EXIT + +script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) + +usage() { + cat <] [-s ] [-p ] [-o] [-f] + +Script description here. + +Available options: + +-h, --help Print this help and exit +-c, --clobber Wipe the out directory +-i, --installclean Remove installed files +-r, --repo-sync Sync repos before build +-v, --variant Target build variant (eng, userdebug, user) +-j, --jobs Specify how many threads to use (defaults to auto) +-m, --module Build a particular module +-s, --sign-keys Location of signing keys to sign build with +-p, --pwfile Signing keys passwd file if used +-o, --ota Generate an OTA zip +-f, --fastboot Generate a fastboot images zip + +EOF + exit +} + +cleanup() { + trap - SIGINT SIGTERM ERR EXIT + # script cleanup here +} + +setup_colors() { + if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then + NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m' + else + NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW='' + fi +} + +msg() { + echo >&2 -e "${1-}" +} + +die() { + local msg=$1 + local code=${2-1} # default exit status 1 + msg "$msg" + exit "$code" +} + +parse_params() { + # default values of variables set from params + flag=0 + param='' + + while :; do + case "${1-}" in + -h | --help) usage ;; + -v | --verbose) set -x ;; + --no-color) NO_COLOR=1 ;; + -f | --flag) flag=1 ;; + -p | --param) + param="${2-}" + shift + ;; + -?*) die "Unknown option: $1" ;; + *) break ;; + esac + shift + done + + args=("$@") + + # check required params and arguments + [[ -z "${param-}" ]] && die "Missing required parameter: param" + [[ ${#args[@]} -eq 0 ]] && die "Missing script arguments" + + return 0 +} + +parse_params "$@" +setup_colors + +# script logic here + +msg "${RED}Read parameters:${NOFORMAT}" +msg "- flag: ${flag}" +msg "- param: ${param}" +msg "- arguments: ${args[*]-}" \ No newline at end of file diff --git a/.local/bin/build-kernel b/.local/bin/build-kernel new file mode 100755 index 0000000..8c8991a --- /dev/null +++ b/.local/bin/build-kernel @@ -0,0 +1,14 @@ +#!/bin/bash + +make O=out ARCH=arm64 SUBARCH=arm64 oneplus6_defconfig + +#PATH="/home/xstefen/android/toolchains/clang-11/bin:/home/xstefen/android/toolchains/aarch64-linux-android-4.9/bin:/home/xstefen/android/toolchains/arm-linux-androideabi-4.9/bin:${PATH}" \ + +export PATH="$HOME/android/toolchains/proton-clang/bin:$PATH" + +make -j$(nproc --all) O=out \ + ARCH=arm64 \ + SUBARCH=arm64 \ + CC=clang \ + CROSS_COMPILE=aarch64-linux-gnu- \ + CROSS_COMPILE_ARM32=arm-linux-gnueabi- diff --git a/.local/bin/buildcff2vf b/.local/bin/buildcff2vf new file mode 120000 index 0000000..e21db23 --- /dev/null +++ b/.local/bin/buildcff2vf @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/buildcff2vf \ No newline at end of file diff --git a/.local/bin/buildmasterotfs b/.local/bin/buildmasterotfs new file mode 120000 index 0000000..13c6945 --- /dev/null +++ b/.local/bin/buildmasterotfs @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/buildmasterotfs \ No newline at end of file diff --git a/.local/bin/cache b/.local/bin/cache new file mode 100755 index 0000000..fc1008e --- /dev/null +++ b/.local/bin/cache @@ -0,0 +1,4 @@ +#!/bin/bash + +# fc-cache -vf +sudo pacman -Scc && sudo pacman -Rsn $(pacman -Qdtq) && rm -rf ~/.cache/thumbnails/* && rm -rf ~/.build/* \ No newline at end of file diff --git a/.local/bin/charplot b/.local/bin/charplot new file mode 120000 index 0000000..d85a812 --- /dev/null +++ b/.local/bin/charplot @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/charplot \ No newline at end of file diff --git a/.local/bin/checkoutlinesufo b/.local/bin/checkoutlinesufo new file mode 120000 index 0000000..a174293 --- /dev/null +++ b/.local/bin/checkoutlinesufo @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/checkoutlinesufo \ No newline at end of file diff --git a/.local/bin/clean b/.local/bin/clean new file mode 100755 index 0000000..94ae1da --- /dev/null +++ b/.local/bin/clean @@ -0,0 +1,70 @@ +#!/usr/bin/env python + +import os +import shutil + +CLEAN_FILES = [ + '~/hostr/', + '~/.bzr.log', + '~/.cache/babl/', + '~/.cache/gegl-0.2/', + '~/.cache/google-chrome/', + '~/.cache/gstreamer-1.0/', + '~/.cache/menu/', + '~/.cache/thumbnails/', + '~/.local/share/gegl-0.2/', + '~/.local/share/recently-used.xbel', + '~/.local/share/Trash/', + '~/.ncmpcpp/error.log', + # '~/.npm/', + # '~/.nv/', + '~/.pki/', + '~/.pylint.d/', + '~/.recently-used', + '~/.thumbnails/', + '~/.w3m/', + '~/.xsession-errors.old' +] + + +def answer(question, default="n"): + prompt = "%s (y/[n]) " % question + ans = input(prompt).strip().lower() + + if not ans: + ans = default + + if ans == "y": + return True + return False + + +def remove_clean(): + found = [] + + print("\n") + for jfile in CLEAN_FILES: + extra = os.path.expanduser(jfile) + if os.path.exists(extra): + found.append(extra) + print(" %s" % jfile) + total = len(found) + + if total == 0: + print("No clean files found :)\n") + return + + if answer("\nRemove all?", default="n"): + for jfile in found: + if os.path.isfile(jfile): + os.remove(jfile) + else: + shutil.rmtree(jfile) + print("\nAll clean cleaned") + + else: + print("\nNo files removed") + + +if __name__ == '__main__': + remove_clean() diff --git a/.local/bin/comparefamily b/.local/bin/comparefamily new file mode 120000 index 0000000..549e00b --- /dev/null +++ b/.local/bin/comparefamily @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/comparefamily \ No newline at end of file diff --git a/.local/bin/deldog b/.local/bin/deldog new file mode 100755 index 0000000..93660d8 --- /dev/null +++ b/.local/bin/deldog @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# Function to upload to del.dog +# +# This can be downloaded and sourced without any of the other scripts in this repo. +# +# $ curl -LSsO https://github.com/nathanchance/scripts/raw/master/env/stubs/deldog +# +# Open the deldog file to make sure it matches this one. +# +# $ source deldog +# +# Usage: +# $ deldog +# $ command |& deldog +function deldog() { ( + for BINARY in curl jq; do + command -v ${BINARY} &>/dev/null || { + echo "ERROR: ${BINARY} is not installed" >&2 + exit 1 + } + done + [[ -z ${HASTE_URL} ]] && HASTE_URL=https://del.dog + [[ -n ${DEL_DOG_API_KEY} && ${HASTE_URL} =~ del ]] && CURL_ARGS=(--header "X-api-key: ${DEL_DOG_API_KEY}") + RESULT=$(curl -sf --data-binary @"${1:--}" "${CURL_ARGS[@]}" "${HASTE_URL}"/documents) || { + echo "ERROR: failed to post document, ca-certificates might need to be installed" >&2 + exit 1 + } + echo "${HASTE_URL}/raw/$(jq -r .key <<<"${RESULT}")" +); } +# vi: filetype=zsh diff --git a/.local/bin/detox b/.local/bin/detox new file mode 120000 index 0000000..742ab20 --- /dev/null +++ b/.local/bin/detox @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/detox/bin/detox \ No newline at end of file diff --git a/.local/bin/detype1 b/.local/bin/detype1 new file mode 120000 index 0000000..c2383cd --- /dev/null +++ b/.local/bin/detype1 @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/detype1 \ No newline at end of file diff --git a/.local/bin/digiplot b/.local/bin/digiplot new file mode 120000 index 0000000..cf392ca --- /dev/null +++ b/.local/bin/digiplot @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/digiplot \ No newline at end of file diff --git a/.local/bin/dna b/.local/bin/dna new file mode 100755 index 0000000..a049e0b --- /dev/null +++ b/.local/bin/dna @@ -0,0 +1,46 @@ +#!/bin/bash +# +# ANSI color scheme script by pfh +# +# Initializing mod by lolilolicon from Archlinux +# + +f=3 b=4 +for j in f b; do + for i in {0..7}; do + printf -v $j$i %b "\e[${!j}${i}m" + done +done +bld=$'\e[1m' +rst=$'\e[0m' +inv=$'\e[7m' + +cat << EOF + + ${f1} █-----${bld}█ ${rst}${f2} █-----${bld}█${rst} ${f3} █-----${bld}█${rst} ${f4} █-----${bld}█${rst} ${f5} █-----${bld}█${rst} ${f6} █-----${bld}█${rst} + ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst} + ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst} + ${f1} █${rst} ${f2} █${rst} ${f3} █${rst} ${f4} █${rst} ${f5} █${rst} ${f6} █${rst} + ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █_${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst} + ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst} + ${f1}${bld} █-----${rst}${f1}█${rst} ${f2}${bld} █-----${rst}${f2}█${rst} ${f3}${bld} █-----${rst}${f3}█${rst} ${f4}${bld} █-----${rst}${f4}█${rst} ${f5}${bld} █-----${rst}${f5}█${rst} ${f6}${bld} █-----${rst}${f6}█${rst} + ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst} + ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █-${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst} + ${f1}${bld} █${rst} ${f2}${bld} █${rst} ${f3}${bld}█${rst} ${f4}${bld} █${rst} ${f5}${bld} █${rst} ${f6}${bld} █${rst} + ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst} + ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst} + ${f1} █-----${bld}█ ${rst}${f2} █-----${bld}█${rst} ${f3} █-----${bld}█${rst} ${f4} █-----${bld}█${rst} ${f5} █-----${bld}█${rst} ${f6} █-----${bld}█${rst} + ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst} + ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst} + ${f1} █${rst} ${f2}█${rst} ${f3} █${rst} ${f4} █${rst} ${f5} █${rst} ${f6} █${rst} + ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █_${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst} + ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst} + ${f1}${bld} █-----${rst}${f1}█${rst} ${f2}${bld} █-----${rst}${f2}█${rst} ${f3}${bld} █-----${rst}${f3}█${rst} ${f4}${bld} █-----${rst}${f4}█${rst} ${f5}${bld} █-----${rst}${f5}█${rst} ${f6}${bld} █-----${rst}${f6}█${rst} + ${f1}${bld} █---${rst}${f1}█${rst} ${f2}${bld} █---${rst}${f2}█${rst} ${f3}${bld} █---${rst}${f3}█${rst} ${f4}${bld} █---${rst}${f4}█${rst} ${f5}${bld} █---${rst}${f5}█${rst} ${f6}${bld} █---${rst}${f6}█${rst} + ${f1}${bld} █-${rst}${f1}█${rst} ${f2}${bld} █-${rst}${f2}█${rst} ${f3}${bld} █-${rst}${f3}█${rst} ${f4}${bld} █-${rst}${f4}█${rst} ${f5}${bld} █-${rst}${f5}█${rst} ${f6}${bld} █-${rst}${f6}█${rst} + ${f1}${bld} █${rst} ${f2}${bld} █${rst} ${f3}${bld} █${rst} ${f4}${bld} █${rst} ${f5}${bld} █${rst} ${f6}${bld} █${rst} + ${f1} █-${bld}█${rst} ${f2} █-${bld}█${rst} ${f3} █-${bld}█${rst} ${f4} █-${bld}█${rst} ${f5} █-${bld}█${rst} ${f6} █-${bld}█${rst} + ${f1} █---${bld}█${rst} ${f2} █---${bld}█${rst} ${f3} █---${bld}█${rst} ${f4} █---${bld}█${rst} ${f5} █---${bld}█${rst} ${f6} █---${bld}█${rst} + ${f1} █-----${bld}█ ${rst}${f2} █-----${bld}█${rst} ${f3} █-----${bld}█${rst} ${f4} █-----${bld}█${rst} ${f5} █-----${bld}█${rst} ${f6} █-----${bld}█${rst} + +EOF \ No newline at end of file diff --git a/.local/bin/dot-build.sh b/.local/bin/dot-build.sh new file mode 100755 index 0000000..8863dbe --- /dev/null +++ b/.local/bin/dot-build.sh @@ -0,0 +1,240 @@ +#!/usr/bin/env bash +# dotOS build helper script, credit to @AOSPA, @YumeMichi + +# red = errors, cyan = warnings, green = confirmations, blue = informational +# plain for generic text, bold for titles, reset flag at each end of line +# plain blue should not be used for readability reasons - use plain cyan instead +CLR_RST=$(tput sgr0) ## reset flag +CLR_RED=$CLR_RST$(tput setaf 1) # red, plain +CLR_GRN=$CLR_RST$(tput setaf 2) # green, plain +CLR_BLU=$CLR_RST$(tput setaf 4) # blue, plain +CLR_CYA=$CLR_RST$(tput setaf 6) # cyan, plain +CLR_BLD=$(tput bold) ## bold flag +CLR_BLD_RED=$CLR_RST$CLR_BLD$(tput setaf 1) # red, bold +CLR_BLD_GRN=$CLR_RST$CLR_BLD$(tput setaf 2) # green, bold +CLR_BLD_BLU=$CLR_RST$CLR_BLD$(tput setaf 4) # blue, bold +CLR_BLD_CYA=$CLR_RST$CLR_BLD$(tput setaf 6) # cyan, bold + +# Set defaults +DOT_BUILD_VARIANT="userdebug" +DOT_MOD_VERSION="v6.0" +DOT_BUILD_DATE=$(date -u +%Y%m%d-%H%M) +DOT_BUILD_TYPE="UNOFFICIAL_GAPPS" + +function checkExit () { + if [ $? -ne 0 ]; then + EXIT_CODE=$? + echo "${CLR_BLD_RED}Build failed!${CLR_RST}" + echo -e "" + exit $EXIT_CODE + fi +} + +# Output usage help +function showHelpAndExit { + echo -e "${CLR_BLD_BLU}Usage: $0 [options]${CLR_RST}" + echo -e "" + echo -e "${CLR_BLD_BLU}Options:${CLR_RST}" + echo -e "${CLR_BLD_BLU} -h, --help Display this help message${CLR_RST}" + echo -e "${CLR_BLD_BLU} -c, --clean Wipe the tree before building${CLR_RST}" + echo -e "${CLR_BLD_BLU} -i, --installclean Dirty build - Use 'installclean'${CLR_RST}" + echo -e "${CLR_BLD_BLU} -r, --repo-sync Sync before building${CLR_RST}" + echo -e "${CLR_BLD_BLU} -t, --build-type Specify build type${CLR_RST}" + echo -e "${CLR_BLD_BLU} -j, --jobs Specify jobs/threads to use${CLR_RST}" + echo -e "${CLR_BLD_BLU} -m, --module Build a specific module${CLR_RST}" + echo -e "${CLR_BLD_BLU} -g, --gms Build with GMS${CLR_RST}" + echo -e "${CLR_BLD_BLU} -s, --sign-keys Specify path to sign key mappings${CLR_RST}" + echo -e "${CLR_BLD_BLU} -p, --pwfile Specify path to sign key password file${CLR_RST}" + echo -e "${CLR_BLD_BLU} -z, --imgzip Generate fastboot flashable image zip from signed target_files${CLR_RST}" + exit 1 +} + +# Setup getopt. +long_opts="help,clean,installclean,repo-sync,build-type:,jobs:,module:,gms,sign-keys:,pwfile:,imgzip" +getopt_cmd=$(getopt -o hcir:t:j:m:gs:p:z --long "$long_opts" \ + -n $(basename $0) -- "$@") || \ + { echo -e "${CLR_BLD_RED}\nError: Getopt failed. Extra args\n${CLR_RST}"; showHelpAndExit; exit 1;} + +eval set -- "$getopt_cmd" + +while true; do + case "$1" in + -h|--help|h|help) showHelpAndExit;; + -c|--clean|c|clean) FLAG_CLEAN_BUILD=y;; + -i|--installclean|i|installclean) FLAG_INSTALLCLEAN_BUILD=y;; + -r|--repo-sync|r|repo-sync) FLAG_SYNC=y;; + -t|--build-type|t|build-type) DOT_BUILD_VARIANT="$2"; shift;; + -j|--jobs|j|jobs) JOBS="$2"; shift;; + -m|--module|m|module) MODULES+=("$2"); echo $2; shift;; + -g|--gms|g|gms) FLAG_GMS="y";; + -s|--sign-keys|s|sign-keys) KEY_MAPPINGS="$2"; shift;; + -p|--pwfile|p|pwfile) PWFILE="$2"; shift;; + -z|--imgzip|img|imgzip) FLAG_IMG_ZIP=y;; + --) shift; break;; + esac + shift +done + +# Mandatory argument +if [ $# -eq 0 ]; then + echo -e "${CLR_BLD_RED}Error: No device specified${CLR_RST}" + showHelpAndExit +fi +export DEVICE="$1"; shift + +# Make sure we are running on 64-bit before carrying on with anything +ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/') +if [ "$ARCH" != "64" ]; then + echo -e "${CLR_BLD_RED}error: unsupported arch (expected: 64, found: $ARCH)${CLR_RST}" + exit 1 +fi + +# Set up paths +#cd $(dirname $0) +DIR_ROOT=$(pwd) + +# Make sure everything looks sane so far +if [ ! -d "$DIR_ROOT/vendor/dot" ]; then + echo -e "${CLR_BLD_RED}error: insane root directory ($DIR_ROOT)${CLR_RST}" + exit 1 +fi + +# Initializationizing! +echo -e "${CLR_BLD_BLU}Setting up the environment${CLR_RST}" +echo -e "" +. build/envsetup.sh +echo -e "" + +# Use the thread count specified by user +CMD="" +if [ $JOBS ]; then + CMD+="-j$JOBS" +fi + +# Pick the default thread count (allow overrides from the environment) +if [ -z "$JOBS" ]; then + if [ "$(uname -s)" = 'Darwin' ]; then + JOBS=$(sysctl -n machdep.cpu.core_count) + else + JOBS=$(cat /proc/cpuinfo | grep '^processor' | wc -l) + fi +fi + +# Grab the build version +DOT_VERSION=dotOS-$DOT_MOD_VERSION-$DEVICE-$DOT_BUILD_TYPE-$DOT_BUILD_DATE + +# Prep for a clean build, if requested so +if [ "$FLAG_CLEAN_BUILD" = 'y' ]; then + echo -e "${CLR_BLD_BLU}Cleaning output files left from old builds${CLR_RST}" + echo -e "" + m clobber "$CMD" +fi + +# Sync up, if asked to +if [ "$FLAG_SYNC" = 'y' ]; then + echo -e "${CLR_BLD_BLU}Downloading the latest source files${CLR_RST}" + echo -e "" + repo sync -j"$JOBS" -c --no-clone-bundle --current-branch --no-tags +fi + +# GMS +if [ "$FLAG_GMS" = 'y' ]; then + echo -e "${CLR_BLD_BLU}Building with GMS${CLR_RST}" + echo -e "" + export WITH_GMS=true +fi + +# Check the starting time (of the real build process) +TIME_START=$(date +%s.%N) + +# Friendly logging to tell the user everything is working fine is always nice +echo -e "${CLR_BLD_GRN}Building $DOT_VERSION${CLR_RST}" +echo -e "${CLR_GRN}Start time: $(date)${CLR_RST}" +echo -e "" + +# Lunch-time! +echo -e "${CLR_BLD_BLU}Lunching $DEVICE${CLR_RST} ${CLR_CYA}(Including dependencies sync)${CLR_RST}" +echo -e "" +lunch "dot_$DEVICE-$DOT_BUILD_VARIANT" +checkExit +echo -e "" + +# Perform installclean, if requested so +if [ "$FLAG_INSTALLCLEAN_BUILD" = 'y' ]; then + echo -e "${CLR_BLD_BLU}Cleaning compiled image files left from old builds${CLR_RST}" + echo -e "" + m installclean "$CMD" +fi + +# Build away! +echo -e "${CLR_BLD_BLU}Starting compilation${CLR_RST}" +echo -e "" + +# Build a specific module(s) +if [ "${MODULES}" ]; then + m ${MODULES[@]} "$CMD" + checkExit + +# Build signed rom package if specified +elif [ "${KEY_MAPPINGS}" ]; then + # Set sign key password file if specified + if [ "${PWFILE}" ]; then + export ANDROID_PW_FILE=$PWFILE + fi + + # Make target-files-package + m otatools target-files-package "$CMD" + + checkExit + + echo -e "${CLR_BLD_BLU}Signing target files apks${CLR_RST}" + sign_target_files_apks -o -d $KEY_MAPPINGS \ + "$OUT"/obj/PACKAGING/target_files_intermediates/dot_$DEVICE-target_files-eng.$USER.zip \ + signed-target_files.zip + checkExit + + if [ "$FLAG_IMG_ZIP" = 'y' ]; then + echo -e "${CLR_BLD_BLU}Generating signed fastboot package${CLR_RST}" + img_from_target_files \ + signed-target_files.zip \ + $DOT_VERSION-img.zip + checkExit + else + echo -e "${CLR_BLD_BLU}Generating signed install package${CLR_RST}" + ota_from_target_files -k $KEY_MAPPINGS/releasekey --block \ + signed-target_files.zip \ + $DOT_VERSION.zip + checkExit + fi + +# Build rom package +elif [ "$FLAG_IMG_ZIP" = 'y' ]; then + m otatools target-files-package "$CMD" + + checkExit + + echo -e "${CLR_BLD_BLU}Generating fastboot package${CLR_RST}" + img_from_target_files \ + "$OUT"/obj/PACKAGING/target_files_intermediates/dot_$DEVICE-target_files-eng.$USER.zip \ + $DOT_VERSION-image.zip + + checkExit + +else + m otapackage "$CMD" + + checkExit + + mv -f $OUT/dot_$DEVICE-ota-eng.$USER.zip $DOT_VERSION.zip + echo "Package Complete: $DOT_VERSION.zip" +fi +echo -e "" + +# Check the finishing time +TIME_END=$(date +%s.%N) + +# Log those times at the end as a fun fact of the day +echo -e "${CLR_BLD_GRN}Total time elapsed:${CLR_RST} ${CLR_GRN}$(echo "($TIME_END - $TIME_START) / 60" | bc) minutes ($(echo "$TIME_END - $TIME_START" | bc) seconds)${CLR_RST}" +echo -e "" + +exit 0 diff --git a/.local/bin/dots b/.local/bin/dots new file mode 100755 index 0000000..0ae0914 --- /dev/null +++ b/.local/bin/dots @@ -0,0 +1,318 @@ +#!/usr/bin/env bash +# +# Ctlos Linux https://ctlos.github.io +# +# Dot file management script using zenity, git & rsync +# Written by Nathaniel Maia, November 2017 - March 2018 + +# Config ~/.dotsrc +# Ignore github ~/.gitignore +# git.io/ctldotsrc +# wget git.io/ctldots +# sudo cp -fv ~/.bin/dots /usr/bin/dots + +# immutable values +readonly NAME=$(basename "$0") +readonly CFG="$HOME/.${NAME}rc" + +readonly B='\E[1;34m' +readonly R='\E[1;31m' +readonly G='\E[1;32m' +readonly N='\E[0m' +readonly BLD='\E[1m' + +readonly WRN="${R}[WARN]${N}:" +readonly INF="${B}[INFO]${N}:" +readonly YN="${B}[${R}y${B}/${R}${BLD}N${N}${B}]${N}: " + +readonly MENUTXT="\n Enter number or letter and press [Enter]. 0/q to cancel\n\n> " + +readonly MENU=" +\n\t ${R}1 ${N}| ${R}${BLD}b${N}ackup\t\t-> Backup Files +\t${B}------------------------------------------${N} +\n\t ${R}2 ${N}| ${R}${BLD}r${N}estore\t\t-> Restore Files +\t${B}------------------------------------------${N}" + + +main_menu() { + local choice + + clear + echo -e "$MENU" + draw_box 12 + printf "$MENUTXT" + read -e -r choice + clear + + [[ $choice =~ (v|V) ]] && V="v" + + case "$choice" in + 0|[Qq]|quit) exit 0 ;; + 1*|[Bb]*|backup*) [[ $BASE_DIR ]] && { backup_files; exit 0; } || edit_config ;; + 2*|[Rr]*|restore*) restore_files && exit 0 + esac + + src_cfg + main_menu +} + +draw_box() { + local h=${1:-12} # $1 Box Height + local w=${2:-57} # $2 Box Width + local row=${3:-1} # $3 Starting Row + local col=${4:-2} # $4 Starting Column + local co=${5:-1} # $5 Box Color, 1-7 + ((h--)) # account for corner + ((w--)) # account for corner + local endrow=$((row + h)) # end row + local endcol=$((col + w)) # end column + echo -ne "\E[3${co}m" # foreground colour + + local hz="-" vt="|" cn="+" # horizontal, vertical, and corner chars + + plot_char() { + echo -e "\E[${1};${2}H""$3" + } + + local i=0 + for ((r=row; i/dev/null && hash pacman &>/dev/null; then + echo -e "\n\n\n\tInstalling:\n\t\tgit\n\t\trsync\n\n\tPlease Wait.." + draw_box 8 + sleep 1 + clear + sudo pacman -S git rsync --noconfirm --needed + fi +} + +prep_directory() { + if [[ $REQ != "True" ]]; then + check_reqs + if [[ $BASE_DIR ]]; then # is set in config but might not exist yet + if [[ ! -d $BASE_DIR ]]; then # is not an existing dir + + if [[ $REPO ]] && grep -wq '^https://.*/.*/.*$' <<< "$REPO"; then # is REPO actually and address + git clone "$REPO" "$BASE_DIR" + else + mkdir -p$V "$BASE_DIR" # local backup + fi + fi + + [[ -d $BASE_DIR ]] && REQ="True" + else + echo -e "$WRN BASE_DIR must be set in config to continue. $EXITING" + fi + fi +} + +clean_backup_dirs() { + if [[ ${PREV_BACKUPS[*]} ]] && sub_choice "Perform clean backup (wipe BASE_DIR)" "${R}$BASE_DIR${N}"; then + for dir in "${PREV_BACKUPS[@]}"; do + if [[ -d $dir ]] && sub_choice "Wipe all files in /$(basename "$dir")" "${R}$dir${N}"; then + cd "$dir" + git rm -r -f . + # rm -rf$V "$dir" + [[ $V ]] && sleep 0.5 + fi + done + fi +} + +commit_changes() { + if grep -q 'https://' <<< "$REPO"; then + if sub_choice "Commit and push changes to REPO" "${R}$REPO${N}"; then + + printf "\nEnter commit message below, an example has been provided\n\n> " + read -e -i "$(date +%Y.%m.%d) Update " -r comment + + if grep -wq '[a-zA-Z0-9]*' <<< "$comment"; then + cd "$BASE_DIR/" || return 1 + git add . + git commit -m "$comment" + git push origin "${BRANCH:-HEAD}" + else + echo "Bad commit message" + sleep 1 + commit_changes + fi + fi + fi +} + +backup_files() { + prep_directory + clean_backup_dirs + + if [[ ${USER_PATHS[*]} || ${ROOT_PATHS[*]} ]]; then + + echo -e "$INF ${B}Copying files, please wait..$N\n" + for f in "${USER_PATHS[@]}"; do + [[ -e $f ]] && rsync -aR$V $f "$BASE_DIR/$USER_DIR/" + [[ $V ]] && sleep 0.5 + done + + for f in "${ROOT_PATHS[@]}"; do + [[ -e $f ]] && rsync -aR$V $f "$BASE_DIR/$ROOT_DIR/" + [[ $V ]] && sleep 0.5 + done + + echo -e "$INF ${G}Backup complete$N" + sleep 1 + else + echo -e "$WRN No valid file paths were found.." + sleep 2 + fi + commit_changes +} + +restore_files() { + prep_directory + if [[ ${PREV_BACKUPS[*]} ]]; then + local msg="" + + for x in "${PREV_BACKUPS[@]}"; do + if [[ -e $x ]] && sub_choice "Restore everything from /$(basename "$x")" "${R}$x${N}"; then + if grep -q "$BASE_DIR/$USER_DIR" <<< "$x"; then + rsync -avPC --filter="exclude $ROOT_DIR" "$BASE_DIR/$USER_DIR/" "$HOME/" + elif grep -q "$BASE_DIR/$ROOT_DIR" <<< "$x"; then + sudo rsync -avn "$BASE_DIR/$ROOT_DIR/" / + else + echo -e "\n\n\n\t$WRN Unable to restore\n\n\t$x" + draw_box 9 + sleep 1 + fi + + fi + + [[ $V ]] && sleep 0.5 + done + + else + echo -e "\n\n\n\t$INF ${R}No Existing backups to restore${N}" + draw_box 9 + sleep 1 + fi +} + +mk_cfg() { + [[ $1 == "new" ]] && edit_config + + for f in "${USER_PATHS[@]}"; do + if [[ -e $f ]] && ! grep "$f" <<< "$u_paths"; then + u_paths="$u_paths\"$f\"\n" + fi + done + + for f in "${ROOT_PATHS[@]}"; do + if [[ -e $f ]] && ! grep "$f" <<< "$r_paths"; then + r_paths="$r_paths\"$f\"\n" + fi + done + + local cfg="# config file for dfm (dotfile manager) +\n# repo https address for cloning & pushing (empty for local backup) +REPO=\"$REPO\" +\n# branch, defaults to current branch (HEAD) +BRANCH=\"$BRANCH\" +\n# location where backup folder or repo will be created or cloned +BASE_DIR=\"$BASE_DIR\" +\n# names for storage directories within BASE_DIR. +# created only if needed, stores files from below arrays +USER_DIR=\"${USER_DIR}\" +ROOT_DIR=\"${ROOT_DIR:-root}\" +\n# file paths which will be backed up into the directories above +USER_PATHS=(\n$u_paths) +\nROOT_PATHS=(\n$r_paths)" + + echo -e "$cfg" > "$CFG" && clear + src_cfg +} + +edit_config() { + $EDITOR "$CFG" + src_cfg +} + +src_cfg() { + PREV_BACKUPS=() + ! . "$CFG" 2>/dev/null && mk_cfg "new" + [[ -d $BASE_DIR/$USER_DIR ]] && PREV_BACKUPS+=("$BASE_DIR/$USER_DIR") + [[ -d $BASE_DIR/$ROOT_DIR ]] && PREV_BACKUPS+=("$BASE_DIR/$ROOT_DIR") +} + +sub_choice() { + local choice + + clear + printf "\n\n\n\t$1? $YN\n\n\t$2" + draw_box 9 + tput cup 3 $((${#1} + 17)) + read -r choice + clear + + grep -q '[yY]' <<< "$choice" && return 0 || return 1 +} + +usage() { + cat < /dev/null || rm -rf "${p:?}"/* + echo "Extracting $p partition" + 7z x "$p".img -y -o"$p"/ > /dev/null 2>&1 + if [ $? -eq 0 ]; then + rm "$p".img > /dev/null 2>&1 + else + #handling erofs images, which can't be handled by 7z + if [ -f $p.img ] && [ $p != "modem" ]; then + echo "Couldn't extract $p partition by 7z. Using fsck.erofs." + rm -rf "${p}"/* + fsck.erofs --extract="$p" "$p".img + if [ $? -eq 0 ]; then + rm -fv "$p".img > /dev/null 2>&1 + else + echo "Couldn't extract $p partition by fsck.erofs. Using mount loop" + sudo mount -o loop -t auto "$p".img "$p" + mkdir "${p}_" + sudo cp -rf "${p}/"* "${p}_" + sudo umount "${p}" + sudo cp -rf "${p}_/"* "${p}" + sudo rm -rf "${p}_" + if [ $? -eq 0 ]; then + rm -fv "$p".img > /dev/null 2>&1 + else + echo "Couldn't extract $p partition. It might use an unsupported filesystem." + echo "For EROFS: make sure you're using Linux 5.4+ kernel." + echo "For F2FS: make sure you're using Linux 5.15+ kernel." + fi + fi + fi + fi + fi +done + +# Fix permissions +sudo chown "$(whoami)" "$DUMPDIR"/./* -fR +sudo chmod -fR u+rwX "$DUMPDIR"/./* diff --git a/.local/bin/exrex b/.local/bin/exrex new file mode 100755 index 0000000..f150611 --- /dev/null +++ b/.local/bin/exrex @@ -0,0 +1,8 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from exrex import __main__ +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(__main__()) diff --git a/.local/bin/exrex.py b/.local/bin/exrex.py new file mode 100755 index 0000000..44da052 --- /dev/null +++ b/.local/bin/exrex.py @@ -0,0 +1,550 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# This file is part of exrex. +# +# exrex is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# exrex is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with exrex. If not, see < http://www.gnu.org/licenses/ >. +# +# (C) 2012- by Adam Tauber, + +try: + from future_builtins import map, range +except: + pass +from re import match, U +try: + import re._parser as sre_parse +except ImportError: # Python < 3.11 + from re import sre_parse +from itertools import tee +from random import choice, randint +from types import GeneratorType + +from sys import version_info +IS_PY3 = version_info[0] == 3 +IS_PY36_OR_GREATER = IS_PY3 and version_info[1] > 5 + +if IS_PY3: + unichr = chr + +__all__ = ( + 'generate', + 'CATEGORIES', + 'count', + 'parse', + 'getone', + 'sre_to_string', + 'simplify' +) + +CATEGORIES = { + sre_parse.CATEGORY_SPACE: sorted(sre_parse.WHITESPACE), + sre_parse.CATEGORY_DIGIT: sorted(sre_parse.DIGITS), + sre_parse.CATEGORY_WORD: [unichr(x) for x in range(256) if + match('\w', unichr(x), U)], + sre_parse.CATEGORY_NOT_WORD: [unichr(x) for x in range(256) if + match('\W', unichr(x), U)], + 'category_any': [unichr(x) for x in range(32, 123)] +} + + +def _build_reverse_categories(): + reverse = {} + for key, value in sre_parse.CATEGORIES.items(): + if not hasattr(value[1], '__iter__'): + continue + + for vv in value[1]: + if value[0] == sre_parse.IN and vv[0] == sre_parse.CATEGORY: + reverse.update({vv[1]: key}) + + return reverse + + +REVERSE_CATEGORIES = _build_reverse_categories() + + +def comb(g, i): + for c in g: + g2, i = tee(i) + for c2 in g2: + yield c + c2 + + +def mappend(g, c): + for cc in g: + yield cc + c + + +def dappend(g, d, k): + for cc in g: + yield cc + d[k] + + +def _in(d): + ret = [] + neg = False + for i in d: + if i[0] == sre_parse.RANGE: + subs = map(unichr, range(i[1][0], i[1][1] + 1)) + if neg: + for char in subs: + try: + ret.remove(char) + except: + pass + else: + ret.extend(subs) + elif i[0] == sre_parse.LITERAL: + if neg: + try: + ret.remove(unichr(i[1])) + except: + pass + else: + ret.append(unichr(i[1])) + elif i[0] == sre_parse.CATEGORY: + subs = CATEGORIES.get(i[1], ['']) + if neg: + for char in subs: + try: + ret.remove(char) + except: + pass + else: + ret.extend(subs) + elif i[0] == sre_parse.NEGATE: + ret = list(CATEGORIES['category_any']) + neg = True + return ret + + +def prods(orig, ran, items, limit, grouprefs): + for o in orig: + for r in ran: + if r == 0: + yield o + else: + ret = [o] + for _ in range(r): + ret = ggen( + ret, _gen, items, limit=limit, count=False, grouprefs=grouprefs) + for i in ret: + yield i + + +def ggen(g1, f, *args, **kwargs): + groupref = None + grouprefs = kwargs.get('grouprefs', {}) + if 'groupref' in kwargs.keys(): + groupref = kwargs.pop('groupref') + for a in g1: + g2 = f(*args, **kwargs) + if isinstance(g2, GeneratorType): + for b in g2: + grouprefs[groupref] = b + yield a + b + else: + yield g2 + + +def concit(g1, seqs, limit, grouprefs): + for a in g1: + for s in seqs: + for b in _gen(s, limit, grouprefs=grouprefs): + yield a + b + + +def _gen(d, limit=20, count=False, grouprefs=None): + """docstring for _gen""" + if grouprefs is None: + grouprefs = {} + ret = [''] + strings = 0 + literal = False + for i in d: + if i[0] == sre_parse.IN: + subs = _in(i[1]) + if count: + strings = (strings or 1) * len(subs) + ret = comb(ret, subs) + elif i[0] == sre_parse.LITERAL: + literal = True + ret = mappend(ret, unichr(i[1])) + elif i[0] == sre_parse.CATEGORY: + subs = CATEGORIES.get(i[1], ['']) + if count: + strings = (strings or 1) * len(subs) + ret = comb(ret, subs) + elif i[0] == sre_parse.ANY: + subs = CATEGORIES['category_any'] + if count: + strings = (strings or 1) * len(subs) + ret = comb(ret, subs) + elif i[0] == sre_parse.MAX_REPEAT or i[0] == sre_parse.MIN_REPEAT: + items = list(i[1][2]) + if i[1][1] + 1 - i[1][0] >= limit: + r1 = i[1][0] + r2 = i[1][0] + limit + else: + r1 = i[1][0] + r2 = i[1][1] + 1 + ran = range(r1, r2) + if count: + branch_count = 0 + for p in ran: + branch_count += pow(_gen(items, limit, True, grouprefs), p) + strings = (strings or 1) * branch_count + + ret = prods(ret, ran, items, limit, grouprefs) + elif i[0] == sre_parse.BRANCH: + if count: + for x in i[1][1]: + strings += _gen(x, limit, True, grouprefs) or 1 + ret = concit(ret, i[1][1], limit, grouprefs) + elif i[0] == sre_parse.SUBPATTERN or i[0] == sre_parse.ASSERT: + subexpr = i[1][1] + if IS_PY36_OR_GREATER and i[0] == sre_parse.SUBPATTERN: + subexpr = i[1][3] + if count: + strings = ( + strings or 1) * (sum(ggen([0], _gen, subexpr, limit=limit, count=True, grouprefs=grouprefs)) or 1) + ret = ggen(ret, _gen, subexpr, limit=limit, count=False, grouprefs=grouprefs, groupref=i[1][0]) + # ignore ^ and $ + elif i[0] == sre_parse.AT: + continue + elif i[0] == sre_parse.NOT_LITERAL: + subs = list(CATEGORIES['category_any']) + if unichr(i[1]) in subs: + subs.remove(unichr(i[1])) + if count: + strings = (strings or 1) * len(subs) + ret = comb(ret, subs) + elif i[0] == sre_parse.GROUPREF: + ret = dappend(ret, grouprefs, i[1]) + elif i[0] == sre_parse.ASSERT_NOT: + pass + else: + print('[!] cannot handle expression ' + repr(i)) + + if count: + if strings == 0 and literal: + inc = True + for i in d: + if i[0] not in (sre_parse.AT, sre_parse.LITERAL): + inc = False + if inc: + strings = 1 + return strings + + return ret + + +def _randone(d, limit=20, grouprefs=None): + if grouprefs is None: + grouprefs = {} + """docstring for _randone""" + ret = '' + for i in d: + if i[0] == sre_parse.IN: + ret += choice(_in(i[1])) + elif i[0] == sre_parse.LITERAL: + ret += unichr(i[1]) + elif i[0] == sre_parse.CATEGORY: + ret += choice(CATEGORIES.get(i[1], [''])) + elif i[0] == sre_parse.ANY: + ret += choice(CATEGORIES['category_any']) + elif i[0] == sre_parse.MAX_REPEAT or i[0] == sre_parse.MIN_REPEAT: + if i[1][1] + 1 - i[1][0] >= limit: + min, max = i[1][0], i[1][0] + limit - 1 + else: + min, max = i[1][0], i[1][1] + for _ in range(randint(min, max)): + ret += _randone(list(i[1][2]), limit, grouprefs) + elif i[0] == sre_parse.BRANCH: + ret += _randone(choice(i[1][1]), limit, grouprefs) + elif i[0] == sre_parse.SUBPATTERN or i[0] == sre_parse.ASSERT: + subexpr = i[1][1] + if IS_PY36_OR_GREATER and i[0] == sre_parse.SUBPATTERN: + subexpr = i[1][3] + subp = _randone(subexpr, limit, grouprefs) + if i[1][0]: + grouprefs[i[1][0]] = subp + ret += subp + elif i[0] == sre_parse.AT: + continue + elif i[0] == sre_parse.NOT_LITERAL: + c = list(CATEGORIES['category_any']) + if unichr(i[1]) in c: + c.remove(unichr(i[1])) + ret += choice(c) + elif i[0] == sre_parse.GROUPREF: + ret += grouprefs[i[1]] + elif i[0] == sre_parse.ASSERT_NOT: + pass + else: + print('[!] cannot handle expression "%s"' % str(i)) + + return ret + + +def sre_to_string(sre_obj, paren=True): + """sre_parse object to string + + :param sre_obj: Output of sre_parse.parse() + :type sre_obj: list + :rtype: str + """ + ret = u'' + for i in sre_obj: + if i[0] == sre_parse.IN: + prefix = '' + if len(i[1]) and i[1][0][0] == sre_parse.NEGATE: + prefix = '^' + ret += u'[{0}{1}]'.format(prefix, sre_to_string(i[1], paren=paren)) + elif i[0] == sre_parse.LITERAL: + u = unichr(i[1]) + ret += u if u not in sre_parse.SPECIAL_CHARS else '\\{0}'.format(u) + elif i[0] == sre_parse.CATEGORY: + ret += REVERSE_CATEGORIES[i[1]] + elif i[0] == sre_parse.ANY: + ret += '.' + elif i[0] == sre_parse.BRANCH: + # TODO simplifications here + parts = [sre_to_string(x, paren=paren) for x in i[1][1]] + if not any(parts): + continue + if i[1][0]: + if len(parts) == 1: + paren = False + prefix = '' + else: + prefix = '?:' + branch = '|'.join(parts) + if paren: + ret += '({0}{1})'.format(prefix, branch) + else: + ret += '{0}'.format(branch) + elif i[0] == sre_parse.SUBPATTERN: + subexpr = i[1][1] + if IS_PY36_OR_GREATER and i[0] == sre_parse.SUBPATTERN: + subexpr = i[1][3] + if i[1][0]: + ret += '({0})'.format(sre_to_string(subexpr, paren=False)) + else: + ret += '{0}'.format(sre_to_string(subexpr, paren=paren)) + elif i[0] == sre_parse.NOT_LITERAL: + ret += '[^{0}]'.format(unichr(i[1])) + elif i[0] == sre_parse.MAX_REPEAT: + if i[1][0] == i[1][1]: + range_str = '{{{0}}}'.format(i[1][0]) + else: + if i[1][0] == 0 and i[1][1] - i[1][0] == sre_parse.MAXREPEAT: + range_str = '*' + elif i[1][0] == 1 and i[1][1] - i[1][0] == sre_parse.MAXREPEAT - 1: + range_str = '+' + else: + range_str = '{{{0},{1}}}'.format(i[1][0], i[1][1]) + ret += sre_to_string(i[1][2], paren=paren) + range_str + elif i[0] == sre_parse.MIN_REPEAT: + if i[1][0] == 0 and i[1][1] == sre_parse.MAXREPEAT: + range_str = '*?' + elif i[1][0] == 1 and i[1][1] == sre_parse.MAXREPEAT: + range_str = '+?' + elif i[1][1] == sre_parse.MAXREPEAT: + range_str = '{{{0},}}?'.format(i[1][0]) + else: + range_str = '{{{0},{1}}}?'.format(i[1][0], i[1][1]) + ret += sre_to_string(i[1][2], paren=paren) + range_str + elif i[0] == sre_parse.GROUPREF: + ret += '\\{0}'.format(i[1]) + elif i[0] == sre_parse.AT: + if i[1] == sre_parse.AT_BEGINNING: + ret += '^' + elif i[1] == sre_parse.AT_END: + ret += '$' + elif i[0] == sre_parse.NEGATE: + pass + elif i[0] == sre_parse.RANGE: + ret += '{0}-{1}'.format(unichr(i[1][0]), unichr(i[1][1])) + elif i[0] == sre_parse.ASSERT: + if i[1][0]: + ret += '(?={0})'.format(sre_to_string(i[1][1], paren=False)) + else: + ret += '{0}'.format(sre_to_string(i[1][1], paren=paren)) + elif i[0] == sre_parse.ASSERT_NOT: + pass + else: + print('[!] cannot handle expression "%s"' % str(i)) + return ret + + +def simplify(regex_string): + """Simplify a regular expression + + :param regex_string: Regular expression + :type regex_string: str + :rtype: str + """ + r = parse(regex_string) + return sre_to_string(r) + + +def parse(s): + """Regular expression parser + + :param s: Regular expression + :type s: str + :rtype: list + """ + if IS_PY3: + r = sre_parse.parse(s, flags=U) + else: + r = sre_parse.parse(s.decode('utf-8'), flags=U) + return list(r) + + +def generate(s, limit=20): + """Creates a generator that generates all matching strings to a given regular expression + + :param s: Regular expression + :type s: str + :param limit: Range limit + :type limit: int + :returns: string generator object + """ + return _gen(parse(s), limit) + + +def count(s, limit=20): + """Counts all matching strings to a given regular expression + + :param s: Regular expression + :type s: str + :param limit: Range limit + :type limit: int + :rtype: int + :returns: number of matching strings + """ + return _gen(parse(s), limit, count=True) + + +def getone(regex_string, limit=20): + """Returns a random matching string to a given regular expression + """ + return _randone(parse(regex_string), limit) + + +def argparser(): + import argparse + from sys import stdout + argp = argparse.ArgumentParser( + description='exrex - regular expression string generator') + argp.add_argument( + '-o', '--output', + help='Output file - default is STDOUT', + metavar='FILE', + default=stdout, + type=argparse.FileType('w', encoding='utf-8') + ) + argp.add_argument( + '-l', '--limit', + help='Max limit for range size - default is 20', + default=20, + action='store', + type=int, + metavar='N' + ) + argp.add_argument( + '-c', '--count', + help='Count matching strings', + default=False, + action='store_true' + ) + argp.add_argument( + '-m', '--max-number', + help='Max number of strings - default is -1', + default=-1, + action='store', + type=int, + metavar='N' + ) + argp.add_argument( + '-r', '--random', + help='Returns a random string that matches to the regex', + default=False, + action='store_true' + ) + argp.add_argument( + '-s', '--simplify', + help='Simplifies a regular expression', + default=False, + action='store_true' + ) + argp.add_argument( + '-d', '--delimiter', + help='Delimiter - default is \\n', + default='\n' + ) + argp.add_argument( + '-v', '--verbose', + action='store_true', + help='Verbose mode', + default=False + ) + argp.add_argument( + 'regex', + metavar='REGEX', + help='REGEX string' + ) + return vars(argp.parse_args()) + + +def __main__(): + from sys import exit, stderr + args = argparser() + if args['verbose']: + args['output'].write( + '%r%s' % (parse(args['regex']), args['delimiter'])) + if args['count']: + args['output'].write( + '%d%s' % (count(args['regex'], limit=args['limit']), args['delimiter'])) + exit(0) + if args['random']: + args['output'].write( + '%s%s' % (getone(args['regex'], limit=args['limit']), args['delimiter'])) + exit(0) + if args['simplify']: + args['output'].write( + '%s%s' % (simplify(args['regex']), args['delimiter'])) + exit(0) + try: + g = generate(args['regex'], args['limit']) + except Exception as e: + stderr.write('[!] Error: %s\n' % e) + exit(1) + args['output'].write(next(g)) + args['max_number'] -= 1 + for s in g: + if args['max_number'] == 0: + break + args['max_number'] -= 1 + args['output'].write(args['delimiter']) + args['output'].write(s) + if args['delimiter'] == '\n': + args['output'].write('\n') + + +if __name__ == '__main__': + __main__() diff --git a/.local/bin/extract b/.local/bin/extract new file mode 100755 index 0000000..31a3d70 --- /dev/null +++ b/.local/bin/extract @@ -0,0 +1,52 @@ +#!/bin/bash + +if [[ -f "$1" ]]; then + case "$1" in + *.tar.lrz) + b=$(basename "$1" .tar.lrz) + lrztar -d "$1" ;; + *.lrz) + b=$(basename "$1" .lrz) + lrunzip "$1" ;; + *.tar.bz2) + b=$(basename "$1" .tar.bz2) + bsdtar xjf "$1" ;; + *.bz2) + b=$(basename "$1" .bz2) + bunzip2 "$1" ;; + *.tar.gz) + b=$(basename "$1" .tar.gz) + bsdtar xzf "$1" ;; + *.gz) + b=$(basename "$1" .gz) + gunzip "$1" ;; + *.tar.xz) + b=$(basename "$1" .tar.xz) + bsdtar Jxf "$1" ;; + *.xz) + b=$(basename "$1" .gz) + xz -d "$1" ;; + *.rar) + b=$(basename "$1" .rar) + unrar e "$1" ;; + *.tar) + b=$(basename "$1" .tar) + bsdtar xf "$1" ;; + *.tbz2) + b=$(basename "$1" .tbz2) + bsdtar xjf "$1" ;; + *.tgz) + b=$(basename "$1" .tgz) + bsdtar xzf "$1" ;; + *.zip) + b=$(basename "$1" .zip) + unzip "$1" ;; + *.Z) + b=$(basename "$1" .Z) + uncompress "$1" ;; + *.7z) + b=$(basename "$1" .7z) + 7z x "$1" ;; + *) echo "don't know how to extract '$1'..." && return 1;; + esac +fi diff --git a/.local/bin/extract-dtb b/.local/bin/extract-dtb new file mode 120000 index 0000000..84e9d20 --- /dev/null +++ b/.local/bin/extract-dtb @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/extract-dtb/bin/extract-dtb \ No newline at end of file diff --git a/.local/bin/extract-vmlinux b/.local/bin/extract-vmlinux new file mode 100755 index 0000000..8995cd3 --- /dev/null +++ b/.local/bin/extract-vmlinux @@ -0,0 +1,64 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-only +# ---------------------------------------------------------------------- +# extract-vmlinux - Extract uncompressed vmlinux from a kernel image +# +# Inspired from extract-ikconfig +# (c) 2009,2010 Dick Streefland +# +# (c) 2011 Corentin Chary +# +# ---------------------------------------------------------------------- + +check_vmlinux() +{ + # Use readelf to check if it's a valid ELF + # TODO: find a better to way to check that it's really vmlinux + # and not just an elf + readelf -h $1 > /dev/null 2>&1 || return 1 + + cat $1 + exit 0 +} + +try_decompress() +{ + # The obscure use of the "tr" filter is to work around older versions of + # "grep" that report the byte offset of the line instead of the pattern. + + # Try to find the header ($1) and decompress from here + for pos in `tr "$1\n$2" "\n$2=" < "$img" | grep -abo "^$2"` + do + pos=${pos%%:*} + tail -c+$pos "$img" | $3 > $tmp 2> /dev/null + check_vmlinux $tmp + done +} + +# Check invocation: +me=${0##*/} +img=$1 +if [ $# -ne 1 -o ! -s "$img" ] +then + echo "Usage: $me " >&2 + exit 2 +fi + +# Prepare temp files: +tmp=$(mktemp /tmp/vmlinux-XXX) +trap "rm -f $tmp" 0 + +# That didn't work, so retry after decompression. +try_decompress '\037\213\010' xy gunzip +try_decompress '\3757zXZ\000' abcde unxz +try_decompress 'BZh' xy bunzip2 +try_decompress '\135\0\0\0' xxx unlzma +try_decompress '\211\114\132' xy 'lzop -d' +try_decompress '\002!L\030' xxx 'lz4 -d' +try_decompress '(\265/\375' xxx unzstd + +# Finally check for uncompressed images or objects: +check_vmlinux $img + +# Bail out: +echo "$me: Cannot find vmlinux." >&2 diff --git a/.local/bin/fbpack.py b/.local/bin/fbpack.py new file mode 100644 index 0000000..4d48834 --- /dev/null +++ b/.local/bin/fbpack.py @@ -0,0 +1,85 @@ +# Copyright 2021 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import struct +from packedstruct import PackedStruct +from collections import OrderedDict + +FBPACK_MAGIC = 0x4b504246 # "FBPK" FastBook PacK +FBPACK_VERSION = 2 +FBPACK_DEFAULT_DATA_ALIGN = 16 + +FBPACK_PARTITION_TABLE = 0 +FBPACK_PARTITION_DATA = 1 +FBPACK_SIDELOAD_DATA = 2 + + +class PackEntry(PackedStruct): + """Pack entry info.""" + + _FIELDS = OrderedDict([ + ('type', 'I'), + ('name', '36s'), + ('product', '40s'), + ('offset', 'Q'), + ('size', 'Q'), + ('slotted', 'I'), + ('crc32', 'I'), + ]) + + def __init__(self, type_=0, name=b'', prod=b'', offset=0, size=0, slotted=0, crc32=0): + super(PackEntry, self).__init__(type_, name, prod, offset, size, slotted, crc32) + + +class PackHeader(PackedStruct): + """ A packed image representation """ + + _FIELDS = OrderedDict([ + ('magic', 'I'), + ('version', 'I'), + ('header_size', 'I'), + ('entry_header_size', 'I'), + ('platform', '16s'), + ('pack_version', '64s'), + ('slot_type', 'I'), + ('data_align', 'I'), + ('total_entries', 'I'), + ('total_size', 'I'), + ]) + + def __init__( + self, + magic=FBPACK_MAGIC, + version=FBPACK_VERSION, + header_size=0, + entry_header_size=len(PackEntry()), + platform=b'', + pack_version=b'', + slot_type=0, + data_align=FBPACK_DEFAULT_DATA_ALIGN, + total_entries=0, + total_size=0): + super(PackHeader, self).__init__( + magic, + version, + header_size, + entry_header_size, + platform, + pack_version, + slot_type, + data_align, + total_entries, + total_size) + # update header size once we know all fields + self.header_size = len(self) diff --git a/.local/bin/fbpacktool b/.local/bin/fbpacktool new file mode 100755 index 0000000..4d1bdd4 --- /dev/null +++ b/.local/bin/fbpacktool @@ -0,0 +1,256 @@ +#!/usr/bin/env python3 +# +# Copyright 2021 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import sys +import os +import argparse +import logging +from fbpack import * + + +def bytes_to_str(bstr): + return bstr.decode().rstrip('\x00') + + +def print_pack_header(pack): + print('magic: {:#x}'.format(pack.magic)) + print('version: {}'.format(pack.version)) + print('header size: {}'.format(pack.header_size)) + print('entry header size: {}'.format(pack.entry_header_size)) + platform = bytes_to_str(pack.platform) + print('platform: {}'.format(platform)) + pack_version = bytes_to_str(pack.pack_version) + print('pack version: {}'.format(pack_version)) + print('slock type: {}'.format(pack.slot_type)) + print('data align: {}'.format(pack.data_align)) + print('total entries: {}'.format(pack.total_entries)) + print('total size: {}'.format(pack.total_size)) + + +def print_pack_entry(entry, prefix): + name = bytes_to_str(entry.name) + print('{}name: {}'.format(prefix, name)) + etype = 'unknown' + if entry.type == FBPACK_PARTITION_TABLE: + etype = 'partiton table' + elif entry.type == FBPACK_PARTITION_DATA: + etype = 'partition' + elif entry.type == FBPACK_SIDELOAD_DATA: + etype = 'sideload' + else: + print("entry else") + print('{}type: {}'.format(prefix, etype)) + product = bytes_to_str(entry.product) + print('{}product: {}'.format(prefix, product)) + print('{}offset: {:#x} ({})'.format(prefix, entry.offset, entry.offset)) + print('{}size: {:#x} ({})'.format(prefix, entry.size, entry.size)) + print('{}slotted: {}'.format(entry.size, bool(entry.slotted))) + print('{}crc32: {:#08x}'.format(prefix, entry.crc32)) + + +def cmd_info(args): + with open(args.file, 'rb') as f: + pack = PackHeader.from_bytes(f.read(len(PackHeader()))) + + if pack.version != FBPACK_VERSION: + raise NotImplementedError('unsupported version {}'.format(pack.version)) + + print("Header:") + print_pack_header(pack) + + print('\nEntries:') + for i in range(1, pack.total_entries + 1): + entry = PackEntry.from_bytes(f.read(len(PackEntry()))) + print('Entry {}: {{'.format(i)) + print_pack_entry(entry, ' ') + print('}') + + +def align_up(val, align): + return (val + align - 1) & ~(align - 1) + + +def create_pack_file(file_name, in_dir_name, pack): + pack.total_entries = len(pack.entries) + offset = pack.header_size + pack.total_entries * pack.entry_header_size + with open(file_name, 'wb') as f: + # write entries data + for entry in pack.entries: + # align data + offset = align_up(offset, pack.data_align) + entry.offset = offset + f.seek(offset) + fin_name = os.path.join(in_dir_name, entry.filepath) + with open(fin_name, 'rb') as fin: + data = fin.read() + entry.size = len(data) + f.write(data) + offset += len(data) + + pack.total_size = offset + f.seek(0) + # write pack header + f.write(bytes(pack)) + # iterate over entries again to write entry header + for entry in pack.entries: + f.write(bytes(entry)) + + +def cmd_create(args): + if args.file.lower().endswith('.xml'): + import xmlparser as parser + elif args.file.lower().endswith('.yaml'): + import yamlparser as parser + else: + raise NotImplementedError('{} type not supported'.format(args.file)) + + pack = parser.parse(args.file) + pack.pack_version = bytes(str(args.pack_version).encode('ascii')) + pack.header_size = len(pack) + + # create output directory if missing + if not os.path.isdir(args.out_dir): + os.makedirs(args.out_dir, 0o755) + + file_name = os.path.join(args.out_dir, pack.name + '.img') + + create_pack_file(file_name, args.in_dir, pack) + + +def product_match(products, product): + return product in products.split('|') + + +def copyfileobj(src, dst, file_size): + while file_size > 0: + buf = src.read(min(128 * 1024, file_size)) + dst.write(buf) + file_size -= len(buf) + + +def cmd_unpack(args): + with open(args.file, 'rb') as f: + pack = PackHeader.from_bytes(f.read(len(PackHeader()))) + + if pack.version != FBPACK_VERSION: + raise NotImplementedError('unsupported version {}'.format(pack.version)) + + entries = [] + # create list of entries we want to extact + for _ in range(pack.total_entries): + entry = PackEntry.from_bytes(f.read(len(PackEntry()))) + name = bytes_to_str(entry.name) + if not args.partitions or name in args.partitions: + # if both product are valid then match product name too + if not args.product or not entry.product or product_match( + entry.product, args.product): + entries.append(entry) + + if not entries and not args.unpack_ver: + raise RuntimeError('no images to unpack') + + # create output directory if it does not exists + if not os.path.isdir(args.out_dir): + os.makedirs(args.out_dir, 0o755) + + out_files = {} + # write file per entry + for entry in entries: + name = bytes_to_str(entry.name) + logging.info( + 'Unpacking {} (size: {}, offset: {})'.format( + name, entry.size, entry.offset)) + f.seek(entry.offset) + entry_filename = os.path.join(args.out_dir, name + '.img') + instance = out_files.get(entry_filename, 0) + 1 + out_files[entry_filename] = instance + if instance > 1: + entry_filename = os.path.join(args.out_dir, name + '({}).img'.format(instance - 1)) + with open(entry_filename, 'wb') as entry_file: + copyfileobj(f, entry_file, entry.size) + + if args.unpack_ver: + ver_file_path = os.path.join(args.out_dir, 'version.txt') + with open(ver_file_path, 'w') as ver_file: + ver_file.write(bytes_to_str(pack.pack_version)) + + logging.info('Done') + + +def parse_args(): + parser = argparse.ArgumentParser( + description="Tool to create/modify/inspect fastboot packed images") + parser.add_argument("-v", "--verbosity", action="count", default=0, + help="increase output verbosity") + + subparsers = parser.add_subparsers() + + # info command + info = subparsers.add_parser('info') + info.add_argument('file', help="packed image file") + info.set_defaults(func=cmd_info) + + # create command + create = subparsers.add_parser('create') + create.add_argument('-d', '--in_dir', help='directory to search for data files', default='.') + create.add_argument( + '-o', + '--out_dir', + help='output directory for the packed image', + default='.') + create.add_argument('-v', '--pack_version', help='Packed image version ', default='') + create.add_argument('file', help="config file describing packed image (yaml/xml)") + create.set_defaults(func=cmd_create) + + # unpack command + unpack = subparsers.add_parser('unpack') + unpack.add_argument('-o', '--out_dir', help='directory to store unpacked images', default='.') + unpack.add_argument('-p', '--product', help='filter images by product', default='') + unpack.add_argument('-v', '--unpack_ver', help='Unpack version to a file', action='store_true') + unpack.add_argument('file', help="packed image file") + unpack.add_argument('partitions', metavar='PART', type=str, nargs='*', + help='Partition names to extract (default all).') + unpack.set_defaults(func=cmd_unpack) + + args = parser.parse_args() + # make sure a command was passed + if not hasattr(args, 'func'): + parser.print_usage() + print("fbpacktool.py: error: no command was passed") + sys.exit(2) + + return args + + +def main(): + args = parse_args() + + log_level = logging.DEBUG + if args.verbosity >= 2: + log_level = logging.DEBUG + elif args.verbosity == 1: + log_level = logging.INFO + else: + log_level = logging.WARNING + + logging.basicConfig(level=log_level) + + # execute command + args.func(args) + + +if __name__ == '__main__': + main() diff --git a/.local/bin/fbpacktool.py b/.local/bin/fbpacktool.py new file mode 100755 index 0000000..4d1bdd4 --- /dev/null +++ b/.local/bin/fbpacktool.py @@ -0,0 +1,256 @@ +#!/usr/bin/env python3 +# +# Copyright 2021 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import sys +import os +import argparse +import logging +from fbpack import * + + +def bytes_to_str(bstr): + return bstr.decode().rstrip('\x00') + + +def print_pack_header(pack): + print('magic: {:#x}'.format(pack.magic)) + print('version: {}'.format(pack.version)) + print('header size: {}'.format(pack.header_size)) + print('entry header size: {}'.format(pack.entry_header_size)) + platform = bytes_to_str(pack.platform) + print('platform: {}'.format(platform)) + pack_version = bytes_to_str(pack.pack_version) + print('pack version: {}'.format(pack_version)) + print('slock type: {}'.format(pack.slot_type)) + print('data align: {}'.format(pack.data_align)) + print('total entries: {}'.format(pack.total_entries)) + print('total size: {}'.format(pack.total_size)) + + +def print_pack_entry(entry, prefix): + name = bytes_to_str(entry.name) + print('{}name: {}'.format(prefix, name)) + etype = 'unknown' + if entry.type == FBPACK_PARTITION_TABLE: + etype = 'partiton table' + elif entry.type == FBPACK_PARTITION_DATA: + etype = 'partition' + elif entry.type == FBPACK_SIDELOAD_DATA: + etype = 'sideload' + else: + print("entry else") + print('{}type: {}'.format(prefix, etype)) + product = bytes_to_str(entry.product) + print('{}product: {}'.format(prefix, product)) + print('{}offset: {:#x} ({})'.format(prefix, entry.offset, entry.offset)) + print('{}size: {:#x} ({})'.format(prefix, entry.size, entry.size)) + print('{}slotted: {}'.format(entry.size, bool(entry.slotted))) + print('{}crc32: {:#08x}'.format(prefix, entry.crc32)) + + +def cmd_info(args): + with open(args.file, 'rb') as f: + pack = PackHeader.from_bytes(f.read(len(PackHeader()))) + + if pack.version != FBPACK_VERSION: + raise NotImplementedError('unsupported version {}'.format(pack.version)) + + print("Header:") + print_pack_header(pack) + + print('\nEntries:') + for i in range(1, pack.total_entries + 1): + entry = PackEntry.from_bytes(f.read(len(PackEntry()))) + print('Entry {}: {{'.format(i)) + print_pack_entry(entry, ' ') + print('}') + + +def align_up(val, align): + return (val + align - 1) & ~(align - 1) + + +def create_pack_file(file_name, in_dir_name, pack): + pack.total_entries = len(pack.entries) + offset = pack.header_size + pack.total_entries * pack.entry_header_size + with open(file_name, 'wb') as f: + # write entries data + for entry in pack.entries: + # align data + offset = align_up(offset, pack.data_align) + entry.offset = offset + f.seek(offset) + fin_name = os.path.join(in_dir_name, entry.filepath) + with open(fin_name, 'rb') as fin: + data = fin.read() + entry.size = len(data) + f.write(data) + offset += len(data) + + pack.total_size = offset + f.seek(0) + # write pack header + f.write(bytes(pack)) + # iterate over entries again to write entry header + for entry in pack.entries: + f.write(bytes(entry)) + + +def cmd_create(args): + if args.file.lower().endswith('.xml'): + import xmlparser as parser + elif args.file.lower().endswith('.yaml'): + import yamlparser as parser + else: + raise NotImplementedError('{} type not supported'.format(args.file)) + + pack = parser.parse(args.file) + pack.pack_version = bytes(str(args.pack_version).encode('ascii')) + pack.header_size = len(pack) + + # create output directory if missing + if not os.path.isdir(args.out_dir): + os.makedirs(args.out_dir, 0o755) + + file_name = os.path.join(args.out_dir, pack.name + '.img') + + create_pack_file(file_name, args.in_dir, pack) + + +def product_match(products, product): + return product in products.split('|') + + +def copyfileobj(src, dst, file_size): + while file_size > 0: + buf = src.read(min(128 * 1024, file_size)) + dst.write(buf) + file_size -= len(buf) + + +def cmd_unpack(args): + with open(args.file, 'rb') as f: + pack = PackHeader.from_bytes(f.read(len(PackHeader()))) + + if pack.version != FBPACK_VERSION: + raise NotImplementedError('unsupported version {}'.format(pack.version)) + + entries = [] + # create list of entries we want to extact + for _ in range(pack.total_entries): + entry = PackEntry.from_bytes(f.read(len(PackEntry()))) + name = bytes_to_str(entry.name) + if not args.partitions or name in args.partitions: + # if both product are valid then match product name too + if not args.product or not entry.product or product_match( + entry.product, args.product): + entries.append(entry) + + if not entries and not args.unpack_ver: + raise RuntimeError('no images to unpack') + + # create output directory if it does not exists + if not os.path.isdir(args.out_dir): + os.makedirs(args.out_dir, 0o755) + + out_files = {} + # write file per entry + for entry in entries: + name = bytes_to_str(entry.name) + logging.info( + 'Unpacking {} (size: {}, offset: {})'.format( + name, entry.size, entry.offset)) + f.seek(entry.offset) + entry_filename = os.path.join(args.out_dir, name + '.img') + instance = out_files.get(entry_filename, 0) + 1 + out_files[entry_filename] = instance + if instance > 1: + entry_filename = os.path.join(args.out_dir, name + '({}).img'.format(instance - 1)) + with open(entry_filename, 'wb') as entry_file: + copyfileobj(f, entry_file, entry.size) + + if args.unpack_ver: + ver_file_path = os.path.join(args.out_dir, 'version.txt') + with open(ver_file_path, 'w') as ver_file: + ver_file.write(bytes_to_str(pack.pack_version)) + + logging.info('Done') + + +def parse_args(): + parser = argparse.ArgumentParser( + description="Tool to create/modify/inspect fastboot packed images") + parser.add_argument("-v", "--verbosity", action="count", default=0, + help="increase output verbosity") + + subparsers = parser.add_subparsers() + + # info command + info = subparsers.add_parser('info') + info.add_argument('file', help="packed image file") + info.set_defaults(func=cmd_info) + + # create command + create = subparsers.add_parser('create') + create.add_argument('-d', '--in_dir', help='directory to search for data files', default='.') + create.add_argument( + '-o', + '--out_dir', + help='output directory for the packed image', + default='.') + create.add_argument('-v', '--pack_version', help='Packed image version ', default='') + create.add_argument('file', help="config file describing packed image (yaml/xml)") + create.set_defaults(func=cmd_create) + + # unpack command + unpack = subparsers.add_parser('unpack') + unpack.add_argument('-o', '--out_dir', help='directory to store unpacked images', default='.') + unpack.add_argument('-p', '--product', help='filter images by product', default='') + unpack.add_argument('-v', '--unpack_ver', help='Unpack version to a file', action='store_true') + unpack.add_argument('file', help="packed image file") + unpack.add_argument('partitions', metavar='PART', type=str, nargs='*', + help='Partition names to extract (default all).') + unpack.set_defaults(func=cmd_unpack) + + args = parser.parse_args() + # make sure a command was passed + if not hasattr(args, 'func'): + parser.print_usage() + print("fbpacktool.py: error: no command was passed") + sys.exit(2) + + return args + + +def main(): + args = parse_args() + + log_level = logging.DEBUG + if args.verbosity >= 2: + log_level = logging.DEBUG + elif args.verbosity == 1: + log_level = logging.INFO + else: + log_level = logging.WARNING + + logging.basicConfig(level=log_level) + + # execute command + args.func(args) + + +if __name__ == '__main__': + main() diff --git a/.local/bin/figfonts.sh b/.local/bin/figfonts.sh new file mode 100755 index 0000000..19dfc34 --- /dev/null +++ b/.local/bin/figfonts.sh @@ -0,0 +1,5 @@ +#!/bin/sh +figlist | awk '/fonts/ {f=1;next} /control/ {f=0} f {print}' | while read font; do + echo "=== $font ===" + echo $font | figlet -f $font +done | less diff --git a/.local/bin/fix_dot_perms b/.local/bin/fix_dot_perms new file mode 100755 index 0000000..67f41be --- /dev/null +++ b/.local/bin/fix_dot_perms @@ -0,0 +1,14 @@ +#!/bin/sh + +chown -R $(whoami) ~/.gnupg/ +find ~/.gnupg -type f -exec chmod 600 {} \; +find ~/.gnupg -type d -exec chmod 700 {} \; + +chmod 700 ~/.ssh +chmod 644 ~/.ssh/known_hosts +chmod 644 ~/.ssh/config +chmod 600 ~/.ssh/id_ed25519 +chmod 644 ~/.ssh/id_ed25519.pub + +eval "$(ssh-agent -s)" +ssh-add ~/.ssh/id_ed25519 diff --git a/.local/bin/flash_oneplus b/.local/bin/flash_oneplus new file mode 100755 index 0000000..b260a30 --- /dev/null +++ b/.local/bin/flash_oneplus @@ -0,0 +1,33 @@ +#!/bin/bash + +images=( +abl +aop +bluetooth +boot +cmnlib64 +cmnlib +devcfg +dsp +dtbo +fw_4j1ed +fw_4u1ea +hyp +keymaster +LOGO +modem +qupfw +storsec +system +tz +vbmeta +vendor +xbl +xbl_config +) + +for image in "${images[@]}"; do + fastboot flash ${image}_a $image.img + fastboot flash ${image}_b $image.img +done +fastboot flash oem_stanvbk oem_stanvbk.img diff --git a/.local/bin/flashit b/.local/bin/flashit new file mode 100755 index 0000000..48c4cea --- /dev/null +++ b/.local/bin/flashit @@ -0,0 +1,20 @@ +#!/bin/bash + +echo "Dispatching brickware!.." +echo "" + +fastboot flash boot boot.img +fastboot flash dtbo dtbo.img +fastboot flash system system.img +fastboot flash vbmeta --disable-verity --disable-verification vbmeta.img + +echo "" +read -r -p "Reboot? [Y/n] " response +case $response in + [nN][oO]|[nN]) + exit 1 + ;; + *) + echo "Good luck!.."; fastboot reboot + ;; +esac diff --git a/.local/bin/fontplot b/.local/bin/fontplot new file mode 120000 index 0000000..a3134f2 --- /dev/null +++ b/.local/bin/fontplot @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/fontplot \ No newline at end of file diff --git a/.local/bin/fontplot2 b/.local/bin/fontplot2 new file mode 120000 index 0000000..0508582 --- /dev/null +++ b/.local/bin/fontplot2 @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/fontplot2 \ No newline at end of file diff --git a/.local/bin/fontsetplot b/.local/bin/fontsetplot new file mode 120000 index 0000000..7c68b0d --- /dev/null +++ b/.local/bin/fontsetplot @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/fontsetplot \ No newline at end of file diff --git a/.local/bin/food b/.local/bin/food new file mode 100755 index 0000000..14d48e7 --- /dev/null +++ b/.local/bin/food @@ -0,0 +1,347 @@ +#!/bin/sh +# food: {ascii/ansi} art food in your terminal +# +# ████ ██ +# ░██░ ░██ +# ██████ ██████ ██████ ░██ +# ░░░██░ ██░░░░██ ██░░░░██ ██████ +# ░██ ░██ ░██░██ ░██ ██░░░██ +# ░██ ░██ ░██░██ ░██░██ ░██ +# ░██ ░░██████ ░░██████ ░░██████ +# ░░ ░░░░░░ ░░░░░░ ░░░░░░ +# +# ▓▓▓▓▓▓▓▓▓▓ +# ░▓ author ▓ xero +# ░▓ code ▓ http://code.xero.nu/dotfiles +# ░▓ mirror ▓ http://git.io/.files +# ░▓▓▓▓▓▓▓▓▓▓ +# ░░░░░░░░░░ + +usage() { +printf "usage: `basename $0` \n\ + [--burger burger] curl -L git.io/burger\n\ + [--coffee coffee] curl -L git.io/coffee\n\ + [--hotcoffee hotcoffee] curl -Ls git.io/hotcoffee | sh\n\ + [--pancakes pancakes] curl -L git.io/pancakes\n\ + [--pizza pizza] curl -L git.io/pizzza\n\ + [--pizza2 pizza2] curl -L git.io/pizzza\n\ + [--poptart poptart] curl -L git.io/poptart\n\ + [--rice rice] curl -L git.io/rice\n\ + [--vburger vburger] curl -L git.io/vburger\n\ + [--waffles waffles] curl -L git.io/waffles\n\ + [--help help]\n" +} + +taco() { +cat << TACO + + ▄▄▄▄ ▄▄ ▄▄▄▄▄▄ + ▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄  + ▄▄▄▄ ▄ ▄▄▄▄▄ ▄ ▄ ▄  ▄▄▄ + ▄▄▄▄▄ ▄▄▄▄▄ ▄ ▄ ▄ ▄▄▄ + ▀▄▄▄▄▄▄▄▄▄ ▄ ▄ ▄ ▄    + ▄▄▄ ▄ ▄▄   ▄ ▄ ▄ ▄ ▄ ▄▄  +  ▄▄▄▄▄▄  ▄ ▄ ▄ ▄▄▄▄▄   +▄▄▄▄▄▄▄▄▄   ▄▄ ▄ ▄▄▄▄ ▄▄▄▄ ▄ +  ▄▄ ▄▄▄   ▄▄ ▄▄▄▄ ▄▄▄▄ ▄▄▀▀ + ▀▄ ▄  ▄   ▄▄▄▄ ▄▄▄▄ ▄▄▀▀ +  ▄▄ ▄▄▄▄▄ ▄▄▄▄ ▄▄▀▀ + ▄▄▄▄ ▄▄▄▄▄ ▄▄▀▀ + ▀▀▀▄▄▄▄▄▄▀▀▀ +  + +TACO +} + +pizza() { +cat << PIZZA + ▄▄▀▀▀▀▀▄ + ▄▄▀ ▀▀▀▀▀▀▀  + ▄▀▀   ▀▀▀▀▀▀▀▀ ▀▄ + ▄▀▀▀  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄ + ▄▀▀ ▀▀ ▀▀▀▀▀  ▀▀▀▀ ▀▀▀▀▀▄ +  ▀▀▀▀▀ ▀ ▀▀▀▀▀▀▀  ▀▀ ▀▀▀▀  +  ▀▀ ▀▀▀ ▀▀▀▀▀▀▀▀  ▀▀▀  ▀▀   + ▀▀▀▀   ▀▀ ▀▀▀   ▀▀▀▀▀   ▀ ▀▀▄ + ▀▀▀▀▀▀▀▀ ▀▀ ▀▀  ▀    ▀▀ ▀▀▀▀▄ + ▀▀▀▀ ▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀    + ▀▀▀▀▀    ▀▀▀▀▀  ▀▀▀▀▀▀▄ +    ▀▀   ▀▀▀▀▀▀▀▀▀▀▀▄ +  ▀▀▄ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀  +      ▀▀   ▀▀▀▀▀▀▀▀▀ + ▀▀     + ▄▀▀  +      + ▀▀ + +PIZZA +} + +pizza2() { +cat << PIZZA + ▄▄▄▄▄▄▄▄▄▄ + ▄▄▄▄▄ ▄▄ ▄▄   + ▄▄ ▄▄ ▄▄ ▄▄▄▄ ▄  + ▄▄  ▄ ▄▄ ▄ ▄▄▄▄▄▄  +▄▄▄ ▄ ▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ +   ▄ ▄ ▄▄▄▄ ▄ ▄▄ ▄▄   +▀▄   ▄▄▄▄▄▄▄▄ ▄▄▄ ▄ ▄ ▄  + ▀▄▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄ ▄▄▄ + ▀▀▄▄▄▄ ▄ ▄ ▄▄▄ ▄▄▄▄   + ▀▄▄ ▄▄▄ ▄▄▄  ▄▄▄ + ▀▀▄▄▄▄▄▄  ▄▄ ▄ ▄ + ▀▄▄▄▄▄▄▄ ▄     + ▀▀▄▄▄▄▄▄ ▄▄▄ + ▀▄▄▄▄    + ▀▄▄▄▄▄▄ + ▀▀▄  + +PIZZA +} + +pancakes() { +cat << PANCAKES + ▄▄▄▄▄▄▀▄▄▄▄▄▄▄ + ▄▄▄▄▀▀▀▀        ▀▀▀▀▀▀▄▄▄ + ▄▄ ▀ ▀   ▀  ▀▀▀▀▀▀▀     ▀  ▀▄ +▄▀▀     ▀▀   ▀▀▀▀▀▀▀   ▀▀ ▀   ▄ +       ▀      ▀▀ ▀ ▀▀▀▀▀▀▀▀▀ ▀  +▀▀ ▀▀▀▀  ▀▀    ▀▀ ▀▀▀▀   ▀▀▀▀ ▀▄ + ▀    ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   ▀▀    +   ▀▀▀▀              ▀▀▀▀  ▀     +   ▀▀  ▀▀▀ ▀▀▀▀ ▀▀▀▀▀  ▀▀▀ ▀▀▀   + ▀  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀  +   ▀▀▀                   ▀▀▀     +  ▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   ▀▀▀   + ▀ ▀    ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   ▀▀▀▀ + ▀▀▀▀  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀▀▀▀ + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +PANCAKES +} + +poptart() { +cat << POPTART + ▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄ +  ▀ ▀▀ ▀  ▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀ ▀▀▄ + ▀   ▀▀▀      ▀▀       ▀▀▀▀▀ ▀▀▀▄ + ▀▀ ▀▀▀                  ▀▀▀▀▀  ▀▄ +  ▀      ▀▀          ▀     ▀▀▀ ▀▀   +         ▀▀                     ▀▀  + ▀▀     ▀                 ▀▀▀▀▀ ▀   + ▀▀                       ▀  ▀▀▀▀   + ▀                          ▀▀▀▀ ▀  + ▀▀  ▀▀        ▀ ▀       ▀▀ ▀▀▀▀▀▀  + ▀                       ▀▀         +             ▀       ▀          ▀▀  + ▀▀      ▀▀                    ▀▀▀  + ▀▀   ▀ ▀▀▀             ▀▀▀         +      ▀          ▀      ▀▀          + ▀▀   ▀▀▀▀      ▀▀▀                 +     ▀▀▀▀▀▀  ▀                      +  ▀ ▀▀ ▀▀▀ ▀▀▀▀▀▀▀ ▀▀   ▀▀▀▀ ▀▀▀    +  ▀   ▀▀                    ▀       +   ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀     + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +POPTART +} + +waffles() { +cat << WAFFLES + ▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄ + ▄▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀   ▀▀ ▀▀▀  ▀▀▄ +▄▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀   ▀▀▀▀▀▀▀ ▀▄ +   ▀    ▀ ▀ ▀▀      ▀   ▀    ▀▀▀   + ▀ ▀▀  ▀▀ ▀▀  ▀ ▀ ▀▀▀ ▀  ▀  ▀▀▀▀   + ▀▀▀▀▀▀ ▀▀▀ ▀   ▀▀▀▀▀▀▀▀ ▀▀▀▀▀ ▀   +  ▀▀▀   ▀   ▀   ▀▀▀     ▀▀    ▀▀   + ▀     ▀▀  ▀▀  ▀ ▀▀ ▀   ▀  ▀▀▀ ▀   + ▀ ▀    ▀    ▀ ▀▀       ▀    ▀     + ▀▀ ▀  ▀▀▀▀▀▀▀    ▀▀▀    ▀  ▀▀▀▀   +    ▀▀▀▀▀  ▀ ▀ ▀ ▀▀ ▀    ▀▀▀▀▀     + ▀ ▀▀▀▀▀▀▀ ▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀   + ▀     ▀▀        ▀▀ ▀      ▀▀▀     +   ▀   ▀▀    ▀    ▀     ▀   ▀▀     +▀▀ ▀▀▀▀▀▀▀  ▀ ▀▀▀▀▀▀▀ ▀  ▀▀▀▀▀▀▀▀▀ + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +WAFFLES +} + +burger() { +cat << BURGER + ▄▄▄▄▀▀▀▀▀▀▄▄▄▄ + ▄▄▀▀▀▀▀ ▀  ▀▀▀▀▀▀▀▀▀▄▄ + ▄▀  ▀  ▀  ▀▀▀ ▀ ▀▀▀ ▀▀ ▀▀▄ + ▄▀▀  ▀▀   ▀▀▀▀ ▀  ▀▀ ▀▀  ▀▀▀▄ + ▄▀  ▀ ▀   ▀  ▀▀▀ ▀   ▀▀▀ ▀▀▀▀ ▄ + ▄▀▀▀▀▀▀▀▀▀  ▀  ▀   ▀▀  ▀▀▀▀▀     +  ▀▀▀▀ ▀▀ ▀▀ ▀  ▀ ▀  ▀ ▀▀▀▀ ▀▀▀ ▀ +  ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄▄ +▄▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀ +▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀▀▀▀ ▀▀▀ +  ▀▀▀▀▀▀▀▀         ▀▀▀ ▀ ▀▀▀▀▀▀▄ + ▄▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ +▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀  +  ▀▀▀▀▀▀▀ ▀▀▀▀▀▀ ▀  ▀   ▀▀▀▀▀  +  ▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀  +  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  + ▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + +BURGER +} + +vburger() { +cat << VBURGER + ▄▄▄▄▄▄▄▄▄▄ + ▄▄▄▄▄▄ ▄▄ ▄▄▄▄ ▄▄▄▄▄ + ▄▄▄▄▄ ▄▄ ▄▄▄ ▄▄▄ ▄ ▄▄ + ▄▄▄▄  ▄▄ ▄  ▄  ▄▄▄ ▄▄ +▄▄▄ ▄ ▄ ▄▄ ▄ ▄ ▄▄▄   +   ▄▄ ▄ ▄ ▄▄▄ ▄ ▄ ▄▄▄▄ ▄▄ ▄▀ +▀▄ ▄ ▄▄▄  ▄ ▄ ▄▄▄ ▄▄ ▄▄▄▄▄▄▄▄ +▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ ▄▄▀ +▀▄ ▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄  ▄▄ ▄▄  +▀▄▄▄ ▄▄ ▄▄▄▄▄▄ ▄ ▄ ▄▄▄▄▄▄▄  + ▀▄ ▄  ▄▄ ▄▄▄▄ ▄ ▄▄ ▄ ▄ ▄ ▄    +  ▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄▄▄     +   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▀ +   ▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄ ▄▄▄▄ ▀ + ▀▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀▀ + ▀▀▀▀▄▄▄▄▄▄▄▄▄▄▀▀▀ + +VBURGER +} + +rice() { +cat << RICE + ▄▄▄▄▄▄ + ▄▄▄▄ ▄ ▄ ▄▄▄▄ + ▄▄▄▄▄ ▄▄ ▄ ▄ ▄▄▄▄▄▄ + ▄▄▄ ▄▄ ▄ ▄ ▄ ▄ ▄ ▄▄ ▄▄▄ +  ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄ + ▀▄ ▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄ ▄▀ + ▀▄  ▄▄▄▄▄▄ ▄▄▄▄▄▄  ▄▀ + ▀▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▀ + ▀▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▀ + ▀▀▄▄▄ ▄ ▄▄▄▀▀ + ▀▀▀▀▀▀▀▀ + +RICE +} + +coffee() { +cat << COFFEE + ▄▄▄▄▄▄▄▄▄▄ + ▄ ▀▀▀ ▀  ▀▀▀  ▄ +  ▀▀  ▀▀▀▀      ▀▀  +   ▀▀▀▀▀    ▀▀▀▀▀▀  +      ▀▀▀▀▀▀▀▀▀        ▄ +                   ▀ ▀ ▀ +   ▀            ▀▀   ▀ +      ▀▀▀▀▀▀▀▀▀      ▀ +  ▀                     +  ▀                 ▀▀▀▀ +  ▀                ▀▀ + ▀                ▀   ▄▄ + ▀▀▀▀        ▀▀▀▀  ▀▀▀ + ▀▀▀▀▀▀▀▀▀▀▀▀▀ + +COFFEE +} + +steam(){ +case "$1" in +"0") +cat << X0 + : : : : : + : : : : : + : : : : : + : : : : : +X0 +;; +"1") +cat << X0 + : : : : : + : : : : : + : : : : : + : : : : : +X0 +;; +"2") +cat << X0 + : : : : : + : : : : : + : : : : : + : : : : : +X0 +;; +"3") +cat << X0 + : : : : : + : : : : : + : : : : : + : : : : : +X0 +;; +esac +} + +hotcoffee() { + steam 1 + coffee + + x=0 + while :; do +cat << X0 + +X0 + steam $x + coffee + [ "$x" -le "2" ] && x=$((x+1)) || x=0 + sleep 0.25 + done +} + +case "$1" in + *--burger|burger) + burger + ;; + *--vburger|vburger) + vburger + ;; + *--poptart|poptart) + poptart + ;; + *--rice|rice) + rice + ;; + *--waffles|waffles) + waffles + ;; + *--pancakes|pancakes) + pancakes + ;; + *--pizza2|pizza2) + pizza2 + ;; + *--pizza|pizza) + pizza + ;; + *--taco|taco) + taco + ;; + *--coffee|coffee) + coffee + ;; + *--hotcoffee|hotcoffee) + hotcoffee + ;; + *) + taco + usage + ;; +esac diff --git a/.local/bin/format-python b/.local/bin/format-python new file mode 100755 index 0000000..c80102d --- /dev/null +++ b/.local/bin/format-python @@ -0,0 +1,8 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from formatter2.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/.local/bin/gap b/.local/bin/gap new file mode 100755 index 0000000..b899196 --- /dev/null +++ b/.local/bin/gap @@ -0,0 +1,24 @@ +#!/bin/bash + +# Below command will backup everything inside the project folder +git add . + +# Give a comment to the commit if you want +echo "####################################" +echo "Write your commit comment! $(date +%Y.%m.%d) Update:" +echo "####################################" + +read input + +# Committing to the local repository with a message containing the time details and commit text + +git commit -a -m "$(date +%Y.%m.%d) Update $input" + +# Push the local files to github + +git push + + +echo "################################################################" +echo "################### Git Push Done ######################" +echo "################################################################" \ No newline at end of file diff --git a/.local/bin/gen_cloudripper_defconfig.sh b/.local/bin/gen_cloudripper_defconfig.sh new file mode 100644 index 0000000..14dfa00 --- /dev/null +++ b/.local/bin/gen_cloudripper_defconfig.sh @@ -0,0 +1,4 @@ +KCONFIG_CONFIG=arch/arm64/configs/cloudripper_gki_defconfig \ + scripts/kconfig/merge_config.sh -m -r \ + arch/arm64/configs/gki_defconfig \ + arch/arm64/configs/cloudripper_gki.fragment diff --git a/.local/bin/ghosts b/.local/bin/ghosts new file mode 100755 index 0000000..2cf1727 --- /dev/null +++ b/.local/bin/ghosts @@ -0,0 +1,31 @@ +#!/bin/bash +# +# ANSI color scheme script by pfh +# +# Initializing mod by lolilolicon from Archlinux +# + +f=3 b=4 +for j in f b; do + for i in {0..7}; do + printf -v $j$i %b "\e[${!j}${i}m" + done +done +bld=$'\e[1m' +rst=$'\e[0m' +inv=$'\e[7m' +cat << EOF + +$f1 ▄▄▄ $f2 ▄▄▄ $f3 ▄▄▄ $f4 ▄▄▄ $f5 ▄▄▄ $f6 ▄▄▄ +$f1 ▀█▀██ ▄ $f2 ▀█▀██ ▄ $f3 ▀█▀██ ▄ $f4 ▀█▀██ ▄ $f5 ▀█▀██ ▄ $f6 ▀█▀██ ▄ +$f1 ▀▄██████▀ $f2 ▀▄██████▀ $f3 ▀▄██████▀ $f4 ▀▄██████▀ $f5 ▀▄██████▀ $f6 ▀▄██████▀ +$f1 ▀█████ $f2 ▀█████ $f3 ▀█████ $f4 ▀█████ $f5 ▀█████ $f6 ▀█████ +$f1 ▀▀▀▀▄ $f2 ▀▀▀▀▄ $f3 ▀▀▀▀▄ $f4 ▀▀▀▀▄ $f5 ▀▀▀▀▄ $f6 ▀▀▀▀▄ +$bld +$f1 ▄▄▄ $f2 ▄▄▄ $f3 ▄▄▄ $f4 ▄▄▄ $f5 ▄▄▄ $f6 ▄▄▄ +$f1 ▀█▀██ ▄ $f2 ▀█▀██ ▄ $f3 ▀█▀██ ▄ $f4 ▀█▀██ ▄ $f5 ▀█▀██ ▄ $f6 ▀█▀██ ▄ +$f1 ▀▄██████▀ $f2 ▀▄██████▀ $f3 ▀▄██████▀ $f4 ▀▄██████▀ $f5 ▀▄██████▀ $f6 ▀▄██████▀ +$f1 ▀█████ $f2 ▀█████ $f3 ▀█████ $f4 ▀█████ $f5 ▀█████ $f6 ▀█████ +$f1 ▀▀▀▀▄ $f2 ▀▀▀▀▄ $f3 ▀▀▀▀▄ $f4 ▀▀▀▀▄ $f5 ▀▀▀▀▄ $f6 ▀▀▀▀▄ +$rst +EOF \ No newline at end of file diff --git a/.local/bin/gibram b/.local/bin/gibram new file mode 100755 index 0000000..fcb8b50 --- /dev/null +++ b/.local/bin/gibram @@ -0,0 +1,10 @@ +#!/bin/bash + +echo 'Before:' +free -h +sleep 1s +sync && echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared' +sleep 1s +echo 'After:' +free -h +exit 0 \ No newline at end of file diff --git a/.local/bin/gitam b/.local/bin/gitam new file mode 100755 index 0000000..f7d5853 --- /dev/null +++ b/.local/bin/gitam @@ -0,0 +1,5 @@ +#!/bin/bash + +for l in $@; do + curl $l.patch | git am -3 +done diff --git a/.local/bin/gitio b/.local/bin/gitio new file mode 100755 index 0000000..d946e9b --- /dev/null +++ b/.local/bin/gitio @@ -0,0 +1,87 @@ +#!/bin/sh +# +# ██ ██ ██ +# █████ ░░ ░██ ░░ +# ██░░░██ ██ ██████ ██ ██████ +# ░██ ░██░██░░░██░ ░██ ██░░░░██ +# ░░██████░██ ░██ ░██░██ ░██ +# ░░░░░██░██ ░██ ░██░██ ░██ +# █████ ░██ ░░██ ██░██░░██████ +# ░░░░░ ░░ ░░ ░░ ░░ ░░░░░░ +# +# create short / vanity github urls +# ▟▙ +# ▟▒░░░░░░░▜▙▜████████████████████████████████▛ +# ▜▒░░░░░░░▟▛▟▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▛ +# ▜▛ +# xero / syntax-samurai + +usage () { + cat < 2: + raise getopt.GetoptError('Too many arguments') + + except getopt.GetoptError: + msg = sys.exc_info()[1] # current exception + txt = 'ERROR: '+str(msg) # that's required to get not-so-dumb result from 2to3 tool + print(txt) + print(usage) + sys.exit(2) + + fin = args[0] + if not os.path.isfile(fin): + txt = "ERROR: File not found: %s" % fin # that's required to get not-so-dumb result from 2to3 tool + print(txt) + sys.exit(1) + + if len(args) == 2: + fout = args[1] + else: + # write to stdout + from intelhex import compat + fout = compat.get_binary_stdout() + + from intelhex import hex2bin + sys.exit(hex2bin(fin, fout, start, end, size, pad)) diff --git a/.local/bin/hex2dump.py b/.local/bin/hex2dump.py new file mode 100644 index 0000000..68ef043 --- /dev/null +++ b/.local/bin/hex2dump.py @@ -0,0 +1,135 @@ +#!/usr/bin/python3 + +# Copyright (c) 2008-2018 Alexander Belchenko +# All rights reserved. +# +# Redistribution and use in source and binary forms, +# with or without modification, are permitted provided +# that the following conditions are met: +# +# * Redistributions of source code must retain +# the above copyright notice, this list of conditions +# and the following disclaimer. +# * Redistributions in binary form must reproduce +# the above copyright notice, this list of conditions +# and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the author nor the names +# of its contributors may be used to endorse +# or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Show content of hex file as hexdump.""" + +VERSION = '2.2' + +USAGE = '''hex2dump: show content of hex file as hexdump. +Usage: + python hex2dump.py [options] HEXFILE + +Options: + -h, --help this help message. + -v, --version version info. + -r, --range=START:END specify address range for dumping + (ascii hex value). + Range can be in form 'START:' or ':END'. + --width=N dump N data bytes per line (default: 16). + +Arguments: + HEXFILE name of hex file for processing (use '-' to read + from stdin) +''' + +import sys + +DEFAULT_WIDTH = 16 + +def hex2dump(hexfile, start=None, end=None, width=DEFAULT_WIDTH): + import intelhex + if hexfile == '-': + hexfile = sys.stdin + try: + ih = intelhex.IntelHex(hexfile) + except (IOError, intelhex.IntelHexError): + e = sys.exc_info()[1] # current exception + sys.stderr.write('Error reading file: %s\n' % e) + return 1 + if not (start is None and end is None): + ih = ih[slice(start,end)] + ih.dump(tofile=sys.stdout, width=width) + return 0 + + +def main(argv=None): + import getopt + + if argv is None: + argv = sys.argv[1:] + + start = None + end = None + width = DEFAULT_WIDTH + + try: + opts, args = getopt.getopt(sys.argv[1:], "hvp:r:", + ["help", "version", "range=", "width="]) + for o, a in opts: + if o in ("-h", "--help"): + print(USAGE) + return 0 + elif o in ("-v", "--version"): + print(VERSION) + return 0 + elif o in ("-r", "--range"): + try: + l = a.split(":") + if l[0] != '': + start = int(l[0], 16) + if l[1] != '': + end = int(l[1], 16) + except: + raise getopt.GetoptError('Bad range value(s)') + elif o == "--width": + try: + width = int(a) + if width < 1: + raise ValueError + except: + raise getopt.GetoptError('Bad width value (%s)' % a) + if not args: + raise getopt.GetoptError('Hex file is not specified') + if len(args) > 1: + raise getopt.GetoptError('Too many arguments') + except getopt.GetoptError: + msg = sys.exc_info()[1] # current exception + txt = 'ERROR: '+str(msg) # that's required to get not-so-dumb result from 2to3 tool + print(txt) + print(USAGE) + return 2 + + try: + return hex2dump(args[0], start, end, width) + except IOError: + e = sys.exc_info()[1] # current exception + import errno + if e.errno not in (0, errno.EPIPE): + raise + + +if __name__ == '__main__': + import sys + sys.exit(main()) diff --git a/.local/bin/hexdiff.py b/.local/bin/hexdiff.py new file mode 100644 index 0000000..5b6fa9a --- /dev/null +++ b/.local/bin/hexdiff.py @@ -0,0 +1,90 @@ +#!/usr/bin/python3 + +# Copyright (c) 2011-2018 Alexander Belchenko +# All rights reserved. +# +# Redistribution and use in source and binary forms, +# with or without modification, are permitted provided +# that the following conditions are met: +# +# * Redistributions of source code must retain +# the above copyright notice, this list of conditions +# and the following disclaimer. +# * Redistributions in binary form must reproduce +# the above copyright notice, this list of conditions +# and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the author nor the names +# of its contributors may be used to endorse +# or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Produce diff for 2 hex files using hex dump as string representation +of compared data. +""" + +VERSION = '2.2' + +USAGE = '''hexdiff: diff dumps of 2 hex files. +Usage: + python hexdiff.py [options] FILE1 FILE2 + +Options: + -h, --help this help message. + -v, --version version info. +''' + +import sys + + +def main(argv=None): + import getopt + + if argv is None: + argv = sys.argv[1:] + try: + opts, args = getopt.gnu_getopt(argv, 'hv', ['help', 'version']) + + for o,a in opts: + if o in ('-h', '--help'): + print(USAGE) + return 0 + elif o in ('-v', '--version'): + print(VERSION) + return 0 + + except getopt.GetoptError: + e = sys.exc_info()[1] # current exception + sys.stderr.write(str(e)+"\n") + sys.stderr.write(USAGE+"\n") + return 1 + + if len(args) != 2: + sys.stderr.write("ERROR: You should specify 2 files to diff.\n") + sys.stderr.write(USAGE+"\n") + return 1 + + fname1, fname2 = args + + from intelhex import IntelHex, diff_dumps + ih1 = IntelHex(fname1) + ih2 = IntelHex(fname2) + diff_dumps(ih1, ih2, name1=fname1, name2=fname2) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/.local/bin/hexinfo.py b/.local/bin/hexinfo.py new file mode 100644 index 0000000..3af9bd5 --- /dev/null +++ b/.local/bin/hexinfo.py @@ -0,0 +1,108 @@ +#!/usr/bin/python3 + +# Copyright (c) 2015 Andrew Fernandes +# All rights reserved. +# +# Redistribution and use in source and binary forms, +# with or without modification, are permitted provided +# that the following conditions are met: +# +# * Redistributions of source code must retain +# the above copyright notice, this list of conditions +# and the following disclaimer. +# * Redistributions in binary form must reproduce +# the above copyright notice, this list of conditions +# and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the author nor the names +# of its contributors may be used to endorse +# or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Summarize the information in a hex file by printing the execution + start address (if any), and the address ranges covered by the + data (if any), in YAML format. +""" + +VERSION = '2.2' + +USAGE = '''hexinfo: summarize a hex file's contents. +Usage: + python hexinfo.py [options] FILE [ FILE ... ] + +Options: + -h, --help this help message. + -v, --version version info. +''' + +import sys + +INDENT = ' ' +INLIST = '- ' + +def summarize_yaml(fname): + print("{:s}file: '{:s}'".format(INLIST, fname)) + from intelhex import IntelHex + ih = IntelHex(fname) + if ih.start_addr: + keys = sorted(ih.start_addr.keys()) + if keys == ['CS','IP']: + entry = ih.start_addr['CS'] * 65536 + ih.start_addr['IP'] + elif keys == ['EIP']: + entry = ih.start_addr['EIP'] + else: + raise RuntimeError("unknown 'IntelHex.start_addr' found") + print("{:s}entry: 0x{:08X}".format(INDENT, entry)) + segments = ih.segments() + if segments: + print("{:s}data:".format(INDENT)) + for s in segments: + print("{:s}{:s}{{ first: 0x{:08X}, last: 0x{:08X}, length: 0x{:08X} }}".format(INDENT, INLIST, s[0], s[1]-1, s[1]-s[0])) + print("") + +def main(argv=None): + import getopt + + if argv is None: + argv = sys.argv[1:] + try: + opts, args = getopt.gnu_getopt(argv, 'hv', ['help', 'version']) + + for o,a in opts: + if o in ('-h', '--help'): + print(USAGE) + return 0 + elif o in ('-v', '--version'): + print(VERSION) + return 0 + + except getopt.GetoptError: + e = sys.exc_info()[1] # current exception + sys.stderr.write(str(e)+"\n") + sys.stderr.write(USAGE+"\n") + return 1 + + if len(args) < 1: + sys.stderr.write("ERROR: You should specify one or more files to summarize.\n") + sys.stderr.write(USAGE+"\n") + return 1 + + for fname in args: + summarize_yaml(fname) + +if __name__ == '__main__': + sys.exit(main()) diff --git a/.local/bin/hexmerge.py b/.local/bin/hexmerge.py new file mode 100644 index 0000000..f019bed --- /dev/null +++ b/.local/bin/hexmerge.py @@ -0,0 +1,178 @@ +#!/usr/bin/python3 + +# Copyright (c) 2008-2018 Alexander Belchenko +# All rights reserved. +# +# Redistribution and use in source and binary forms, +# with or without modification, are permitted provided +# that the following conditions are met: +# +# * Redistributions of source code must retain +# the above copyright notice, this list of conditions +# and the following disclaimer. +# * Redistributions in binary form must reproduce +# the above copyright notice, this list of conditions +# and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of the author nor the names +# of its contributors may be used to endorse +# or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Merge content of several hex files into one file.""" + +VERSION = '2.2' + +USAGE = '''hexmerge: merge content of hex files. +Usage: + python hexmerge.py [options] FILES... + +Options: + -h, --help this help message. + -v, --version version info. + -o, --output=FILENAME output file name (emit output to stdout + if option is not specified) + -r, --range=START:END specify address range for output + (ascii hex value). Both values are inclusive. + Range can be in form 'START:' or ':END'. + --no-start-addr Don't write start addr to output file. + --overlap=METHOD What to do when data in files overlapped. + Supported variants: + * error -- stop and show error message (default) + * ignore -- keep data from first file that + contains data at overlapped address + * replace -- use data from last file that + contains data at overlapped address + +Arguments: + FILES list of hex files for merging + (use '-' to read content from stdin) + +You can specify address range for each file in the form: + + filename:START:END + +See description of range option above. + +You can omit START or END, so supported variants are: + + filename:START: read filename and use data starting from START addr + filename::END read filename and use data till END addr + +Use entire file content: + + filename +or + filename:: +''' + +import sys + + +def main(args=None): + import getopt + + output = None + start = None + end = None + write_start_addr = True + overlap = 'error' + + if args is None: + args = sys.argv[1:] + try: + opts, args = getopt.gnu_getopt(args, 'hvo:r:', + ['help', 'version', + 'output=', 'range=', + 'no-start-addr', 'overlap=', + ]) + + for o,a in opts: + if o in ('-h', '--help'): + print(USAGE) + return 0 + elif o in ('-v', '--version'): + print(VERSION) + return 0 + elif o in ('-o', '--output'): + output = a + elif o in ("-r", "--range"): + try: + l = a.split(":") + if l[0] != '': + start = int(l[0], 16) + if l[1] != '': + end = int(l[1], 16) + except (ValueError, IndexError): + raise getopt.GetoptError('Bad range value(s)') + elif o == '--no-start-addr': + write_start_addr = False + elif o == '--overlap': + if a in ('error', 'ignore', 'replace'): + overlap = a + else: + raise getopt.GetoptError('Bad overlap value') + + if len(args) == 0: + raise getopt.GetoptError('You should specify file list') + + except getopt.GetoptError: + e = sys.exc_info()[1] # current exception + sys.stderr.write(str(e)+"\n") + sys.stderr.write(USAGE+"\n") + return 1 + + import intelhex + # TODO: move actual merge code into intelhex package as helper function + # and write couple of tests for it. + res = intelhex.IntelHex() + + def end_addr_inclusive(addr): + if addr is not None: + return addr + 1 + return addr + + for f in args: + try: + fname, fstart, fend = intelhex._get_file_and_addr_range(f) + except intelhex._BadFileNotation: + sys.stderr.write('Bad argument: "%s"\n' % f) + sys.stderr.write(USAGE+"\n") + return 1 + if fname == '-': + fname = sys.stdin + ih = intelhex.IntelHex(fname) + if (fstart, fend) != (None, None): + ih = ih[fstart:end_addr_inclusive(fend)] + try: + res.merge(ih, overlap) + except intelhex.AddressOverlapError: + e = sys.exc_info()[1] # current exception + sys.stderr.write('Merging: '+fname+"\n") + sys.stderr.write(str(e)+"\n") + return 1 + + if (start, end) != (None, None): + res = res[start:end_addr_inclusive(end)] + if output is None: + output = sys.stdout + res.write_hex_file(output, write_start_addr) + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/.local/bin/hintplot b/.local/bin/hintplot new file mode 120000 index 0000000..2af8f9d --- /dev/null +++ b/.local/bin/hintplot @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/hintplot \ No newline at end of file diff --git a/.local/bin/img2ext4 b/.local/bin/img2ext4 new file mode 100755 index 0000000..6f3a4dd --- /dev/null +++ b/.local/bin/img2ext4 @@ -0,0 +1,36 @@ +#!/usr/bin/env python2 + +import sys +import mmap + +ext4Magic = '\x53\xEF' +ext4MagicOffset = 1080 + +if len(sys.argv) < 2: + print("No I/O supplied") + exit(1) + +def copyExt4Image(origin, offset, size, dest): + with open(origin, 'r') as input: + with open(dest, 'w') as output: + input.seek(offset - ext4MagicOffset) + output.write(input.read(size + ext4MagicOffset)) + +def findMagics(input): + magics = [0] + with open(input, 'r+b') as f: + mm = mmap.mmap(f.fileno(), 0) + while magics[-1] != -1: + magics.append(mm.find(ext4Magic, magics[-1] + ext4MagicOffset)) + return magics + +systemimg = sys.argv[1] +offsets = findMagics(systemimg) +if len(offsets[1:]) != 0: + for num, offset in enumerate(offsets[1:], start=1): + print('ext4 magic number found at byte %d' % offset) + name = "{}_part{}.img".format(systemimg, num) + print('Creating {}...'.format(name)) + copyExt4Image(systemimg, offset, offsets[num + 1] - offset, name) +else: + print("Not ext4 images found") diff --git a/.local/bin/img2simg b/.local/bin/img2simg new file mode 100755 index 0000000..ed9d3c5 Binary files /dev/null and b/.local/bin/img2simg differ diff --git a/.local/bin/invaders b/.local/bin/invaders new file mode 100755 index 0000000..0ca2036 --- /dev/null +++ b/.local/bin/invaders @@ -0,0 +1,54 @@ +#!/bin/sh + +# ANSI Color -- use these variables to easily have different color +# and format output. Make sure to output the reset sequence after +# colors (f = foreground, b = background), and use the 'off' +# feature for anything you turn on. + +initializeANSI() +{ + esc="" + + blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m" + yellowf="${esc}[33m" bluef="${esc}[34m"; purplef="${esc}[35m" + cyanf="${esc}[36m"; whitef="${esc}[37m" + + blackb="${esc}[40m"; redb="${esc}[41m"; greenb="${esc}[42m" + yellowb="${esc}[43m" blueb="${esc}[44m"; purpleb="${esc}[45m" + cyanb="${esc}[46m"; whiteb="${esc}[47m" + + boldon="${esc}[1m"; boldoff="${esc}[22m" + italicson="${esc}[3m"; italicsoff="${esc}[23m" + ulon="${esc}[4m"; uloff="${esc}[24m" + invon="${esc}[7m"; invoff="${esc}[27m" + + reset="${esc}[0m" +} + +# note in this first use that switching colors doesn't require a reset +# first - the new color overrides the old one. + +initializeANSI + +cat << EOF + + ${boldon}${redf}▀▄ ▄▀ ${reset} ${boldon}${greenf}▄▄▄████▄▄▄ ${reset} ${boldon}${yellowf} ▄██▄ ${reset} ${boldon}${bluef}▀▄ ▄▀ ${reset} ${boldon}${purplef}▄▄▄████▄▄▄ ${reset} ${boldon}${cyanf} ▄██▄ ${reset} + ${boldon}${redf}▄█▀███▀█▄ ${reset} ${boldon}${greenf}███▀▀██▀▀███${reset} ${boldon}${yellowf}▄█▀██▀█▄${reset} ${boldon}${bluef}▄█▀███▀█▄ ${reset} ${boldon}${purplef}███▀▀██▀▀███${reset} ${boldon}${cyanf}▄█▀██▀█▄${reset} + ${boldon}${redf}█▀███████▀█${reset} ${boldon}${greenf}▀▀▀██▀▀██▀▀▀${reset} ${boldon}${yellowf}▀▀█▀▀█▀▀${reset} ${boldon}${bluef}█▀███████▀█${reset} ${boldon}${purplef}▀▀▀██▀▀██▀▀▀${reset} ${boldon}${cyanf}▀▀█▀▀█▀▀${reset} + ${boldon}${redf}▀ ▀▄▄ ▄▄▀ ▀${reset} ${boldon}${greenf}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${boldon}${yellowf}▄▀▄▀▀▄▀▄${reset} ${boldon}${bluef}▀ ▀▄▄ ▄▄▀ ▀${reset} ${boldon}${purplef}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${boldon}${cyanf}▄▀▄▀▀▄▀▄${reset} + + ${redf}▀▄ ▄▀ ${reset} ${greenf}▄▄▄████▄▄▄ ${reset} ${yellowf} ▄██▄ ${reset} ${bluef}▀▄ ▄▀ ${reset} ${purplef}▄▄▄████▄▄▄ ${reset} ${cyanf} ▄██▄ ${reset} + ${redf}▄█▀███▀█▄ ${reset} ${greenf}███▀▀██▀▀███${reset} ${yellowf}▄█▀██▀█▄${reset} ${bluef}▄█▀███▀█▄ ${reset} ${purplef}███▀▀██▀▀███${reset} ${cyanf}▄█▀██▀█▄${reset} + ${redf}█▀███████▀█${reset} ${greenf}▀▀▀██▀▀██▀▀▀${reset} ${yellowf}▀▀█▀▀█▀▀${reset} ${bluef}█▀███████▀█${reset} ${purplef}▀▀▀██▀▀██▀▀▀${reset} ${cyanf}▀▀█▀▀█▀▀${reset} + ${redf}▀ ▀▄▄ ▄▄▀ ▀${reset} ${greenf}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${yellowf}▄▀▄▀▀▄▀▄${reset} ${bluef}▀ ▀▄▄ ▄▄▀ ▀${reset} ${purplef}▄▄▀▀ ▀▀ ▀▀▄▄${reset} ${cyanf}▄▀▄▀▀▄▀▄${reset} + + + ${whitef}▌${reset} + + ${whitef}▌${reset} + ${whitef}${reset} + ${whitef}▄█▄${reset} + ${whitef}▄█████████▄${reset} + ${whitef}▀▀▀▀▀▀▀▀▀▀▀${reset} + +EOF \ No newline at end of file diff --git a/.local/bin/lineage-build.sh b/.local/bin/lineage-build.sh new file mode 100755 index 0000000..e0fc505 --- /dev/null +++ b/.local/bin/lineage-build.sh @@ -0,0 +1,561 @@ +#!/bin/bash +# LineageOS build helper script, credit to @AOSPA, @YumeMichi + +# red = errors, cyan = warnings, green = confirmations, blue = informational +# plain for generic text, bold for titles, reset flag at each end of line +# plain blue should not be used for readability reasons - use plain cyan instead +CLR_RST=$(tput sgr0) ## reset flag +#CLR_RED=$CLR_RST$(tput setaf 1) # red, plain +CLR_GRN=$CLR_RST$(tput setaf 2) # green, plain +#CLR_BLU=$CLR_RST$(tput setaf 4) # blue, plain +CLR_CYA=$CLR_RST$(tput setaf 6) # cyan, plain +CLR_BLD=$(tput bold) ## bold flag +CLR_BLD_RED=$CLR_RST$CLR_BLD$(tput setaf 1) # red, bold +CLR_BLD_GRN=$CLR_RST$CLR_BLD$(tput setaf 2) # green, bold +CLR_BLD_BLU=$CLR_RST$CLR_BLD$(tput setaf 4) # blue, bold +#CLR_BLD_CYA=$CLR_RST$CLR_BLD$(tput setaf 6) # cyan, bold + +# Set defaults +LINEAGE_BUILD_VARIANT="userdebug" +LINEAGE_VERSION_MAJOR="20" +LINEAGE_VERSION_MINOR="0" +LINEAGE_BUILD_DATE=$(date -u +%Y%m%d) +LINEAGE_BUILD_TYPE="X" +LINEAGE_EXTRAVERSION="" + +function checkExit() { + if [ $? -ne 0 ]; then + EXIT_CODE=$? + echo "${CLR_BLD_RED}Build failed!${CLR_RST}" + echo -e "" + exit $EXIT_CODE + fi +} + +# Output usage help +function showHelpAndExit { + echo -e "${CLR_BLD_BLU}Usage: $0 [options]${CLR_RST}" + echo -e "" + echo -e "${CLR_BLD_BLU}Options:${CLR_RST}" + echo -e "${CLR_BLD_BLU} -h, --help Display this help message${CLR_RST}" + echo -e "${CLR_BLD_BLU} -c, --clean Wipe the tree before building${CLR_RST}" + echo -e "${CLR_BLD_BLU} -i, --installclean Dirty build - Use 'installclean'${CLR_RST}" + echo -e "${CLR_BLD_BLU} -r, --repo-sync Sync before building${CLR_RST}" + echo -e "${CLR_BLD_BLU} -b, --build-id LineageOS unofficial build id${CLR_RST}" + echo -e "${CLR_BLD_BLU} -t, --build-type Specify build type${CLR_RST}" + echo -e "${CLR_BLD_BLU} -j, --jobs Specify jobs/threads to use${CLR_RST}" + echo -e "${CLR_BLD_BLU} -m, --module Build a specific module${CLR_RST}" + echo -e "${CLR_BLD_BLU} -g, --gms Build with GMS${CLR_RST}" + echo -e "${CLR_BLD_BLU} -s, --sign-keys Specify path to sign key mappings${CLR_RST}" + echo -e "${CLR_BLD_BLU} -p, --pwfile Specify path to sign key password file${CLR_RST}" + echo -e "${CLR_BLD_BLU} -z, --imgzip Generate fastboot flashable image zip from signed target_files${CLR_RST}" + exit 1 +} + +# Setup getopt. +long_opts="help,clean,installclean,repo-sync,build-id:,build-type:,jobs:,module:,gms,sign-keys:,pwfile:,imgzip" +getopt_cmd=$(getopt -o hcir:b:t:j:m:gs:p:z --long "$long_opts" \ + -n "$(basename "$0")" -- "$@") || + { + echo -e "${CLR_BLD_RED}\nError: Getopt failed. Extra args\n${CLR_RST}" + showHelpAndExit + exit 1 + } + +eval set -- "$getopt_cmd" + +while true; do + case "$1" in + -h | --help | h | help) showHelpAndExit ;; + -c | --clean | c | clean) FLAG_CLEAN_BUILD=y ;; + -i | --installclean | i | installclean) FLAG_INSTALLCLEAN_BUILD=y ;; + -r | --repo-sync | r | repo-sync) FLAG_SYNC=y ;; + -b | --build-id | b | build-id) + LINEAGE_BUILD_ID="$2" + shift + ;; + -t | --build-type | t | build-type) + LINEAGE_BUILD_VARIANT="$2" + shift + ;; + -j | --jobs | j | jobs) + JOBS="$2" + shift + ;; + -m | --module | m | module) + MODULES+=("$2") + echo "$2" + shift + ;; + -g | --gms | g | gms) FLAG_GMS="y" ;; + -s | --sign-keys | s | sign-keys) + KEY_MAPPINGS="$2" + shift + ;; + -p | --pwfile | p | pwfile) + PWFILE="$2" + shift + ;; + -z | --imgzip | img | imgzip) FLAG_IMG_ZIP=y ;; + --) + shift + break + ;; + esac + shift +done + +# Mandatory argument +if [ $# -eq 0 ]; then + echo -e "${CLR_BLD_RED}Error: No device specified${CLR_RST}" + showHelpAndExit +fi +export DEVICE="$1" +shift + +# Make sure we are running on 64-bit before carrying on with anything +ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/') +if [ "$ARCH" != "64" ]; then + echo -e "${CLR_BLD_RED}error: unsupported arch (expected: 64, found: $ARCH)${CLR_RST}" + exit 1 +fi + +# Set up paths +#cd $(dirname $0) +DIR_ROOT=$(pwd) + +# Make sure everything looks sane so far +if [ ! -d "$DIR_ROOT/vendor/lineage" ]; then + echo -e "${CLR_BLD_RED}error: insane root directory ($DIR_ROOT)${CLR_RST}" + exit 1 +fi + +# Setup LineageOS build id if specified +if [ "$LINEAGE_BUILD_ID" ]; then + LINEAGE_EXTRAVERSION="-$LINEAGE_BUILD_ID" + export TARGET_UNOFFICIAL_BUILD_ID=$LINEAGE_BUILD_ID +fi + +# Initializationizing! +echo -e "${CLR_BLD_BLU}Setting up the environment${CLR_RST}" +echo -e "" +# shellcheck source=/dev/null +. build/envsetup.sh +echo -e "" + +# Use the thread count specified by user +CMD="" +if [ "$JOBS" ]; then + CMD+="-j$JOBS" +fi + +# Pick the default thread count (allow overrides from the environment) +if [ -z "$JOBS" ]; then + if [ "$(uname -s)" = 'Darwin' ]; then + JOBS=$(sysctl -n machdep.cpu.core_count) + else + JOBS=$(grep + + +# Colors for script +BOLD="\033[1m" +GRN="\033[01;32m" +RED="\033[01;31m" +RST="\033[0m" +YLW="\033[01;33m" + + +# Alias for echo to handle escape codes like colors +function echo() { + command echo -e "$@" +} + + +# Prints a formatted header to point out what is being done to the user +function header() { + if [[ -n ${2} ]]; then + COLOR=${2} + else + COLOR=${RED} + fi + echo "${COLOR}" + # shellcheck disable=SC2034 + echo "====$(for i in $(seq ${#1}); do echo "=\c"; done)====" + echo "== ${1} ==" + # shellcheck disable=SC2034 + echo "====$(for i in $(seq ${#1}); do echo "=\c"; done)====" + echo "${RST}" +} + + +# Prints an error in bold red +function die() { + echo + echo "${RED}${1}${RST}" + [[ ${2} = "-h" ]] && ${0} -h + exit 1 +} + + +# Prints a statement in bold green +function success() { + echo + echo "${GRN}${1}${RST}" + [[ -z ${2} ]] && echo +} + + +# Prints a warning in bold yellow +function warn() { + echo + echo "${YLW}${1}${RST}" + [[ -z ${2} ]] && echo +} + + +# Parse the provided parameters +function parse_parameters() { + while [[ $# -ge 1 ]]; do + case ${1} in + # Use git cherry-pick + "-c"|"--cherry-pick") + UPDATE_METHOD=cherry-pick ;; + + # Only update the linux-stable remote + "-f"|"--fetch-only") + FETCH_REMOTE_ONLY=true ;; + + # Help menu + "-h"|"--help") + echo + echo "${BOLD}Command:${RST} ./$(basename "${0}") " + echo + echo "${BOLD}Script description:${RST} Merges/cherry-picks Linux upstream into a kernel tree" + echo + echo "${BOLD}Required parameters:${RST}" + echo " -c | --cherry-pick" + echo " -m | --merge" + echo " Call either git cherry-pick or git merge when updating from upstream" + echo + echo "${BOLD}Optional parameters:${RST}" + echo " -f | --fetch-only" + echo " Simply fetches the tags from linux-stable then exits" + echo + echo " -k | --kernel-folder" + echo " The device's kernel source's location; this can either be a full path or relative to where the script is being executed." + echo + echo " -l | --latest" + echo " Updates to the latest version available for the current kernel tree" + echo + echo " -p | --print-latest" + echo " Prints the latest version available for the current kernel tree then exits" + echo + echo " -v | --version" + echo " Updates to the specified version (e.g. -v 3.18.78)" + echo + echo "${BOLD}Defaults:${RST}" + echo " If -l or -v are not specified, ONE version is picked at a time (e.g. 3.18.31 to 3.18.32)" + echo + echo " If -k is not specified, the script assumes it is in the kernel source folder already" + echo + exit 1 ;; + + # Kernel source location + "-k"|"--kernel-folder") + shift + [[ $# -lt 1 ]] && die "Please specify a kernel source location!" + + KERNEL_FOLDER=${1} ;; + + # Update to the latest version upstream unconditionally + "-l"|"--latest") + UPDATE_MODE=1 ;; + + # Use git merge + "-m"|"--merge") + UPDATE_METHOD=merge ;; + + # Print the latest version from kernel.org + "-p"|"--print-latest") + PRINT_LATEST=true ;; + + # Update to the specified version + "-v"|"--version") + shift + [[ $# -lt 1 ]] && die "Please specify a version to update!" + + TARGET_VERSION=${1} ;; + + *) + die "Invalid parameter!" ;; + esac + + shift + done + + # If kernel source isn't specified, assume we're there + [[ -z ${KERNEL_FOLDER} ]] && KERNEL_FOLDER=$(pwd) + + # Sanity checks + [[ ! ${UPDATE_METHOD} ]] && die "Neither cherry-pick nor merge were specified, please supply one!" -h + [[ ! -d ${KERNEL_FOLDER} ]] && die "Invalid kernel source location specified! Folder does not exist" -h + [[ ! -f ${KERNEL_FOLDER}/Makefile ]] && die "Invalid kernel source location specified! No Makefile present" -h + + # Default update mode is one version at a time + [[ -z ${UPDATE_MODE} && -z ${TARGET_VERSION} ]] && UPDATE_MODE=0 +} + + +# Update the linux-stable remote (and add it if it doesn't exist) +function update_remote() { + header "Updating linux-stable" + + # Add remote if it isn't already present + cd "${KERNEL_FOLDER}" || die "Could not change into ${KERNEL_FOLDER}!" + + if git fetch --tags https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/; then + success "linux-stable updated successfully!" + else + die "linux-stable update failed!" + fi + + [[ ${FETCH_REMOTE_ONLY} ]] && exit 0 +} + + +# Generate versions +function generate_versions() { + header "Calculating versions" + + # Full kernel version + CURRENT_VERSION=$(make -s CC=gcc CROSS_COMPILE="" kernelversion) + # First two numbers (3.4 | 3.10 | 3.18 | 4.4) + CURRENT_MAJOR_VERSION=$(echo "${CURRENT_VERSION}" | cut -f 1,2 -d .) + # Last number + CURRENT_SUBLEVEL=$(echo "${CURRENT_VERSION}" | cut -d . -f 3) + + # Get latest update from upstream + LATEST_VERSION=$(git tag --sort=-taggerdate -l "v${CURRENT_MAJOR_VERSION}"* | head -n 1 | sed s/v//) + LATEST_SUBLEVEL=$(echo "${LATEST_VERSION}" | cut -d . -f 3) + + # Print the current/latest version and exit if requested + echo "${BOLD}Current kernel version:${RST} ${CURRENT_VERSION}" + echo + echo "${BOLD}Latest kernel version:${RST} ${LATEST_VERSION}" + if [[ ${PRINT_LATEST} ]]; then + echo + exit 0 + fi + + # UPDATE_MODES: + # 0. Update one version + # 1. Update to the latest version + case ${UPDATE_MODE} in + 0) + TARGET_SUBLEVEL=$((CURRENT_SUBLEVEL + 1)) + TARGET_VERSION=${CURRENT_MAJOR_VERSION}.${TARGET_SUBLEVEL} ;; + 1) + TARGET_VERSION=${LATEST_VERSION} ;; + esac + + # Make sure target version is between current version and latest version + TARGET_SUBLEVEL=$(echo "${TARGET_VERSION}" | cut -d . -f 3) + [[ ${TARGET_SUBLEVEL} -le ${CURRENT_SUBLEVEL} ]] && die "${TARGET_VERSION} is already present in ${CURRENT_VERSION}!" + [[ ${TARGET_SUBLEVEL} -gt ${LATEST_SUBLEVEL} ]] && die "${CURRENT_VERSION} is the latest!" + [[ ${CURRENT_SUBLEVEL} -eq 0 ]] && CURRENT_VERSION=${CURRENT_MAJOR_VERSION} + + RANGE=v${CURRENT_VERSION}..v${TARGET_VERSION} + + echo + echo "${BOLD}Target kernel version:${RST} ${TARGET_VERSION}" + echo +} + + +function update_to_target_version() { + case ${UPDATE_METHOD} in + "cherry-pick") + if ! git cherry-pick "${RANGE}"; then + die "Cherry-pick needs manual intervention! Resolve conflicts then run: + +git add . && git cherry-pick --continue" + else + header "${TARGET_VERSION} PICKED CLEANLY!" "${GRN}" + fi ;; + + "merge") + if ! GIT_MERGE_VERBOSITY=1 git merge --no-edit "v${TARGET_VERSION}"; then + die "Merge needs manual intervention! + +Resolve conflicts then run git commit!" + else + header "${TARGET_VERSION} MERGED CLEANLY!" "${GRN}" + fi ;; + esac +} + + +parse_parameters "$@" +update_remote +generate_versions +update_to_target_version diff --git a/.local/bin/makeinstancesufo b/.local/bin/makeinstancesufo new file mode 120000 index 0000000..5f515fe --- /dev/null +++ b/.local/bin/makeinstancesufo @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/makeinstancesufo \ No newline at end of file diff --git a/.local/bin/makeotf b/.local/bin/makeotf new file mode 120000 index 0000000..16486b2 --- /dev/null +++ b/.local/bin/makeotf @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/makeotf \ No newline at end of file diff --git a/.local/bin/makeotfexe b/.local/bin/makeotfexe new file mode 120000 index 0000000..22f4a55 --- /dev/null +++ b/.local/bin/makeotfexe @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/makeotfexe \ No newline at end of file diff --git a/.local/bin/merge-aosp-tag.sh b/.local/bin/merge-aosp-tag.sh new file mode 100755 index 0000000..edd4bc3 --- /dev/null +++ b/.local/bin/merge-aosp-tag.sh @@ -0,0 +1,95 @@ +#!/bin/bash +# +# AOSP tag merge script for ArrowOS +# Author: Adithya R (ghostrider-reborn) +# +# Usage (from source root): +# ./manifest/merge-tag.sh + +# Colors +red=$'\e[1;31m' +grn=$'\e[1;32m' +blu=$'\e[1;34m' +end=$'\e[0m' + +read -p "Tag to merge: " TAG +read -p "Remote name: " REMOTE +read -p "Remote branch: " BRANCH + +BLACKLIST="packages/apps/DeskClock" + +# verify tag +if ! wget -q --spider https://android.googlesource.com/platform/manifest/+/refs/tags/$TAG; then + echo "Invalid tag: $TAG!" + exit 1 +fi + +# fetch all existing repos +echo "${blu}Fetching list of repos to be merged...$end" +REPOS=$(repo forall -v -c "if [ \"\$REPO_REMOTE\" = \"$REMOTE\" ]; then echo \$REPO_PATH; fi") +echo $REPOS + +# save root dir +src_root=$(pwd) + +# initialize some files +for file in failed success unchanged; do + rm -f $file + touch $file +done + +# main +for repo in $REPOS; do echo; + if [[ $BLACKLIST =~ $repo ]]; then + echo -e "$repo is in blacklist, skipped" + continue + fi + + if ! grep -q -e "path=\"$repo\"" -e "name=\"$repo\"" manifest/default.xml; then + echo "${red}$repo not found in AOSP manifest, skipping..." + continue + fi + + # this is where the fun begins + echo "${blu}Merging ${repo}..." + name=$(grep "path=\"$repo\"" manifest/default.xml | sed -e 's/.*name="//' -e 's/".*//') + if [[ -z $name ]]; then + name=$(grep "name=\"$repo\"" manifest/default.xml | sed -e 's/.*name="//' -e 's/".*//') + fi + + git -C $repo checkout -q $BRANCH &> /dev/null || echo "${red}$repo checkout failed!" + + if ! git -C $repo fetch -q https://android.googlesource.com/$name $TAG &> /dev/null; then + echo "${red}$repo fetch failed!" + else + if ! git -C $repo merge FETCH_HEAD -q -m "Merge tag '$TAG' into $BRANCH" &> /dev/null; then + echo "$repo" >> $src_root/failed + echo "${red}$repo merge failed!" + else + if [[ $(git -C $repo rev-parse HEAD) != $(git -C $repo rev-parse $REMOTE/$BRANCH) ]] && [[ $(git -C $repo diff HEAD $REMOTE/$BRANCH) ]]; then + echo "$repo" >> $src_root/success + echo "${grn}$repo merged succesfully!" + else + echo "${end}$repo unchanged" + echo "$repo" >> $src_root/unchanged + git -C $repo reset --hard $REMOTE/$BRANCH &> /dev/null + fi + fi + fi +done + +if [ -s success ]; then + #echo -e "${grn}\nPushing succeeded repos:$end" + echo -e "${grn}\nMerge succeeded in:$end" + for repo in $(cat success); do + echo $repo + #git -C $repo push -q &> /dev/null || echo "${red}$repo push failed!" + done +fi + +if [ -s failed ]; then + echo -e "$red \nThese repos failed merging:$end" + cat failed +fi + +echo $end diff --git a/.local/bin/mergefonts b/.local/bin/mergefonts new file mode 120000 index 0000000..09b7162 --- /dev/null +++ b/.local/bin/mergefonts @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/mergefonts \ No newline at end of file diff --git a/.local/bin/metroid b/.local/bin/metroid new file mode 100755 index 0000000..8995836 --- /dev/null +++ b/.local/bin/metroid @@ -0,0 +1,114 @@ +#!/bin/sh +# +# metroid: a metroid ascii banner generator +# MMXVI xero (http://xero.nu) + +usage() { +printf "usage: `basename $0` \n\ + [-m --mini mini] \n\ + [-s --super super] \n\ + [-t --text text] \n\ + [-n --normal normal] \n\ + [-h --help help]\n" +} + +text() { + printf "\n .___.\n / @ \ \n \ @ @ /\n {'^'}\n\n" +} + +mini() { +cat << METROID + + ▄▄ ▀▀▀▀▀▀▀▀▀▀▀ ▄▄ + ▄ ▀▀▀▀          ▀▀▀ ▄ + ▄ ▀▀  ▀▀             ▀▀ ▄ +  ▀▀  ▀                  ▀▀  + ▄ ▀▀ ▀ ▀                ▀▀▀▀▀ ▄ + ▄     ▀                         ▄ +               ▀▀▀▀▀    ▀▀▀        +                             ▀▀▀  ▄ +  ▀        ▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀  ▀      +   ▀▀▀         ▀   ▀      ▀▀        +  ▀▀▀▀    ▀▀   ▀   ▀   ▀▀    ▀▀▀▀   +    ▀▀▀▀ ▀▀▀▀▀▀     ▀▀▀▀▀▀ ▀▀▀▀     +▀▀▀▀  ▀▀▀▀  ▀▀▀     ▀▀▀  ▀▀▀▀  ▀▀▀▀ + ▀▀             ▀▀▀             ▀▀ +  ▀▀      ▀  ▀   ▀  ▀      ▀▀  + ▀ ▀        ▀▀▀▀▀        ▀ ▀ + ▀▀▀ ▀ ▀   ▀ ▀ ▀▀▀ + +METROID +} + +super() { +cat << METROID + + ▄▄▄▀▀▀▀▀▀▀▀▄▄▄ + ▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄▄ + ▄▀▀▀▀▀▀▀▀▀      ▀▀▀▀▀▀▀▀▀▄ + ▀▀▀▀ ▀▀▀▀    ▀▀    ▀▀▀▀ ▀▀▀▀ + ▀▀▀▀▀  ▀▀▀▀▀ ▀  ▀ ▀▀▀▀▀  ▀▀▀▀▀ + ▀ ▀▀▀▀▀ ▀▀▀ ▀▀▀▀▀▀ ▀▀▀ ▀▀▀▀▀ ▀  +▀▀▀▀▀▀  ▀▀▀▀ ▀▀▀▀▀▀ ▀▀▀▀  ▀▀▀▀▀▀ +▀  ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀  ▀ +▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀ + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ +  ▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀  + ▀▀▀▀▀▀  ▀▀▀ ▀▀▀  ▀▀▀▀▀▀ + ▀▀▀  ▀▀   ▀▀  ▀▀▀ + ▀▀▀▀ ▀▀▀▀ + ▀ ▀ ▀ ▀ + +METROID +} + +normal() { +cat << METROID + +  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  +  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  +  ▀▀▀▀▀▀                ▀▀▀▀▀▀  +  ▀▀▀▀    ▀▀                  ▀▀▀▀  +  ▀▀▀▀  ▀▀  ▀▀▀▀▀▀▀▀▀▀            ▀▀▀▀  +      ▀▀      ▀▀▀▀▀▀▀▀▀▀          ▀▀▀▀▀▀  +  ▀▀▀▀▀▀  ▀▀                      ▀▀▀▀      +        ▀▀          ▀▀▀▀▀▀              ▀▀▀▀  +  ▀▀▀▀  ▀▀          ▀▀▀▀▀▀▀▀                    +                    ▀▀    ▀▀      ▀▀▀▀          +                    ▀▀    ▀▀            ▀▀▀▀▀▀▀▀  + ▀▀▀▀    ▀▀▀▀  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀      +     ▀▀▀▀▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀▀▀▀▀▀▀  ▀▀▀▀  ▀▀          +     ▀▀▀▀            ▀▀    ▀▀                      +   ▀▀▀▀▀▀    ▀▀▀▀    ▀▀    ▀▀    ▀▀▀▀    ▀▀▀▀▀▀    +   ▀▀▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀▀▀    ▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀▀▀▀▀    +     ▀▀▀▀▀▀  ▀▀▀▀▀▀▀▀        ▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀      + ▀▀▀▀    ▀▀▀▀▀▀  ▀▀▀▀        ▀▀▀▀  ▀▀▀▀▀▀    ▀▀▀▀  +  ▀▀▀▀        ▀▀▀▀  ▀▀▀▀▀▀▀▀  ▀▀▀▀        ▀▀▀▀  +      ▀▀ ▀▀ ▀▀  ▀▀        ▀▀  ▀▀ ▀▀ ▀▀      +  ▀▀▀▀       ▀▀  ▀▀    ▀▀  ▀▀       ▀▀▀▀  +  ▀▀▀▀     ▀▀   ▀▀▀▀   ▀▀     ▀▀▀▀  +  ▀▀   ▀▀▀▀   ▀▀▀▀   ▀▀  +  ▀▀   ▀▀  + +METROID +} + +case "$1" in + *-m|--mini|mini*) + mini + ;; + *-s|--super|super*) + super + ;; + *-n|--normal|normal) + normal + ;; + *-t|--text|text) + text + ;; + *) + text + usage + ;; +esac diff --git a/.local/bin/miniterm.py b/.local/bin/miniterm.py new file mode 100644 index 0000000..cf8adfd --- /dev/null +++ b/.local/bin/miniterm.py @@ -0,0 +1,976 @@ +#!/usr/bin/python3 +# +# Very simple serial terminal +# +# This file is part of pySerial. https://github.com/pyserial/pyserial +# (C)2002-2015 Chris Liechti +# +# SPDX-License-Identifier: BSD-3-Clause + +import codecs +import os +import sys +import threading + +import serial +from serial.tools.list_ports import comports +from serial.tools import hexlify_codec + +# pylint: disable=wrong-import-order,wrong-import-position + +codecs.register(lambda c: hexlify_codec.getregentry() if c == 'hexlify' else None) + +try: + raw_input +except NameError: + # pylint: disable=redefined-builtin,invalid-name + raw_input = input # in python3 it's "raw" + unichr = chr + + +def key_description(character): + """generate a readable description for a key""" + ascii_code = ord(character) + if ascii_code < 32: + return 'Ctrl+{:c}'.format(ord('@') + ascii_code) + else: + return repr(character) + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +class ConsoleBase(object): + """OS abstraction for console (input/output codec, no echo)""" + + def __init__(self): + if sys.version_info >= (3, 0): + self.byte_output = sys.stdout.buffer + else: + self.byte_output = sys.stdout + self.output = sys.stdout + + def setup(self): + """Set console to read single characters, no echo""" + + def cleanup(self): + """Restore default console settings""" + + def getkey(self): + """Read a single key from the console""" + return None + + def write_bytes(self, byte_string): + """Write bytes (already encoded)""" + self.byte_output.write(byte_string) + self.byte_output.flush() + + def write(self, text): + """Write string""" + self.output.write(text) + self.output.flush() + + def cancel(self): + """Cancel getkey operation""" + + # - - - - - - - - - - - - - - - - - - - - - - - - + # context manager: + # switch terminal temporary to normal mode (e.g. to get user input) + + def __enter__(self): + self.cleanup() + return self + + def __exit__(self, *args, **kwargs): + self.setup() + + +if os.name == 'nt': # noqa + import msvcrt + import ctypes + + class Out(object): + """file-like wrapper that uses os.write""" + + def __init__(self, fd): + self.fd = fd + + def flush(self): + pass + + def write(self, s): + os.write(self.fd, s) + + class Console(ConsoleBase): + def __init__(self): + super(Console, self).__init__() + self._saved_ocp = ctypes.windll.kernel32.GetConsoleOutputCP() + self._saved_icp = ctypes.windll.kernel32.GetConsoleCP() + ctypes.windll.kernel32.SetConsoleOutputCP(65001) + ctypes.windll.kernel32.SetConsoleCP(65001) + self.output = codecs.getwriter('UTF-8')(Out(sys.stdout.fileno()), 'replace') + # the change of the code page is not propagated to Python, manually fix it + sys.stderr = codecs.getwriter('UTF-8')(Out(sys.stderr.fileno()), 'replace') + sys.stdout = self.output + self.output.encoding = 'UTF-8' # needed for input + + def __del__(self): + ctypes.windll.kernel32.SetConsoleOutputCP(self._saved_ocp) + ctypes.windll.kernel32.SetConsoleCP(self._saved_icp) + + def getkey(self): + while True: + z = msvcrt.getwch() + if z == unichr(13): + return unichr(10) + elif z in (unichr(0), unichr(0x0e)): # functions keys, ignore + msvcrt.getwch() + else: + return z + + def cancel(self): + # CancelIo, CancelSynchronousIo do not seem to work when using + # getwch, so instead, send a key to the window with the console + hwnd = ctypes.windll.kernel32.GetConsoleWindow() + ctypes.windll.user32.PostMessageA(hwnd, 0x100, 0x0d, 0) + +elif os.name == 'posix': + import atexit + import termios + import fcntl + + class Console(ConsoleBase): + def __init__(self): + super(Console, self).__init__() + self.fd = sys.stdin.fileno() + self.old = termios.tcgetattr(self.fd) + atexit.register(self.cleanup) + if sys.version_info < (3, 0): + self.enc_stdin = codecs.getreader(sys.stdin.encoding)(sys.stdin) + else: + self.enc_stdin = sys.stdin + + def setup(self): + new = termios.tcgetattr(self.fd) + new[3] = new[3] & ~termios.ICANON & ~termios.ECHO & ~termios.ISIG + new[6][termios.VMIN] = 1 + new[6][termios.VTIME] = 0 + termios.tcsetattr(self.fd, termios.TCSANOW, new) + + def getkey(self): + c = self.enc_stdin.read(1) + if c == unichr(0x7f): + c = unichr(8) # map the BS key (which yields DEL) to backspace + return c + + def cancel(self): + fcntl.ioctl(self.fd, termios.TIOCSTI, b'\0') + + def cleanup(self): + termios.tcsetattr(self.fd, termios.TCSAFLUSH, self.old) + +else: + raise NotImplementedError( + 'Sorry no implementation for your platform ({}) available.'.format(sys.platform)) + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +class Transform(object): + """do-nothing: forward all data unchanged""" + def rx(self, text): + """text received from serial port""" + return text + + def tx(self, text): + """text to be sent to serial port""" + return text + + def echo(self, text): + """text to be sent but displayed on console""" + return text + + +class CRLF(Transform): + """ENTER sends CR+LF""" + + def tx(self, text): + return text.replace('\n', '\r\n') + + +class CR(Transform): + """ENTER sends CR""" + + def rx(self, text): + return text.replace('\r', '\n') + + def tx(self, text): + return text.replace('\n', '\r') + + +class LF(Transform): + """ENTER sends LF""" + + +class NoTerminal(Transform): + """remove typical terminal control codes from input""" + + REPLACEMENT_MAP = dict((x, 0x2400 + x) for x in range(32) if unichr(x) not in '\r\n\b\t') + REPLACEMENT_MAP.update( + { + 0x7F: 0x2421, # DEL + 0x9B: 0x2425, # CSI + }) + + def rx(self, text): + return text.translate(self.REPLACEMENT_MAP) + + echo = rx + + +class NoControls(NoTerminal): + """Remove all control codes, incl. CR+LF""" + + REPLACEMENT_MAP = dict((x, 0x2400 + x) for x in range(32)) + REPLACEMENT_MAP.update( + { + 0x20: 0x2423, # visual space + 0x7F: 0x2421, # DEL + 0x9B: 0x2425, # CSI + }) + + +class Printable(Transform): + """Show decimal code for all non-ASCII characters and replace most control codes""" + + def rx(self, text): + r = [] + for c in text: + if ' ' <= c < '\x7f' or c in '\r\n\b\t': + r.append(c) + elif c < ' ': + r.append(unichr(0x2400 + ord(c))) + else: + r.extend(unichr(0x2080 + ord(d) - 48) for d in '{:d}'.format(ord(c))) + r.append(' ') + return ''.join(r) + + echo = rx + + +class Colorize(Transform): + """Apply different colors for received and echo""" + + def __init__(self): + # XXX make it configurable, use colorama? + self.input_color = '\x1b[37m' + self.echo_color = '\x1b[31m' + + def rx(self, text): + return self.input_color + text + + def echo(self, text): + return self.echo_color + text + + +class DebugIO(Transform): + """Print what is sent and received""" + + def rx(self, text): + sys.stderr.write(' [RX:{}] '.format(repr(text))) + sys.stderr.flush() + return text + + def tx(self, text): + sys.stderr.write(' [TX:{}] '.format(repr(text))) + sys.stderr.flush() + return text + + +# other ideas: +# - add date/time for each newline +# - insert newline after: a) timeout b) packet end character + +EOL_TRANSFORMATIONS = { + 'crlf': CRLF, + 'cr': CR, + 'lf': LF, +} + +TRANSFORMATIONS = { + 'direct': Transform, # no transformation + 'default': NoTerminal, + 'nocontrol': NoControls, + 'printable': Printable, + 'colorize': Colorize, + 'debug': DebugIO, +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +def ask_for_port(): + """\ + Show a list of ports and ask the user for a choice. To make selection + easier on systems with long device names, also allow the input of an + index. + """ + sys.stderr.write('\n--- Available ports:\n') + ports = [] + for n, (port, desc, hwid) in enumerate(sorted(comports()), 1): + sys.stderr.write('--- {:2}: {:20} {!r}\n'.format(n, port, desc)) + ports.append(port) + while True: + port = raw_input('--- Enter port index or full name: ') + try: + index = int(port) - 1 + if not 0 <= index < len(ports): + sys.stderr.write('--- Invalid index!\n') + continue + except ValueError: + pass + else: + port = ports[index] + return port + + +class Miniterm(object): + """\ + Terminal application. Copy data from serial port to console and vice versa. + Handle special keys from the console to show menu etc. + """ + + def __init__(self, serial_instance, echo=False, eol='crlf', filters=()): + self.console = Console() + self.serial = serial_instance + self.echo = echo + self.raw = False + self.input_encoding = 'UTF-8' + self.output_encoding = 'UTF-8' + self.eol = eol + self.filters = filters + self.update_transformations() + self.exit_character = 0x1d # GS/CTRL+] + self.menu_character = 0x14 # Menu: CTRL+T + self.alive = None + self._reader_alive = None + self.receiver_thread = None + self.rx_decoder = None + self.tx_decoder = None + + def _start_reader(self): + """Start reader thread""" + self._reader_alive = True + # start serial->console thread + self.receiver_thread = threading.Thread(target=self.reader, name='rx') + self.receiver_thread.daemon = True + self.receiver_thread.start() + + def _stop_reader(self): + """Stop reader thread only, wait for clean exit of thread""" + self._reader_alive = False + if hasattr(self.serial, 'cancel_read'): + self.serial.cancel_read() + self.receiver_thread.join() + + def start(self): + """start worker threads""" + self.alive = True + self._start_reader() + # enter console->serial loop + self.transmitter_thread = threading.Thread(target=self.writer, name='tx') + self.transmitter_thread.daemon = True + self.transmitter_thread.start() + self.console.setup() + + def stop(self): + """set flag to stop worker threads""" + self.alive = False + + def join(self, transmit_only=False): + """wait for worker threads to terminate""" + self.transmitter_thread.join() + if not transmit_only: + if hasattr(self.serial, 'cancel_read'): + self.serial.cancel_read() + self.receiver_thread.join() + + def close(self): + self.serial.close() + + def update_transformations(self): + """take list of transformation classes and instantiate them for rx and tx""" + transformations = [EOL_TRANSFORMATIONS[self.eol]] + [TRANSFORMATIONS[f] + for f in self.filters] + self.tx_transformations = [t() for t in transformations] + self.rx_transformations = list(reversed(self.tx_transformations)) + + def set_rx_encoding(self, encoding, errors='replace'): + """set encoding for received data""" + self.input_encoding = encoding + self.rx_decoder = codecs.getincrementaldecoder(encoding)(errors) + + def set_tx_encoding(self, encoding, errors='replace'): + """set encoding for transmitted data""" + self.output_encoding = encoding + self.tx_encoder = codecs.getincrementalencoder(encoding)(errors) + + def dump_port_settings(self): + """Write current settings to sys.stderr""" + sys.stderr.write("\n--- Settings: {p.name} {p.baudrate},{p.bytesize},{p.parity},{p.stopbits}\n".format( + p=self.serial)) + sys.stderr.write('--- RTS: {:8} DTR: {:8} BREAK: {:8}\n'.format( + ('active' if self.serial.rts else 'inactive'), + ('active' if self.serial.dtr else 'inactive'), + ('active' if self.serial.break_condition else 'inactive'))) + try: + sys.stderr.write('--- CTS: {:8} DSR: {:8} RI: {:8} CD: {:8}\n'.format( + ('active' if self.serial.cts else 'inactive'), + ('active' if self.serial.dsr else 'inactive'), + ('active' if self.serial.ri else 'inactive'), + ('active' if self.serial.cd else 'inactive'))) + except serial.SerialException: + # on RFC 2217 ports, it can happen if no modem state notification was + # yet received. ignore this error. + pass + sys.stderr.write('--- software flow control: {}\n'.format('active' if self.serial.xonxoff else 'inactive')) + sys.stderr.write('--- hardware flow control: {}\n'.format('active' if self.serial.rtscts else 'inactive')) + sys.stderr.write('--- serial input encoding: {}\n'.format(self.input_encoding)) + sys.stderr.write('--- serial output encoding: {}\n'.format(self.output_encoding)) + sys.stderr.write('--- EOL: {}\n'.format(self.eol.upper())) + sys.stderr.write('--- filters: {}\n'.format(' '.join(self.filters))) + + def reader(self): + """loop and copy serial->console""" + try: + while self.alive and self._reader_alive: + # read all that is there or wait for one byte + data = self.serial.read(self.serial.in_waiting or 1) + if data: + if self.raw: + self.console.write_bytes(data) + else: + text = self.rx_decoder.decode(data) + for transformation in self.rx_transformations: + text = transformation.rx(text) + self.console.write(text) + except serial.SerialException: + self.alive = False + self.console.cancel() + raise # XXX handle instead of re-raise? + + def writer(self): + """\ + Loop and copy console->serial until self.exit_character character is + found. When self.menu_character is found, interpret the next key + locally. + """ + menu_active = False + try: + while self.alive: + try: + c = self.console.getkey() + except KeyboardInterrupt: + c = '\x03' + if not self.alive: + break + if menu_active: + self.handle_menu_key(c) + menu_active = False + elif c == self.menu_character: + menu_active = True # next char will be for menu + elif c == self.exit_character: + self.stop() # exit app + break + else: + #~ if self.raw: + text = c + for transformation in self.tx_transformations: + text = transformation.tx(text) + self.serial.write(self.tx_encoder.encode(text)) + if self.echo: + echo_text = c + for transformation in self.tx_transformations: + echo_text = transformation.echo(echo_text) + self.console.write(echo_text) + except: + self.alive = False + raise + + def handle_menu_key(self, c): + """Implement a simple menu / settings""" + if c == self.menu_character or c == self.exit_character: + # Menu/exit character again -> send itself + self.serial.write(self.tx_encoder.encode(c)) + if self.echo: + self.console.write(c) + elif c == '\x15': # CTRL+U -> upload file + self.upload_file() + elif c in '\x08hH?': # CTRL+H, h, H, ? -> Show help + sys.stderr.write(self.get_help_text()) + elif c == '\x12': # CTRL+R -> Toggle RTS + self.serial.rts = not self.serial.rts + sys.stderr.write('--- RTS {} ---\n'.format('active' if self.serial.rts else 'inactive')) + elif c == '\x04': # CTRL+D -> Toggle DTR + self.serial.dtr = not self.serial.dtr + sys.stderr.write('--- DTR {} ---\n'.format('active' if self.serial.dtr else 'inactive')) + elif c == '\x02': # CTRL+B -> toggle BREAK condition + self.serial.break_condition = not self.serial.break_condition + sys.stderr.write('--- BREAK {} ---\n'.format('active' if self.serial.break_condition else 'inactive')) + elif c == '\x05': # CTRL+E -> toggle local echo + self.echo = not self.echo + sys.stderr.write('--- local echo {} ---\n'.format('active' if self.echo else 'inactive')) + elif c == '\x06': # CTRL+F -> edit filters + self.change_filter() + elif c == '\x0c': # CTRL+L -> EOL mode + modes = list(EOL_TRANSFORMATIONS) # keys + eol = modes.index(self.eol) + 1 + if eol >= len(modes): + eol = 0 + self.eol = modes[eol] + sys.stderr.write('--- EOL: {} ---\n'.format(self.eol.upper())) + self.update_transformations() + elif c == '\x01': # CTRL+A -> set encoding + self.change_encoding() + elif c == '\x09': # CTRL+I -> info + self.dump_port_settings() + #~ elif c == '\x01': # CTRL+A -> cycle escape mode + #~ elif c == '\x0c': # CTRL+L -> cycle linefeed mode + elif c in 'pP': # P -> change port + self.change_port() + elif c in 'sS': # S -> suspend / open port temporarily + self.suspend_port() + elif c in 'bB': # B -> change baudrate + self.change_baudrate() + elif c == '8': # 8 -> change to 8 bits + self.serial.bytesize = serial.EIGHTBITS + self.dump_port_settings() + elif c == '7': # 7 -> change to 8 bits + self.serial.bytesize = serial.SEVENBITS + self.dump_port_settings() + elif c in 'eE': # E -> change to even parity + self.serial.parity = serial.PARITY_EVEN + self.dump_port_settings() + elif c in 'oO': # O -> change to odd parity + self.serial.parity = serial.PARITY_ODD + self.dump_port_settings() + elif c in 'mM': # M -> change to mark parity + self.serial.parity = serial.PARITY_MARK + self.dump_port_settings() + elif c in 'sS': # S -> change to space parity + self.serial.parity = serial.PARITY_SPACE + self.dump_port_settings() + elif c in 'nN': # N -> change to no parity + self.serial.parity = serial.PARITY_NONE + self.dump_port_settings() + elif c == '1': # 1 -> change to 1 stop bits + self.serial.stopbits = serial.STOPBITS_ONE + self.dump_port_settings() + elif c == '2': # 2 -> change to 2 stop bits + self.serial.stopbits = serial.STOPBITS_TWO + self.dump_port_settings() + elif c == '3': # 3 -> change to 1.5 stop bits + self.serial.stopbits = serial.STOPBITS_ONE_POINT_FIVE + self.dump_port_settings() + elif c in 'xX': # X -> change software flow control + self.serial.xonxoff = (c == 'X') + self.dump_port_settings() + elif c in 'rR': # R -> change hardware flow control + self.serial.rtscts = (c == 'R') + self.dump_port_settings() + else: + sys.stderr.write('--- unknown menu character {} --\n'.format(key_description(c))) + + def upload_file(self): + """Ask user for filenname and send its contents""" + sys.stderr.write('\n--- File to upload: ') + sys.stderr.flush() + with self.console: + filename = sys.stdin.readline().rstrip('\r\n') + if filename: + try: + with open(filename, 'rb') as f: + sys.stderr.write('--- Sending file {} ---\n'.format(filename)) + while True: + block = f.read(1024) + if not block: + break + self.serial.write(block) + # Wait for output buffer to drain. + self.serial.flush() + sys.stderr.write('.') # Progress indicator. + sys.stderr.write('\n--- File {} sent ---\n'.format(filename)) + except IOError as e: + sys.stderr.write('--- ERROR opening file {}: {} ---\n'.format(filename, e)) + + def change_filter(self): + """change the i/o transformations""" + sys.stderr.write('\n--- Available Filters:\n') + sys.stderr.write('\n'.join( + '--- {:<10} = {.__doc__}'.format(k, v) + for k, v in sorted(TRANSFORMATIONS.items()))) + sys.stderr.write('\n--- Enter new filter name(s) [{}]: '.format(' '.join(self.filters))) + with self.console: + new_filters = sys.stdin.readline().lower().split() + if new_filters: + for f in new_filters: + if f not in TRANSFORMATIONS: + sys.stderr.write('--- unknown filter: {}\n'.format(repr(f))) + break + else: + self.filters = new_filters + self.update_transformations() + sys.stderr.write('--- filters: {}\n'.format(' '.join(self.filters))) + + def change_encoding(self): + """change encoding on the serial port""" + sys.stderr.write('\n--- Enter new encoding name [{}]: '.format(self.input_encoding)) + with self.console: + new_encoding = sys.stdin.readline().strip() + if new_encoding: + try: + codecs.lookup(new_encoding) + except LookupError: + sys.stderr.write('--- invalid encoding name: {}\n'.format(new_encoding)) + else: + self.set_rx_encoding(new_encoding) + self.set_tx_encoding(new_encoding) + sys.stderr.write('--- serial input encoding: {}\n'.format(self.input_encoding)) + sys.stderr.write('--- serial output encoding: {}\n'.format(self.output_encoding)) + + def change_baudrate(self): + """change the baudrate""" + sys.stderr.write('\n--- Baudrate: ') + sys.stderr.flush() + with self.console: + backup = self.serial.baudrate + try: + self.serial.baudrate = int(sys.stdin.readline().strip()) + except ValueError as e: + sys.stderr.write('--- ERROR setting baudrate: {} ---\n'.format(e)) + self.serial.baudrate = backup + else: + self.dump_port_settings() + + def change_port(self): + """Have a conversation with the user to change the serial port""" + with self.console: + try: + port = ask_for_port() + except KeyboardInterrupt: + port = None + if port and port != self.serial.port: + # reader thread needs to be shut down + self._stop_reader() + # save settings + settings = self.serial.getSettingsDict() + try: + new_serial = serial.serial_for_url(port, do_not_open=True) + # restore settings and open + new_serial.applySettingsDict(settings) + new_serial.rts = self.serial.rts + new_serial.dtr = self.serial.dtr + new_serial.open() + new_serial.break_condition = self.serial.break_condition + except Exception as e: + sys.stderr.write('--- ERROR opening new port: {} ---\n'.format(e)) + new_serial.close() + else: + self.serial.close() + self.serial = new_serial + sys.stderr.write('--- Port changed to: {} ---\n'.format(self.serial.port)) + # and restart the reader thread + self._start_reader() + + def suspend_port(self): + """\ + open port temporarily, allow reconnect, exit and port change to get + out of the loop + """ + # reader thread needs to be shut down + self._stop_reader() + self.serial.close() + sys.stderr.write('\n--- Port closed: {} ---\n'.format(self.serial.port)) + do_change_port = False + while not self.serial.is_open: + sys.stderr.write('--- Quit: {exit} | p: port change | any other key to reconnect ---\n'.format( + exit=key_description(self.exit_character))) + k = self.console.getkey() + if k == self.exit_character: + self.stop() # exit app + break + elif k in 'pP': + do_change_port = True + break + try: + self.serial.open() + except Exception as e: + sys.stderr.write('--- ERROR opening port: {} ---\n'.format(e)) + if do_change_port: + self.change_port() + else: + # and restart the reader thread + self._start_reader() + sys.stderr.write('--- Port opened: {} ---\n'.format(self.serial.port)) + + def get_help_text(self): + """return the help text""" + # help text, starts with blank line! + return """ +--- pySerial ({version}) - miniterm - help +--- +--- {exit:8} Exit program +--- {menu:8} Menu escape key, followed by: +--- Menu keys: +--- {menu:7} Send the menu character itself to remote +--- {exit:7} Send the exit character itself to remote +--- {info:7} Show info +--- {upload:7} Upload file (prompt will be shown) +--- {repr:7} encoding +--- {filter:7} edit filters +--- Toggles: +--- {rts:7} RTS {dtr:7} DTR {brk:7} BREAK +--- {echo:7} echo {eol:7} EOL +--- +--- Port settings ({menu} followed by the following): +--- p change port +--- 7 8 set data bits +--- N E O S M change parity (None, Even, Odd, Space, Mark) +--- 1 2 3 set stop bits (1, 2, 1.5) +--- b change baud rate +--- x X disable/enable software flow control +--- r R disable/enable hardware flow control +""".format(version=getattr(serial, 'VERSION', 'unknown version'), + exit=key_description(self.exit_character), + menu=key_description(self.menu_character), + rts=key_description('\x12'), + dtr=key_description('\x04'), + brk=key_description('\x02'), + echo=key_description('\x05'), + info=key_description('\x09'), + upload=key_description('\x15'), + repr=key_description('\x01'), + filter=key_description('\x06'), + eol=key_description('\x0c')) + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# default args can be used to override when calling main() from an other script +# e.g to create a miniterm-my-device.py +def main(default_port=None, default_baudrate=9600, default_rts=None, default_dtr=None): + """Command line tool, entry point""" + + import argparse + + parser = argparse.ArgumentParser( + description="Miniterm - A simple terminal program for the serial port.") + + parser.add_argument( + "port", + nargs='?', + help="serial port name ('-' to show port list)", + default=default_port) + + parser.add_argument( + "baudrate", + nargs='?', + type=int, + help="set baud rate, default: %(default)s", + default=default_baudrate) + + group = parser.add_argument_group("port settings") + + group.add_argument( + "--parity", + choices=['N', 'E', 'O', 'S', 'M'], + type=lambda c: c.upper(), + help="set parity, one of {N E O S M}, default: N", + default='N') + + group.add_argument( + "--rtscts", + action="store_true", + help="enable RTS/CTS flow control (default off)", + default=False) + + group.add_argument( + "--xonxoff", + action="store_true", + help="enable software flow control (default off)", + default=False) + + group.add_argument( + "--rts", + type=int, + help="set initial RTS line state (possible values: 0, 1)", + default=default_rts) + + group.add_argument( + "--dtr", + type=int, + help="set initial DTR line state (possible values: 0, 1)", + default=default_dtr) + + group.add_argument( + "--ask", + action="store_true", + help="ask again for port when open fails", + default=False) + + group = parser.add_argument_group("data handling") + + group.add_argument( + "-e", "--echo", + action="store_true", + help="enable local echo (default off)", + default=False) + + group.add_argument( + "--encoding", + dest="serial_port_encoding", + metavar="CODEC", + help="set the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default: %(default)s", + default='UTF-8') + + group.add_argument( + "-f", "--filter", + action="append", + metavar="NAME", + help="add text transformation", + default=[]) + + group.add_argument( + "--eol", + choices=['CR', 'LF', 'CRLF'], + type=lambda c: c.upper(), + help="end of line mode", + default='CRLF') + + group.add_argument( + "--raw", + action="store_true", + help="Do no apply any encodings/transformations", + default=False) + + group = parser.add_argument_group("hotkeys") + + group.add_argument( + "--exit-char", + type=int, + metavar='NUM', + help="Unicode of special character that is used to exit the application, default: %(default)s", + default=0x1d) # GS/CTRL+] + + group.add_argument( + "--menu-char", + type=int, + metavar='NUM', + help="Unicode code of special character that is used to control miniterm (menu), default: %(default)s", + default=0x14) # Menu: CTRL+T + + group = parser.add_argument_group("diagnostics") + + group.add_argument( + "-q", "--quiet", + action="store_true", + help="suppress non-error messages", + default=False) + + group.add_argument( + "--develop", + action="store_true", + help="show Python traceback on error", + default=False) + + args = parser.parse_args() + + if args.menu_char == args.exit_char: + parser.error('--exit-char can not be the same as --menu-char') + + if args.filter: + if 'help' in args.filter: + sys.stderr.write('Available filters:\n') + sys.stderr.write('\n'.join( + '{:<10} = {.__doc__}'.format(k, v) + for k, v in sorted(TRANSFORMATIONS.items()))) + sys.stderr.write('\n') + sys.exit(1) + filters = args.filter + else: + filters = ['default'] + + while True: + # no port given on command line -> ask user now + if args.port is None or args.port == '-': + try: + args.port = ask_for_port() + except KeyboardInterrupt: + sys.stderr.write('\n') + parser.error('user aborted and port is not given') + else: + if not args.port: + parser.error('port is not given') + try: + serial_instance = serial.serial_for_url( + args.port, + args.baudrate, + parity=args.parity, + rtscts=args.rtscts, + xonxoff=args.xonxoff, + do_not_open=True) + + if not hasattr(serial_instance, 'cancel_read'): + # enable timeout for alive flag polling if cancel_read is not available + serial_instance.timeout = 1 + + if args.dtr is not None: + if not args.quiet: + sys.stderr.write('--- forcing DTR {}\n'.format('active' if args.dtr else 'inactive')) + serial_instance.dtr = args.dtr + if args.rts is not None: + if not args.quiet: + sys.stderr.write('--- forcing RTS {}\n'.format('active' if args.rts else 'inactive')) + serial_instance.rts = args.rts + + serial_instance.open() + except serial.SerialException as e: + sys.stderr.write('could not open port {}: {}\n'.format(repr(args.port), e)) + if args.develop: + raise + if not args.ask: + sys.exit(1) + else: + args.port = '-' + else: + break + + miniterm = Miniterm( + serial_instance, + echo=args.echo, + eol=args.eol.lower(), + filters=filters) + miniterm.exit_character = unichr(args.exit_char) + miniterm.menu_character = unichr(args.menu_char) + miniterm.raw = args.raw + miniterm.set_rx_encoding(args.serial_port_encoding) + miniterm.set_tx_encoding(args.serial_port_encoding) + + if not args.quiet: + sys.stderr.write('--- Miniterm on {p.name} {p.baudrate},{p.bytesize},{p.parity},{p.stopbits} ---\n'.format( + p=miniterm.serial)) + sys.stderr.write('--- Quit: {} | Menu: {} | Help: {} followed by {} ---\n'.format( + key_description(miniterm.exit_character), + key_description(miniterm.menu_character), + key_description(miniterm.menu_character), + key_description('\x08'))) + + miniterm.start() + try: + miniterm.join(True) + except KeyboardInterrupt: + pass + if not args.quiet: + sys.stderr.write("\n--- exit ---\n") + miniterm.join() + miniterm.close() + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +if __name__ == '__main__': + main() diff --git a/.local/bin/miniterm.pyc b/.local/bin/miniterm.pyc new file mode 100644 index 0000000..07aff4e Binary files /dev/null and b/.local/bin/miniterm.pyc differ diff --git a/.local/bin/mk-android-certs b/.local/bin/mk-android-certs new file mode 100755 index 0000000..7a8ae86 --- /dev/null +++ b/.local/bin/mk-android-certs @@ -0,0 +1,8 @@ +subject='/C=US/ST=Texas/L=Fort Worth/O=Android/OU=Android/CN=Android/emailAddress=me@xstefen.dev' +mkdir ~/.android-certs +for cert in bluetooth cyngn-app media networkstack platform releasekey sdk_sandbox shared testcert testkey verity; do \ + ./development/tools/make_key ~/.android-certs/$cert "$subject"; \ +done +for apex in com.android.adbd com.android.adservices com.android.adservices.api com.android.appsearch com.android.art com.android.bluetooth com.android.btservices com.android.cellbroadcast com.android.compos com.android.connectivity.resources com.android.conscrypt com.android.extservices com.android.hotspot2.osulogin com.android.i18n com.android.ipsec com.android.media com.android.media.swcodec com.android.mediaprovider com.android.nearby.halfsheet com.android.neuralnetworks com.android.ondevicepersonalization com.android.os.statsd com.android.permission com.android.resolv com.android.runtime com.android.safetycenter.resources com.android.scheduling com.android.sdkext com.android.support.apexer com.android.telephony com.android.tethering com.android.tzdata com.android.uwb com.android.uwb.resources com.android.virt com.android.wifi com.android.wifi.dialog com.android.wifi.resources com.qorvo.uwb; do \ + ./development/tools/make_key ~/.android-certs/$apex "$subject"; \ +done diff --git a/.local/bin/mkaur b/.local/bin/mkaur new file mode 100755 index 0000000..a02f512 --- /dev/null +++ b/.local/bin/mkaur @@ -0,0 +1,8 @@ +# Builds a package from the Arch User Repository +function mkaur() { + git clone https://aur.archlinux.org/"${1}" + cd "${1}" || return + makepkg -si "${2}" + cd - || return + rm -rf "${1}" +} diff --git a/.local/bin/mkbootimg b/.local/bin/mkbootimg new file mode 100755 index 0000000..9682033 --- /dev/null +++ b/.local/bin/mkbootimg @@ -0,0 +1,316 @@ +#!/usr/bin/env python +# Copyright 2015, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import print_function + +from argparse import ArgumentParser, FileType, Action +from hashlib import sha1 +from os import fstat +import re +from struct import pack + + +BOOT_IMAGE_HEADER_V3_PAGESIZE = 4096 + +def filesize(f): + if f is None: + return 0 + try: + return fstat(f.fileno()).st_size + except OSError: + return 0 + + +def update_sha(sha, f): + if f: + sha.update(f.read()) + f.seek(0) + sha.update(pack('I', filesize(f))) + else: + sha.update(pack('I', 0)) + + +def pad_file(f, padding): + pad = (padding - (f.tell() & (padding - 1))) & (padding - 1) + f.write(pack(str(pad) + 'x')) + + +def get_number_of_pages(image_size, page_size): + """calculates the number of pages required for the image""" + return (image_size + page_size - 1) / page_size + + +def get_recovery_dtbo_offset(args): + """calculates the offset of recovery_dtbo image in the boot image""" + num_header_pages = 1 # header occupies a page + num_kernel_pages = get_number_of_pages(filesize(args.kernel), args.pagesize) + num_ramdisk_pages = get_number_of_pages(filesize(args.ramdisk), args.pagesize) + num_second_pages = get_number_of_pages(filesize(args.second), args.pagesize) + dtbo_offset = args.pagesize * (num_header_pages + num_kernel_pages + + num_ramdisk_pages + num_second_pages) + return dtbo_offset + + +def write_header_v3(args): + BOOT_IMAGE_HEADER_V3_SIZE = 1596 + BOOT_MAGIC = 'ANDROID!'.encode() + + args.output.write(pack('8s', BOOT_MAGIC)) + args.output.write(pack( + '4I', + filesize(args.kernel), # kernel size in bytes + filesize(args.ramdisk), # ramdisk size in bytes + (args.os_version << 11) | args.os_patch_level, # os version and patch level + BOOT_IMAGE_HEADER_V3_SIZE)) + + args.output.write(pack('4I', 0, 0, 0, 0)) # reserved + + args.output.write(pack('I', args.header_version)) # version of bootimage header + args.output.write(pack('1536s', args.cmdline.encode())) + pad_file(args.output, BOOT_IMAGE_HEADER_V3_PAGESIZE) + +def write_vendor_boot_header(args): + VENDOR_BOOT_IMAGE_HEADER_V3_SIZE = 2112 + BOOT_MAGIC = 'VNDRBOOT'.encode() + + args.vendor_boot.write(pack('8s', BOOT_MAGIC)) + args.vendor_boot.write(pack( + '5I', + args.header_version, # version of header + args.pagesize, # flash page size we assume + args.base + args.kernel_offset, # kernel physical load addr + args.base + args.ramdisk_offset, # ramdisk physical load addr + filesize(args.vendor_ramdisk))) # vendor ramdisk size in bytes + args.vendor_boot.write(pack('2048s', args.vendor_cmdline.encode())) + args.vendor_boot.write(pack('I', args.base + args.tags_offset)) # physical addr for kernel tags + args.vendor_boot.write(pack('16s', args.board.encode())) # asciiz product name + args.vendor_boot.write(pack('I', VENDOR_BOOT_IMAGE_HEADER_V3_SIZE)) # header size in bytes + if filesize(args.dtb) == 0: + raise ValueError("DTB image must not be empty.") + args.vendor_boot.write(pack('I', filesize(args.dtb))) # size in bytes + args.vendor_boot.write(pack('Q', args.base + args.dtb_offset)) # dtb physical load address + pad_file(args.vendor_boot, args.pagesize) + +def write_header(args): + BOOT_IMAGE_HEADER_V1_SIZE = 1648 + BOOT_IMAGE_HEADER_V2_SIZE = 1660 + BOOT_MAGIC = 'ANDROID!'.encode() + + if args.header_version > 3: + raise ValueError('Boot header version %d not supported' % args.header_version) + elif args.header_version == 3: + return write_header_v3(args) + + args.output.write(pack('8s', BOOT_MAGIC)) + final_ramdisk_offset = (args.base + args.ramdisk_offset) if filesize(args.ramdisk) > 0 else 0 + final_second_offset = (args.base + args.second_offset) if filesize(args.second) > 0 else 0 + args.output.write(pack( + '10I', + filesize(args.kernel), # size in bytes + args.base + args.kernel_offset, # physical load addr + filesize(args.ramdisk), # size in bytes + final_ramdisk_offset, # physical load addr + filesize(args.second), # size in bytes + final_second_offset, # physical load addr + args.base + args.tags_offset, # physical addr for kernel tags + args.pagesize, # flash page size we assume + args.header_version, # version of bootimage header + (args.os_version << 11) | args.os_patch_level)) # os version and patch level + args.output.write(pack('16s', args.board.encode())) # asciiz product name + args.output.write(pack('512s', args.cmdline[:512].encode())) + + sha = sha1() + update_sha(sha, args.kernel) + update_sha(sha, args.ramdisk) + update_sha(sha, args.second) + + if args.header_version > 0: + update_sha(sha, args.recovery_dtbo) + if args.header_version > 1: + update_sha(sha, args.dtb) + + img_id = pack('32s', sha.digest()) + + args.output.write(img_id) + args.output.write(pack('1024s', args.cmdline[512:].encode())) + + if args.header_version > 0: + args.output.write(pack('I', filesize(args.recovery_dtbo))) # size in bytes + if args.recovery_dtbo: + args.output.write(pack('Q', get_recovery_dtbo_offset(args))) # recovery dtbo offset + else: + args.output.write(pack('Q', 0)) # Will be set to 0 for devices without a recovery dtbo + + # Populate boot image header size for header versions 1 and 2. + if args.header_version == 1: + args.output.write(pack('I', BOOT_IMAGE_HEADER_V1_SIZE)) + elif args.header_version == 2: + args.output.write(pack('I', BOOT_IMAGE_HEADER_V2_SIZE)) + + if args.header_version > 1: + + if filesize(args.dtb) == 0: + raise ValueError("DTB image must not be empty.") + + args.output.write(pack('I', filesize(args.dtb))) # size in bytes + args.output.write(pack('Q', args.base + args.dtb_offset)) # dtb physical load address + pad_file(args.output, args.pagesize) + return img_id + + +class ValidateStrLenAction(Action): + def __init__(self, option_strings, dest, nargs=None, **kwargs): + if 'maxlen' not in kwargs: + raise ValueError('maxlen must be set') + self.maxlen = int(kwargs['maxlen']) + del kwargs['maxlen'] + super(ValidateStrLenAction, self).__init__(option_strings, dest, **kwargs) + + def __call__(self, parser, namespace, values, option_string=None): + if len(values) > self.maxlen: + raise ValueError( + 'String argument too long: max {0:d}, got {1:d}'.format(self.maxlen, len(values))) + setattr(namespace, self.dest, values) + + +def write_padded_file(f_out, f_in, padding): + if f_in is None: + return + f_out.write(f_in.read()) + pad_file(f_out, padding) + + +def parse_int(x): + return int(x, 0) + + +def parse_os_version(x): + match = re.search(r'^(\d{1,3})(?:\.(\d{1,3})(?:\.(\d{1,3}))?)?', x) + if match: + a = int(match.group(1)) + b = c = 0 + if match.lastindex >= 2: + b = int(match.group(2)) + if match.lastindex == 3: + c = int(match.group(3)) + # 7 bits allocated for each field + assert a < 128 + assert b < 128 + assert c < 128 + return (a << 14) | (b << 7) | c + return 0 + + +def parse_os_patch_level(x): + match = re.search(r'^(\d{4})-(\d{2})(?:-(\d{2}))?', x) + if match: + y = int(match.group(1)) - 2000 + m = int(match.group(2)) + # 7 bits allocated for the year, 4 bits for the month + assert 0 <= y < 128 + assert 0 < m <= 12 + return (y << 4) | m + return 0 + + +def parse_cmdline(): + parser = ArgumentParser() + parser.add_argument('--kernel', help='path to the kernel', type=FileType('rb')) + parser.add_argument('--ramdisk', help='path to the ramdisk', type=FileType('rb')) + parser.add_argument('--second', help='path to the 2nd bootloader', type=FileType('rb')) + parser.add_argument('--dtb', help='path to dtb', type=FileType('rb')) + recovery_dtbo_group = parser.add_mutually_exclusive_group() + recovery_dtbo_group.add_argument('--recovery_dtbo', help='path to the recovery DTBO', + type=FileType('rb')) + recovery_dtbo_group.add_argument('--recovery_acpio', help='path to the recovery ACPIO', + type=FileType('rb'), metavar='RECOVERY_ACPIO', + dest='recovery_dtbo') + parser.add_argument('--cmdline', help='extra arguments to be passed on the ' + 'kernel command line', default='', action=ValidateStrLenAction, maxlen=1536) + parser.add_argument('--vendor_cmdline', + help='kernel command line arguments contained in vendor boot', + default='', action=ValidateStrLenAction, maxlen=2048) + parser.add_argument('--base', help='base address', type=parse_int, default=0x10000000) + parser.add_argument('--kernel_offset', help='kernel offset', type=parse_int, default=0x00008000) + parser.add_argument('--ramdisk_offset', help='ramdisk offset', type=parse_int, + default=0x01000000) + parser.add_argument('--second_offset', help='2nd bootloader offset', type=parse_int, + default=0x00f00000) + parser.add_argument('--dtb_offset', help='dtb offset', type=parse_int, default=0x01f00000) + + parser.add_argument('--os_version', help='operating system version', type=parse_os_version, + default=0) + parser.add_argument('--os_patch_level', help='operating system patch level', + type=parse_os_patch_level, default=0) + parser.add_argument('--tags_offset', help='tags offset', type=parse_int, default=0x00000100) + parser.add_argument('--board', help='board name', default='', action=ValidateStrLenAction, + maxlen=16) + parser.add_argument('--pagesize', help='page size', type=parse_int, + choices=[2**i for i in range(11, 15)], default=2048) + parser.add_argument('--id', help='print the image ID on standard output', + action='store_true') + parser.add_argument('--header_version', help='boot image header version', type=parse_int, + default=0) + parser.add_argument('-o', '--output', help='output file name', type=FileType('wb')) + parser.add_argument('--vendor_boot', help='vendor boot output file name', type=FileType('wb')) + parser.add_argument('--vendor_ramdisk', help='path to the vendor ramdisk', type=FileType('rb')) + + return parser.parse_args() + + +def write_data(args, pagesize): + write_padded_file(args.output, args.kernel, pagesize) + write_padded_file(args.output, args.ramdisk, pagesize) + write_padded_file(args.output, args.second, pagesize) + + if args.header_version > 0 and args.header_version < 3: + write_padded_file(args.output, args.recovery_dtbo, pagesize) + if args.header_version == 2: + write_padded_file(args.output, args.dtb, pagesize) + + +def write_vendor_boot_data(args): + write_padded_file(args.vendor_boot, args.vendor_ramdisk, args.pagesize) + write_padded_file(args.vendor_boot, args.dtb, args.pagesize) + + +def main(): + args = parse_cmdline() + if args.vendor_boot is not None: + if args.header_version < 3: + raise ValueError('--vendor_boot not compatible with given header version') + if args.vendor_ramdisk is None: + raise ValueError('--vendor_ramdisk missing or invalid') + write_vendor_boot_header(args) + write_vendor_boot_data(args) + if args.output is not None: + if args.kernel is None: + raise ValueError('kernel must be supplied when creating a boot image') + if args.second is not None and args.header_version > 2: + raise ValueError('--second not compatible with given header version') + img_id = write_header(args) + if args.header_version > 2: + write_data(args, BOOT_IMAGE_HEADER_V3_PAGESIZE) + else: + write_data(args, args.pagesize) + if args.id and img_id is not None: + # Python 2's struct.pack returns a string, but py3 returns bytes. + if isinstance(img_id, str): + img_id = [ord(x) for x in img_id] + print('0x' + ''.join('{:02x}'.format(c) for c in img_id)) + + +if __name__ == '__main__': + main() diff --git a/.local/bin/nimporter b/.local/bin/nimporter new file mode 100755 index 0000000..4ea8928 --- /dev/null +++ b/.local/bin/nimporter @@ -0,0 +1,8 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from nimporter_cli import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/.local/bin/normalizer b/.local/bin/normalizer new file mode 120000 index 0000000..30a4709 --- /dev/null +++ b/.local/bin/normalizer @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/aospdtgen/bin/normalizer \ No newline at end of file diff --git a/.local/bin/otc2otf b/.local/bin/otc2otf new file mode 120000 index 0000000..dd8655a --- /dev/null +++ b/.local/bin/otc2otf @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/otc2otf \ No newline at end of file diff --git a/.local/bin/otf2otc b/.local/bin/otf2otc new file mode 120000 index 0000000..5c0cbd0 --- /dev/null +++ b/.local/bin/otf2otc @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/otf2otc \ No newline at end of file diff --git a/.local/bin/otf2ttf b/.local/bin/otf2ttf new file mode 120000 index 0000000..515e0de --- /dev/null +++ b/.local/bin/otf2ttf @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/otf2ttf \ No newline at end of file diff --git a/.local/bin/packedstruct.py b/.local/bin/packedstruct.py new file mode 100644 index 0000000..17c4f44 --- /dev/null +++ b/.local/bin/packedstruct.py @@ -0,0 +1,61 @@ +# Copyright 2021 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import struct + + +class PackedStruct(object): + """Class representing a C style packed structure + + Derived classes need to provide a dictionary with key will be the attributes and the values are + the format characters for each field. e.g. + + class Foo(PackedStruct): + _FIELDS = { + x: 'I', + name: '64s', + } + + In this case Foo.x will represent an "unsigned int" C value, while Foo.name will be a "char[64]" + C value + + """ + + def __init__(self, *args, **kwargs): + self._fmt = '<' + ''.join(fmt for fmt in self._FIELDS.values()) + for name in self._FIELDS: + setattr(self, name, None) + + for name, val in zip(self._FIELDS.keys(), args): + setattr(self, name, val) + for name, val in kwargs.items(): + setattr(self, name, val) + + def __repr__(self): + return '{} {{\n'.format(self.__class__.__name__) + ',\n'.join( + ' {!r}: {!r}'.format(k, getattr(self, k)) for k in self._FIELDS) + '\n}' + + def __str__(self): + return struct.pack(self._fmt, *(getattr(self, x) for x in self._FIELDS)) + + def __bytes__(self): + return struct.pack(self._fmt, *(getattr(self, x) for x in self._FIELDS)) + + def __len__(self): + return struct.calcsize(self._fmt) + + @classmethod + def from_bytes(cls, data): + fmt_str = '<' + ''.join(fmt for fmt in cls._FIELDS.values()) + return cls(*struct.unpack(fmt_str, data)) diff --git a/.local/bin/payload-dumper-go b/.local/bin/payload-dumper-go new file mode 100755 index 0000000..00d5ab1 Binary files /dev/null and b/.local/bin/payload-dumper-go differ diff --git a/.local/bin/pep8 b/.local/bin/pep8 new file mode 100755 index 0000000..a054e97 --- /dev/null +++ b/.local/bin/pep8 @@ -0,0 +1,8 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pep8 import _main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(_main()) diff --git a/.local/bin/pfetch b/.local/bin/pfetch new file mode 100755 index 0000000..3a709dc --- /dev/null +++ b/.local/bin/pfetch @@ -0,0 +1,1830 @@ +#!/bin/sh +# +# pfetch - Simple POSIX sh fetch script. + +# Wrapper around all escape sequences used by pfetch to allow for +# greater control over which sequences are used (if any at all). +esc() { + case $1 in + CUU) e="${esc_c}[${2}A" ;; # cursor up + CUD) e="${esc_c}[${2}B" ;; # cursor down + CUF) e="${esc_c}[${2}C" ;; # cursor right + CUB) e="${esc_c}[${2}D" ;; # cursor left + + # text formatting + SGR) + case ${PF_COLOR:=1} in + (1) + e="${esc_c}[${2}m" + ;; + + (0) + # colors disabled + e= + ;; + esac + ;; + + # line wrap + DECAWM) + case $TERM in + (dumb | minix | cons25) + # not supported + e= + ;; + + (*) + e="${esc_c}[?7${2}" + ;; + esac + ;; + esac +} + +# Print a sequence to the terminal. +esc_p() { + esc "$@" + printf '%s' "$e" +} + +# This is just a simple wrapper around 'command -v' to avoid +# spamming '>/dev/null' throughout this function. This also guards +# against aliases and functions. +has() { + _cmd=$(command -v "$1") 2>/dev/null || return 1 + [ -x "$_cmd" ] || return 1 +} + +log() { + # The 'log()' function handles the printing of information. + # In 'pfetch' (and 'neofetch'!) the printing of the ascii art and info + # happen independently of each other. + # + # The size of the ascii art is stored and the ascii is printed first. + # Once the ascii is printed, the cursor is located right below the art + # (See marker $[1]). + # + # Using the stored ascii size, the cursor is then moved to marker $[2]. + # This is simply a cursor up escape sequence using the "height" of the + # ascii art. + # + # 'log()' then moves the cursor to the right the "width" of the ascii art + # with an additional amount of padding to add a gap between the art and + # the information (See marker $[3]). + # + # When 'log()' has executed, the cursor is then located at marker $[4]. + # When 'log()' is run a second time, the next line of information is + # printed, moving the cursor to marker $[5]. + # + # Markers $[4] and $[5] repeat all the way down through the ascii art + # until there is no more information left to print. + # + # Every time 'log()' is called the script keeps track of how many lines + # were printed. When printing is complete the cursor is then manually + # placed below the information and the art according to the "heights" + # of both. + # + # The math is simple: move cursor down $((ascii_height - info_height)). + # If the aim is to move the cursor from marker $[5] to marker $[6], + # plus the ascii height is 8 while the info height is 2 it'd be a move + # of 6 lines downwards. + # + # However, if the information printed is "taller" (takes up more lines) + # than the ascii art, the cursor isn't moved at all! + # + # Once the cursor is at marker $[6], the script exits. This is the gist + # of how this "dynamic" printing and layout works. + # + # This method allows ascii art to be stored without markers for info + # and it allows for easy swapping of info order and amount. + # + # $[2] ___ $[3] goldie@KISS + # $[4](.· | $[5] os KISS Linux + # (<> | + # / __ \ + # ( / \ /| + # _/\ __)/_) + # \/-____\/ + # $[1] + # + # $[6] /home/goldie $ + + # End here if no data was found. + [ "$2" ] || return + + # Store the value of '$1' as we reset the argument list below. + name=$1 + + # Use 'set --' as a means of stripping all leading and trailing + # white-space from the info string. This also normalizes all + # white-space inside of the string. + # + # Disable the shellcheck warning for word-splitting + # as it's safe and intended ('set -f' disables globbing). + # shellcheck disable=2046,2086 + { + set -f + set +f -- $2 + info=$* + } + + # Move the cursor to the right, the width of the ascii art with an + # additional gap for text spacing. + esc_p CUF "$ascii_width" + + # Print the info name and color the text. + esc_p SGR "3${PF_COL1-4}"; + esc_p SGR 1 + printf '%s' "$name" + esc_p SGR 0 + + # Print the info name and info data separator. + printf %s "$PF_SEP" + + # Move the cursor backward the length of the *current* info name and + # then move it forwards the length of the *longest* info name. This + # aligns each info data line. + esc_p CUB "${#name}" + esc_p CUF "${PF_ALIGN:-$info_length}" + + # Print the info data, color it and strip all leading whitespace + # from the string. + esc_p SGR "3${PF_COL2-7}" + printf '%s' "$info" + esc_p SGR 0 + printf '\n' + + # Keep track of the number of times 'log()' has been run. + info_height=$((${info_height:-0} + 1)) +} + +get_title() { + # Username is retrieved by first checking '$USER' with a fallback + # to the 'id -un' command. + user=${USER:-$(id -un)} + + # Hostname is retrieved by first checking '$HOSTNAME' with a fallback + # to the 'hostname' command. + # + # Disable the warning about '$HOSTNAME' being undefined in POSIX sh as + # the intention for using it is allowing the user to overwrite the + # value on invocation. + # shellcheck disable=SC3028 + host=${HOSTNAME:-${host:-$(hostname)}} + + # If the hostname is still not found, fallback to the contents of the + # /etc/hostname file. + [ "$host" ] || read -r host < /etc/hostname + + # Add escape sequences for coloring to user and host name. As we embed + # them directly in the arguments passed to log(), we cannot use esc_p(). + esc SGR 1 + user=$e$user + esc SGR "3${PF_COL3:-1}" + user=$e$user + esc SGR 1 + user=$user$e + esc SGR 1 + host=$e$host + esc SGR "3${PF_COL3:-1}" + host=$e$host + + log "${user}@${host}" " " >&6 +} + +get_os() { + # This function is called twice, once to detect the distribution name + # for the purposes of picking an ascii art early and secondly to display + # the distribution name in the info output (if enabled). + # + # On first run, this function displays _nothing_, only on the second + # invocation is 'log()' called. + [ "$distro" ] && { + log os "$distro" >&6 + return + } + + case $os in + (Linux*) + # Some Linux distributions (which are based on others) + # fail to identify as they **do not** change the upstream + # distribution's identification packages or files. + # + # It is senseless to add a special case in the code for + # each and every distribution (which _is_ technically no + # different from what it is based on) as they're either too + # lazy to modify upstream's identification files or they + # don't have the know-how (or means) to ship their own + # lsb-release package. + # + # This causes users to think there's a bug in system detection + # tools like neofetch or pfetch when they technically *do* + # function correctly. + # + # Exceptions are made for distributions which are independent, + # not based on another distribution or follow different + # standards. + # + # This applies only to distributions which follow the standard + # by shipping unmodified identification files and packages + # from their respective upstreams. + if has lsb_release; then + distro=$(lsb_release -sd) + + # Android detection works by checking for the existence of + # the follow two directories. I don't think there's a simpler + # method than this. + elif [ -d /system/app ] && [ -d /system/priv-app ]; then + distro="Android $(getprop ro.build.version.release)" + + else + # This used to be a simple '. /etc/os-release' but I believe + # this is insecure as we blindly executed whatever was in the + # file. This parser instead simply handles 'key=val', treating + # the file contents as plain-text. + while IFS='=' read -r key val; do + case $key in + (PRETTY_NAME) + distro=$val + ;; + esac + done < /etc/os-release + fi + + # 'os-release' and 'lsb_release' sometimes add quotes + # around the distribution name, strip them. + distro=${distro##[\"\']} + distro=${distro%%[\"\']} + + # Special cases for (independent) distributions which + # don't follow any os-release/lsb standards whatsoever. + has crux && distro=$(crux) + has guix && distro='Guix System' + + # Check to see if we're running Bedrock Linux which is + # very unique. This simply checks to see if the user's + # PATH contains a Bedrock specific value. + case $PATH in + (*/bedrock/cross/*) + distro='Bedrock Linux' + ;; + esac + + # Check to see if Linux is running in Windows 10 under + # WSL1 (Windows subsystem for Linux [version 1]) and + # append a string accordingly. + # + # If the kernel version string ends in "-Microsoft", + # we're very likely running under Windows 10 in WSL1. + if [ "$WSLENV" ]; then + distro="${distro}${WSLENV+ on Windows 10 [WSL2]}" + + # Check to see if Linux is running in Windows 10 under + # WSL2 (Windows subsystem for Linux [version 2]) and + # append a string accordingly. + # + # This checks to see if '$WSLENV' is defined. This + # appends the Windows 10 string even if '$WSLENV' is + # empty. We only need to check that is has been _exported_. + elif [ -z "${kernel%%*-Microsoft}" ]; then + distro="$distro on Windows 10 [WSL1]" + fi + ;; + + (Darwin*) + # Parse the SystemVersion.plist file to grab the macOS + # version. The file is in the following format: + # + # ProductVersion + # 10.14.6 + # + # 'IFS' is set to '<>' to enable splitting between the + # keys and a second 'read' is used to operate on the + # next line directly after a match. + # + # '_' is used to nullify a field. '_ _ line _' basically + # says "populate $line with the third field's contents". + while IFS='<>' read -r _ _ line _; do + case $line in + # Match 'ProductVersion' and read the next line + # directly as it contains the key's value. + ProductVersion) + IFS='<>' read -r _ _ mac_version _ + continue + ;; + + ProductName) + IFS='<>' read -r _ _ mac_product _ + continue + ;; + esac + done < /System/Library/CoreServices/SystemVersion.plist + + # Use the ProductVersion to determine which macOS/OS X codename + # the system has. As far as I'm aware there's no "dynamic" way + # of grabbing this information. + case $mac_version in + (10.4*) distro='Mac OS X Tiger' ;; + (10.5*) distro='Mac OS X Leopard' ;; + (10.6*) distro='Mac OS X Snow Leopard' ;; + (10.7*) distro='Mac OS X Lion' ;; + (10.8*) distro='OS X Mountain Lion' ;; + (10.9*) distro='OS X Mavericks' ;; + (10.10*) distro='OS X Yosemite' ;; + (10.11*) distro='OS X El Capitan' ;; + (10.12*) distro='macOS Sierra' ;; + (10.13*) distro='macOS High Sierra' ;; + (10.14*) distro='macOS Mojave' ;; + (10.15*) distro='macOS Catalina' ;; + (11*) distro='macOS Big Sur' ;; + (*) distro='macOS' ;; + esac + + # Use the ProductName to determine if we're running in iOS. + case $mac_product in + (iP*) distro='iOS' ;; + esac + + distro="$distro $mac_version" + ;; + + (Haiku) + # Haiku uses 'uname -v' for version information + # instead of 'uname -r' which only prints '1'. + distro=$(uname -sv) + ;; + + (Minix|DragonFly) + distro="$os $kernel" + + # Minix and DragonFly don't support the escape + # sequences used, clear the exit trap. + trap '' EXIT + ;; + + (SunOS) + # Grab the first line of the '/etc/release' file + # discarding everything after '('. + IFS='(' read -r distro _ < /etc/release + ;; + + (OpenBSD*) + # Show the OpenBSD version type (current if present). + # kern.version=OpenBSD 6.6-current (GENERIC.MP) ... + IFS=' =' read -r _ distro openbsd_ver _ <<-EOF + $(sysctl kern.version) + EOF + + distro="$distro $openbsd_ver" + ;; + + FreeBSD) + distro="$os $(freebsd-version)" + ;; + + (*) + # Catch all to ensure '$distro' is never blank. + # This also handles the BSDs. + distro="$os $kernel" + ;; + esac +} + +get_kernel() { + case $os in + # Don't print kernel output on some systems as the + # OS name includes it. + (*BSD*|Haiku|Minix) + return + ;; + esac + + # '$kernel' is the cached output of 'uname -r'. + log kernel "$kernel" >&6 +} + +get_host() { + case $os in + (Linux*) + # Despite what these files are called, version doesn't + # always contain the version nor does name always contain + # the name. + read -r name < /sys/devices/virtual/dmi/id/product_name + read -r version < /sys/devices/virtual/dmi/id/product_version + read -r model < /sys/firmware/devicetree/base/model + + host="$name $version $model" + ;; + + (Darwin* | FreeBSD* | DragonFly*) + host=$(sysctl -n hw.model) + ;; + + (NetBSD*) + host=$(sysctl -n machdep.dmi.system-vendor \ + machdep.dmi.system-product) + ;; + + (OpenBSD*) + host=$(sysctl -n hw.version) + ;; + + (*BSD* | Minix) + host=$(sysctl -n hw.vendor hw.product) + ;; + esac + + # Turn the host string into an argument list so we can iterate + # over it and remove OEM strings and other information which + # shouldn't be displayed. + # + # Disable the shellcheck warning for word-splitting + # as it's safe and intended ('set -f' disables globbing). + # shellcheck disable=2046,2086 + { + set -f + set +f -- $host + host= + } + + # Iterate over the host string word by word as a means of stripping + # unwanted and OEM information from the string as a whole. + # + # This could have been implemented using a long 'sed' command with + # a list of word replacements, however I want to show that something + # like this is possible in pure sh. + # + # This string reconstruction is needed as some OEMs either leave the + # identification information as "To be filled by OEM", "Default", + # "undefined" etc and we shouldn't print this to the screen. + for word do + # This works by reconstructing the string by excluding words + # found in the "blacklist" below. Only non-matches are appended + # to the final host string. + case $word in + (To | [Bb]e | [Ff]illed | [Bb]y | O.E.M. | OEM |\ + Not | Applicable | Specified | System | Product | Name |\ + Version | Undefined | Default | string | INVALID | � | os |\ + Type1ProductConfigId ) + continue + ;; + esac + + host="$host$word " + done + + # '$arch' is the cached output from 'uname -m'. + log host "${host:-$arch}" >&6 +} + +get_uptime() { + # Uptime works by retrieving the data in total seconds and then + # converting that data into days, hours and minutes using simple + # math. + case $os in + (Linux* | Minix*) + IFS=. read -r s _ < /proc/uptime + ;; + + Darwin* | *BSD* | DragonFly*) + s=$(sysctl -n kern.boottime) + + # Extract the uptime in seconds from the following output: + # [...] { sec = 1271934886, usec = 667779 } Thu Apr 22 12:14:46 2010 + s=${s#*=} + s=${s%,*} + + # The uptime format from 'sysctl' needs to be subtracted from + # the current time in seconds. + s=$(($(date +%s) - s)) + ;; + + (Haiku) + # The boot time is returned in microseconds, convert it to + # regular seconds. + s=$(($(system_time) / 1000000)) + ;; + + (SunOS) + # Split the output of 'kstat' on '.' and any white-space + # which exists in the command output. + # + # The output is as follows: + # unix:0:system_misc:snaptime 14809.906993005 + # + # The parser extracts: ^^^^^ + IFS=' .' read -r _ s _ <<-EOF + $(kstat -p unix:0:system_misc:snaptime) + EOF + ;; + + (IRIX) + # Grab the uptime in a pretty format. Usually, + # 00:00:00 from the 'ps' command. + t=$(LC_ALL=POSIX ps -o etime= -p 1) + + # Split the pretty output into days or hours + # based on the uptime. + case $t in + (*-*) d=${t%%-*} t=${t#*-} ;; + (*:*:*) h=${t%%:*} t=${t#*:} ;; + esac + + h=${h#0} t=${t#0} + + # Convert the split pretty fields back into + # seconds so we may re-convert them to our format. + s=$((${d:-0}*86400 + ${h:-0}*3600 + ${t%%:*}*60 + ${t#*:})) + ;; + esac + + # Convert the uptime from seconds into days, hours and minutes. + d=$((s / 60 / 60 / 24)) + h=$((s / 60 / 60 % 24)) + m=$((s / 60 % 60)) + + # Only append days, hours and minutes if they're non-zero. + case "$d" in ([!0]*) uptime="${uptime}${d}d "; esac + case "$h" in ([!0]*) uptime="${uptime}${h}h "; esac + case "$m" in ([!0]*) uptime="${uptime}${m}m "; esac + + log uptime "${uptime:-0m}" >&6 +} + +get_pkgs() { + # This works by first checking for which package managers are + # installed and finally by printing each package manager's + # package list with each package one per line. + # + # The output from this is then piped to 'wc -l' to count each + # line, giving us the total package count of whatever package + # managers are installed. + # + # Backticks are *required* here as '/bin/sh' on macOS is + # 'bash 3.2' and it can't handle the following: + # + # var=$( + # code here + # ) + # + # shellcheck disable=2006 + packages=` + case $os in + (Linux*) + # Commands which print packages one per line. + has bonsai && bonsai list + has crux && pkginfo -i + has pacman-key && pacman -Qq + has dpkg && dpkg-query -f '.\n' -W + has rpm && rpm -qa + has xbps-query && xbps-query -l + has apk && apk info + has guix && guix package --list-installed + has opkg && opkg list-installed + + # Directories containing packages. + has kiss && printf '%s\n' /var/db/kiss/installed/*/ + has cpt-list && printf '%s\n' /var/db/cpt/installed/*/ + has brew && printf '%s\n' "$(brew --cellar)/"* + has emerge && printf '%s\n' /var/db/pkg/*/*/ + has pkgtool && printf '%s\n' /var/log/packages/* + has eopkg && printf '%s\n' /var/lib/eopkg/package/* + + # 'nix' requires two commands. + has nix-store && { + nix-store -q --requisites /run/current-system/sw + nix-store -q --requisites ~/.nix-profile + } + ;; + + (Darwin*) + # Commands which print packages one per line. + has pkgin && pkgin list + has dpkg && dpkg-query -f '.\n' -W + + # Directories containing packages. + has brew && printf '%s\n' /usr/local/Cellar/* + + # 'port' prints a single line of output to 'stdout' + # when no packages are installed and exits with + # success causing a false-positive of 1 package + # installed. + # + # 'port' should really exit with a non-zero code + # in this case to allow scripts to cleanly handle + # this behavior. + has port && { + pkg_list=$(port installed) + + case "$pkg_list" in + ("No ports are installed.") + # do nothing + ;; + + (*) + printf '%s\n' "$pkg_list" + ;; + esac + } + ;; + + (FreeBSD*|DragonFly*) + pkg info + ;; + + (OpenBSD*) + printf '%s\n' /var/db/pkg/*/ + ;; + + (NetBSD*) + pkg_info + ;; + + (Haiku) + printf '%s\n' /boot/system/package-links/* + ;; + + (Minix) + printf '%s\n' /usr/pkg/var/db/pkg/*/ + ;; + + (SunOS) + has pkginfo && pkginfo -i + has pkg && pkg list + ;; + + (IRIX) + versions -b + ;; + esac | wc -l + ` + + case $os in + # IRIX's package manager adds 3 lines of extra + # output which we must account for here. + (IRIX) + packages=$((packages - 3)) + ;; + + # OpenBSD's wc prints whitespace before the output + # which needs to be stripped. + (OpenBSD) + packages=$((packages)) + ;; + esac + + case $packages in + (1?*|[2-9]*) + log pkgs "$packages" >&6 + ;; + esac +} + +get_memory() { + case $os in + # Used memory is calculated using the following "formula": + # MemUsed = MemTotal + Shmem - MemFree - Buffers - Cached - SReclaimable + # Source: https://github.com/KittyKatt/screenFetch/issues/386 + (Linux*) + # Parse the '/proc/meminfo' file splitting on ':' and 'k'. + # The format of the file is 'key: 000kB' and an additional + # split is used on 'k' to filter out 'kB'. + while IFS=':k ' read -r key val _; do + case $key in + (MemTotal) + mem_used=$((mem_used + val)) + mem_full=$val + ;; + + (Shmem) + mem_used=$((mem_used + val)) + ;; + + (MemFree | Buffers | Cached | SReclaimable) + mem_used=$((mem_used - val)) + ;; + + # If detected this will be used over the above calculation + # for mem_used. Available since Linux 3.14rc. + # See kernel commit 34e431b0ae398fc54ea69ff85ec700722c9da773 + (MemAvailable) + mem_avail=$val + ;; + esac + done < /proc/meminfo + + case $mem_avail in + (*[0-9]*) + mem_used=$(((mem_full - mem_avail) / 1024)) + ;; + + *) + mem_used=$((mem_used / 1024)) + ;; + esac + + mem_full=$((mem_full / 1024)) + ;; + + # Used memory is calculated using the following "formula": + # (wired + active + occupied) * 4 / 1024 + (Darwin*) + mem_full=$(($(sysctl -n hw.memsize) / 1024 / 1024)) + + # Parse the 'vmstat' file splitting on ':' and '.'. + # The format of the file is 'key: 000.' and an additional + # split is used on '.' to filter it out. + while IFS=:. read -r key val; do + case $key in + (*' wired'*|*' active'*|*' occupied'*) + mem_used=$((mem_used + ${val:-0})) + ;; + esac + + # Using '<<-EOF' is the only way to loop over a command's + # output without the use of a pipe ('|'). + # This ensures that any variables defined in the while loop + # are still accessible in the script. + done <<-EOF + $(vm_stat) + EOF + + mem_used=$((mem_used * 4 / 1024)) + ;; + + (OpenBSD*) + mem_full=$(($(sysctl -n hw.physmem) / 1024 / 1024)) + + # This is a really simpler parser for 'vmstat' which grabs + # the used memory amount in a lazy way. 'vmstat' prints 3 + # lines of output with the needed value being stored in the + # final line. + # + # This loop simply grabs the 3rd element of each line until + # the EOF is reached. Each line overwrites the value of the + # previous one so we're left with what we wanted. This isn't + # slow as only 3 lines are parsed. + while read -r _ _ line _; do + mem_used=${line%%M} + + # Using '<<-EOF' is the only way to loop over a command's + # output without the use of a pipe ('|'). + # This ensures that any variables defined in the while loop + # are still accessible in the script. + done <<-EOF + $(vmstat) + EOF + ;; + + # Used memory is calculated using the following "formula": + # mem_full - ((inactive + free + cache) * page_size / 1024) + (FreeBSD*|DragonFly*) + mem_full=$(($(sysctl -n hw.physmem) / 1024 / 1024)) + + # Use 'set --' to store the output of the command in the + # argument list. POSIX sh has no arrays but this is close enough. + # + # Disable the shellcheck warning for word-splitting + # as it's safe and intended ('set -f' disables globbing). + # shellcheck disable=2046 + { + set -f + set +f -- $(sysctl -n hw.pagesize \ + vm.stats.vm.v_inactive_count \ + vm.stats.vm.v_free_count \ + vm.stats.vm.v_cache_count) + } + + # Calculate the amount of used memory. + # $1: hw.pagesize + # $2: vm.stats.vm.v_inactive_count + # $3: vm.stats.vm.v_free_count + # $4: vm.stats.vm.v_cache_count + mem_used=$((mem_full - (($2 + $3 + $4) * $1 / 1024 / 1024))) + ;; + + (NetBSD*) + mem_full=$(($(sysctl -n hw.physmem64) / 1024 / 1024)) + + # NetBSD implements a lot of the Linux '/proc' filesystem, + # this uses the same parser as the Linux memory detection. + while IFS=':k ' read -r key val _; do + case $key in + (MemFree) + mem_free=$((val / 1024)) + break + ;; + esac + done < /proc/meminfo + + mem_used=$((mem_full - mem_free)) + ;; + + (Haiku) + # Read the first line of 'sysinfo -mem' splitting on + # '(', ' ', and ')'. The needed information is then + # stored in the 5th and 7th elements. Using '_' "consumes" + # an element allowing us to proceed to the next one. + # + # The parsed format is as follows: + # 3501142016 bytes free (used/max 792645632 / 4293787648) + IFS='( )' read -r _ _ _ _ mem_used _ mem_full <<-EOF + $(sysinfo -mem) + EOF + + mem_used=$((mem_used / 1024 / 1024)) + mem_full=$((mem_full / 1024 / 1024)) + ;; + + (Minix) + # Minix includes the '/proc' filesystem though the format + # differs from Linux. The '/proc/meminfo' file is only a + # single line with space separated elements and elements + # 2 and 3 contain the total and free memory numbers. + read -r _ mem_full mem_free _ < /proc/meminfo + + mem_used=$(((mem_full - mem_free) / 1024)) + mem_full=$(( mem_full / 1024)) + ;; + + (SunOS) + hw_pagesize=$(pagesize) + + # 'kstat' outputs memory in the following format: + # unix:0:system_pages:pagestotal 1046397 + # unix:0:system_pages:pagesfree 885018 + # + # This simply uses the first "element" (white-space + # separated) as the key and the second element as the + # value. + # + # A variable is then assigned based on the key. + while read -r key val; do + case $key in + (*total) + pages_full=$val + ;; + + (*free) + pages_free=$val + ;; + esac + done <<-EOF + $(kstat -p unix:0:system_pages:pagestotal \ + unix:0:system_pages:pagesfree) + EOF + + mem_full=$((pages_full * hw_pagesize / 1024 / 1024)) + mem_free=$((pages_free * hw_pagesize / 1024 / 1024)) + mem_used=$((mem_full - mem_free)) + ;; + + (IRIX) + # Read the memory information from the 'top' command. Parse + # and split each line until we reach the line starting with + # "Memory". + # + # Example output: Memory: 160M max, 147M avail, ..... + while IFS=' :' read -r label mem_full _ mem_free _; do + case $label in + (Memory) + mem_full=${mem_full%M} + mem_free=${mem_free%M} + break + ;; + esac + done <<-EOF + $(top -n) + EOF + + mem_used=$((mem_full - mem_free)) + ;; + esac + + log memory "${mem_used:-?}M / ${mem_full:-?}M" >&6 +} + +get_wm() { + case $os in + (Darwin*) + # Don't display window manager on macOS. + ;; + + (*) + # xprop can be used to grab the window manager's properties + # which contains the window manager's name under '_NET_WM_NAME'. + # + # The upside to using 'xprop' is that you don't need to hardcode + # a list of known window manager names. The downside is that + # not all window managers conform to setting the '_NET_WM_NAME' + # atom.. + # + # List of window managers which fail to set the name atom: + # catwm, fvwm, dwm, 2bwm, monster, wmaker and sowm [mine! ;)]. + # + # The final downside to this approach is that it does _not_ + # support Wayland environments. The only solution which supports + # Wayland is the 'ps' parsing mentioned below. + # + # A more naive implementation is to parse the last line of + # '~/.xinitrc' to extract the second white-space separated + # element. + # + # The issue with an approach like this is that this line data + # does not always equate to the name of the window manager and + # could in theory be _anything_. + # + # This also fails when the user launches xorg through a display + # manager or other means. + # + # + # Another naive solution is to parse 'ps' with a hardcoded list + # of window managers to detect the current window manager (based + # on what is running). + # + # The issue with this approach is the need to hardcode and + # maintain a list of known window managers. + # + # Another issue is that process names do not always equate to + # the name of the window manager. False-positives can happen too. + # + # This is the only solution which supports Wayland based + # environments sadly. It'd be nice if some kind of standard were + # established to identify Wayland environments. + # + # pfetch's goal is to remain _simple_, if you'd like a "full" + # implementation of window manager detection use 'neofetch'. + # + # Neofetch use a combination of 'xprop' and 'ps' parsing to + # support all window managers (including non-conforming and + # Wayland) though it's a lot more complicated! + + # Don't display window manager if X isn't running. + [ "$DISPLAY" ] || return + + # This is a two pass call to xprop. One call to get the window + # manager's ID and another to print its properties. + has xprop && { + # The output of the ID command is as follows: + # _NET_SUPPORTING_WM_CHECK: window id # 0x400000 + # + # To extract the ID, everything before the last space + # is removed. + id=$(xprop -root -notype _NET_SUPPORTING_WM_CHECK) + id=${id##* } + + # The output of the property command is as follows: + # _NAME 8t + # _NET_WM_PID = 252 + # _NET_WM_NAME = "bspwm" + # _NET_SUPPORTING_WM_CHECK: window id # 0x400000 + # WM_CLASS = "wm", "Bspwm" + # + # To extract the name, everything before '_NET_WM_NAME = \"' + # is removed and everything after the next '"' is removed. + wm=$(xprop -id "$id" -notype -len 25 -f _NET_WM_NAME 8t) + } + + # Handle cases of a window manager _not_ populating the + # '_NET_WM_NAME' atom. Display nothing in this case. + case $wm in + (*'_NET_WM_NAME = '*) + wm=${wm##*_NET_WM_NAME = \"} + wm=${wm%%\"*} + ;; + + (*) + # Fallback to checking the process list + # for the select few window managers which + # don't set '_NET_WM_NAME'. + while read -r ps_line; do + case $ps_line in + (*catwm*) wm=catwm ;; + (*fvwm*) wm=fvwm ;; + (*dwm*) wm=dwm ;; + (*2bwm*) wm=2bwm ;; + (*monsterwm*) wm=monsterwm ;; + (*wmaker*) wm='Window Maker' ;; + (*sowm*) wm=sowm ;; + esac + done <<-EOF + $(ps x) + EOF + ;; + esac + ;; + esac + + log wm "$wm" >&6 +} + + +get_de() { + # This only supports Xorg related desktop environments though + # this is fine as knowing the desktop environment on Windows, + # macOS etc is useless (they'll always report the same value). + # + # Display the value of '$XDG_CURRENT_DESKTOP', if it's empty, + # display the value of '$DESKTOP_SESSION'. + log de "${XDG_CURRENT_DESKTOP:-$DESKTOP_SESSION}" >&6 +} + +get_shell() { + # Display the basename of the '$SHELL' environment variable. + log shell "${SHELL##*/}" >&6 +} + +get_editor() { + # Display the value of '$VISUAL', if it's empty, display the + # value of '$EDITOR'. + log editor "${VISUAL:-$EDITOR}" >&6 +} + +get_palette() { + # Print the first 8 terminal colors. This uses the existing + # sequences to change text color with a sequence prepended + # to reverse the foreground and background colors. + # + # This allows us to save hardcoding a second set of sequences + # for background colors. + # + # False positive. + # shellcheck disable=2154 + { + esc SGR 7 + palette="$e$c1 $c1 $c2 $c2 $c3 $c3 $c4 $c4 $c5 $c5 $c6 $c6 " + esc SGR 0 + palette="$palette$e" + } + + # Print the palette with a new-line before and afterwards. + printf '\n' >&6 + log "$palette + " " " >&6 +} + +get_ascii() { + # This is a simple function to read the contents of + # an ascii file from 'stdin'. It allows for the use + # of '<<-EOF' to prevent the break in indentation in + # this source code. + # + # This function also sets the text colors according + # to the ascii color. + read_ascii() { + # 'PF_COL1': Set the info name color according to ascii color. + # 'PF_COL3': Set the title color to some other color. ¯\_(ツ)_/¯ + PF_COL1=${PF_COL1:-${1:-7}} + PF_COL3=${PF_COL3:-$((${1:-7}%8+1))} + + # POSIX sh has no 'var+=' so 'var=${var}append' is used. What's + # interesting is that 'var+=' _is_ supported inside '$(())' + # (arithmetic) though there's no support for 'var++/var--'. + # + # There is also no $'\n' to add a "literal"(?) newline to the + # string. The simplest workaround being to break the line inside + # the string (though this has the caveat of breaking indentation). + while IFS= read -r line; do + ascii="$ascii$line +" + done + } + + # This checks for ascii art in the following order: + # '$1': Argument given to 'get_ascii()' directly. + # '$PF_ASCII': Environment variable set by user. + # '$distro': The detected distribution name. + # '$os': The name of the operating system/kernel. + # + # NOTE: Each ascii art below is indented using tabs, this + # allows indentation to continue naturally despite + # the use of '<<-EOF'. + # + # False positive. + # shellcheck disable=2154 + case ${1:-${PF_ASCII:-${distro:-$os}}} in + ([Aa]lpine*) + read_ascii 4 <<-EOF + ${c4} /\\ /\\ + /${c7}/ ${c4}\\ \\ + /${c7}/ ${c4}\\ \\ + /${c7}// ${c4}\\ \\ + ${c7}// ${c4}\\ \\ + ${c4}\\ + EOF + ;; + + ([Aa]ndroid*) + read_ascii 2 <<-EOF + ${c2} ;, ,; + ${c2} ';,.-----.,;' + ${c2} ,' ', + ${c2} / O O \\ + ${c2}| | + ${c2}'-----------------' + EOF + ;; + + ([Aa]rch*) + read_ascii 4 <<-EOF + ${c6} /\\ + ${c6} / \\ + ${c6} /\\ \\ + ${c4} / \\ + ${c4} / ,, \\ + ${c4} / | | -\\ + ${c4} /_-'' ''-_\\ + EOF + ;; + + ([Aa]rco*) + read_ascii 4 <<-EOF + ${c4} /\\ + ${c4} / \\ + ${c4} / /\\ \\ + ${c4} / / \\ \\ + ${c4} / / \\ \\ + ${c4} / / _____\\ \\ + ${c4}/_/ \`----.\\_\\ + EOF + ;; + + ([Aa]rtix*) + read_ascii 6 <<-EOF + ${c4} /\\ + ${c4} / \\ + ${c4} /\`'.,\\ + ${c4} / ', + ${c4} / ,\`\\ + ${c4} / ,.'\`. \\ + ${c4}/.,'\` \`'.\\ + EOF + ;; + + ([Bb]edrock*) + read_ascii 4 <<-EOF + ${c7}__ + ${c7}\\ \\___ + ${c7} \\ _ \\ + ${c7} \\___/ + EOF + ;; + + ([Bb]uildroot*) + read_ascii 3 <<-EOF + ${c3} ___ + ${c3} / \` \\ + ${c3}| : :| + ${c3}-. _:__.- + ${c3} \` ---- \` + EOF + ;; + + ([Cc]ent[Oo][Ss]*) + read_ascii 5 <<-EOF + ${c2} ____${c3}^${c5}____ + ${c2} |\\ ${c3}|${c5} /| + ${c2} | \\ ${c3}|${c5} / | + ${c5}<---- ${c4}----> + ${c4} | / ${c2}|${c3} \\ | + ${c4} |/__${c2}|${c3}__\\| + ${c2} v + EOF + ;; + + ([Dd]ahlia*) + read_ascii 1 <<-EOF + ${c1} _ + ${c1} ___/ \\___ + ${c1} | _-_ | + ${c1} | / \ | + ${c1}/ | | \\ + ${c1}\\ | | / + ${c1} | \ _ _ / | + ${c1} |___ - ___| + ${c1} \\_/ + EOF + ;; + + ([Dd]ebian*) + read_ascii 1 <<-EOF + ${c1} _____ + ${c1} / __ \\ + ${c1}| / | + ${c1}| \\___- + ${c1}-_ + ${c1} --_ + EOF + ;; + + ([Dd]ragon[Ff]ly*) + read_ascii 1 <<-EOF + ,${c1}_${c7}, + ('-_${c1}|${c7}_-') + >--${c1}|${c7}--< + (_-'${c1}|${c7}'-_) + ${c1}| + ${c1}| + ${c1}| + EOF + ;; + + ([Ee]lementary*) + read_ascii <<-EOF + ${c7} _______ + ${c7} / ____ \\ + ${c7}/ | / /\\ + ${c7}|__\\ / / | + ${c7}\\ /__/ / + ${c7}\\_______/ + EOF + ;; + + ([Ee]ndeavour*) + read_ascii 4 <<-EOF + ${c1}/${c4}\\ + ${c1}/${c4}/ \\${c6}\\ + ${c1}/${c4}/ \\ ${c6}\\ + ${c1}/ ${c4}/ _) ${c6}) + ${c1}/_${c4}/___-- ${c6}__- + ${c6}/____-- + EOF + ;; + + ([Ff]edora*) + read_ascii 4 <<-EOF + ${c4},'''''. + ${c4}| ,. | + ${c4}| | '_' + ${c4} ,....| |.. + ${c4}.' ,_;| ..' + ${c4}| | | | + ${c4}| ',_,' | + ${c4} '. ,' + ${c4}''''' + EOF + ;; + + ([Ff]ree[Bb][Ss][Dd]*) + read_ascii 1 <<-EOF + ${c1}/\\,-'''''-,/\\ + ${c1}\\_) (_/ + ${c1}| | + ${c1}| | + ${c1}; ; + ${c1}'-_____-' + EOF + ;; + + ([Gg]entoo*) + read_ascii 5 <<-EOF + ${c5} _-----_ + ${c5}( \\ + ${c5}\\ 0 \\ + ${c7} \\ ) + ${c7} / _/ + ${c7}( _- + ${c7}\\____- + EOF + ;; + + ([Gg][Nn][Uu]*) + read_ascii 3 <<-EOF + ${c2} _-\`\`-, ,-\`\`-_ + ${c2} .' _-_| |_-_ '. + ${c2}./ /_._ _._\\ \\. + ${c2}: _/_._\`:'_._\\_ : + ${c2}\\:._/ ,\` \\ \\ \\_.:/ + ${c2} ,-';'.@) \\ @) \\ + ${c2} ,'/' ..- .\\,-.| + ${c2} /'/' \\(( \\\` ./ ) + ${c2} '/'' \\_,----' + ${c2} '/'' ,;/'' + ${c2} \`\`;' + EOF + ;; + + ([Gg]uix[Ss][Dd]*|[Gg]uix*) + read_ascii 3 <<-EOF + ${c3}|.__ __.| + ${c3}|__ \\ / __| + ${c3}\\ \\ / / + ${c3}\\ \\ / / + ${c3}\\ \\ / / + ${c3}\\ \\/ / + ${c3}\\__/ + EOF + ;; + + ([Hh]aiku*) + read_ascii 3 <<-EOF + ${c3} ,^, + ${c3} / \\ + ${c3}*--_ ; ; _--* + ${c3}\\ '" "' / + ${c3}'. .' + ${c3}.-'" "'-. + ${c3}'-.__. .__.-' + ${c3}|_| + EOF + ;; + + ([Hh]ydroOS*) + read_ascii 4 <<-EOF + ${c1}╔╗╔╗──╔╗───╔═╦══╗ + ${c1}║╚╝╠╦╦╝╠╦╦═╣║║══╣ + ${c1}║╔╗║║║╬║╔╣╬║║╠══║ + ${c1}╚╝╚╬╗╠═╩╝╚═╩═╩══╝ + ${c1}───╚═╝ + EOF + ;; + + ([Hh]yperbola*) + read_ascii <<-EOF + ${c7} |\`__.\`/ + ${c7} \____/ + ${c7} .--. + ${c7} / \\ + ${c7} / ___ \\ + ${c7}/ .\` \`.\\ + ${c7}/.\` \`.\\ + EOF + ;; + + ([Ii]glunix*) + read_ascii <<-EOF + ${c0} | + ${c0} | | + ${c0} | + ${c0} | ________ + ${c0} | /\\ | \\ + ${c0} / \\ | \\ | + ${c0} / \\ \\ | + ${c0} / \\________\\ + ${c0} \\ / / + ${c0} \\ / / + ${c0} \\ / / + ${c0} \\/________/ + EOF + ;; + + ([Ii]nstant[Oo][Ss]*) + read_ascii <<-EOF + ${c0} ,-''-, + ${c0}: .''. : + ${c0}: ',,' : + ${c0} '-____:__ + ${c0} : \`. + ${c0} \`._.' + EOF + ;; + + ([Ii][Rr][Ii][Xx]*) + read_ascii 1 <<-EOF + ${c1} __ + ${c1} \\ \\ __ + ${c1} \\ \\ / / + ${c1} \\ v / + ${c1} / . \\ + ${c1} /_/ \\ \\ + ${c1} \\_\\ + EOF + ;; + + ([Kk][Dd][Ee]*[Nn]eon*) + read_ascii 6 <<-EOF + ${c7} .${c6}__${c7}.${c6}__${c7}. + ${c6} / _${c7}.${c6}_ \\ + ${c6} / / \\ \\ + ${c7} . ${c6}| ${c7}O${c6} | ${c7}. + ${c6} \\ \\_${c7}.${c6}_/ / + ${c6} \\${c7}.${c6}__${c7}.${c6}__${c7}.${c6}/ + EOF + ;; + + ([Ll]inux*[Ll]ite*|[Ll]ite*) + read_ascii 3 <<-EOF + ${c3} /\\ + ${c3} / \\ + ${c3} / ${c7}/ ${c3}/ + ${c3}> ${c7}/ ${c3}/ + ${c3}\\ ${c7}\\ ${c3}\\ + ${c3}\\_${c7}\\${c3}_\\ + ${c7} \\ + EOF + ;; + + ([Ll]inux*[Mm]int*|[Mm]int) + read_ascii 2 <<-EOF + ${c2} ___________ + ${c2}|_ \\ + ${c2}| ${c7}| _____ ${c2}| + ${c2}| ${c7}| | | | ${c2}| + ${c2}| ${c7}| | | | ${c2}| + ${c2}| ${c7}\\__${c7}___/ ${c2}| + ${c2}\\_________/ + EOF + ;; + + + ([Ll]inux*) + read_ascii 4 <<-EOF + ${c4} ___ + ${c4}(${c7}.. ${c4}| + ${c4}(${c5}<> ${c4}| + ${c4}/ ${c7}__ ${c4}\\ + ${c4}( ${c7}/ \\ ${c4}/| + ${c5}_${c4}/\\ ${c7}__)${c4}/${c5}_${c4}) + ${c5}\/${c4}-____${c5}\/ + EOF + ;; + + ([Mm]ac[Oo][Ss]*|[Dd]arwin*) + read_ascii 1 <<-EOF + ${c2} .:' + ${c2} _ :'_ + ${c3} .'\`_\`-'_\`\`. + ${c1}:________.-' + ${c1}:_______: + ${c4} :_______\`-; + ${c5} \`._.-._.' + EOF + ;; + + ([Mm]ageia*) + read_ascii 2 <<-EOF + ${c6} * + ${c6} * + ${c6} ** + ${c7} /\\__/\\ + ${c7}/ \\ + ${c7}\\ / + ${c7} \\____/ + EOF + ;; + + ([Mm]anjaro*) + read_ascii 2 <<-EOF + ${c2}||||||||| |||| + ${c2}||||||||| |||| + ${c2}|||| |||| + ${c2}|||| |||| |||| + ${c2}|||| |||| |||| + ${c2}|||| |||| |||| + ${c2}|||| |||| |||| + EOF + ;; + + ([Mm]inix*) + read_ascii 4 <<-EOF + ${c4} ,, ,, + ${c4};${c7},${c4} ', ,' ${c7},${c4}; + ${c4}; ${c7}',${c4} ',,' ${c7},'${c4} ; + ${c4}; ${c7}',${c4} ${c7},'${c4} ; + ${c4}; ${c7};, '' ,;${c4} ; + ${c4}; ${c7};${c4};${c7}',,'${c4};${c7};${c4} ; + ${c4}', ${c7};${c4};; ;;${c7};${c4} ,' + ${c4} '${c7};${c4}' '${c7};${c4}' + EOF + ;; + + ([Mm][Xx]*) + read_ascii <<-EOF + ${c7} \\\\ / + ${c7} \\\\/ + ${c7} \\\\ + ${c7} /\\/ \\\\ + ${c7} / \\ /\\ + ${c7} / \\/ \\ + ${c7}/__________\\ + EOF + ;; + + ([Nn]et[Bb][Ss][Dd]*) + read_ascii 3 <<-EOF + ${c7}\\\\${c3}\`-______,----__ + ${c7} \\\\ ${c3}__,---\`_ + ${c7} \\\\ ${c3}\`.____ + ${c7} \\\\${c3}-______,----\`- + ${c7} \\\\ + ${c7} \\\\ + ${c7} \\\\ + EOF + ;; + + ([Nn]ix[Oo][Ss]*) + read_ascii 4 <<-EOF + ${c4} \\\\ \\\\ // + ${c4} ==\\\\__\\\\/ // + ${c4} // \\\\// + ${c4}==// //== + ${c4} //\\\\___// + ${c4}// /\\\\ \\\\== + ${c4} // \\\\ \\\\ + EOF + ;; + + ([Oo]pen[Bb][Ss][Dd]*) + read_ascii 3 <<-EOF + ${c3} _____ + ${c3} \\- -/ + ${c3} \\_/ \\ + ${c3} | ${c7}O O${c3} | + ${c3} |_ < ) 3 ) + ${c3} / \\ / + ${c3} /-_____-\\ + EOF + ;; + + ([Oo]pen[Ss][Uu][Ss][Ee]*[Tt]umbleweed*) + read_ascii 2 <<-EOF + ${c2} _____ ______ + ${c2} / ____\\ / ____ \\ + ${c2}/ / \`/ / \\ \\ + ${c2}\\ \\____/ /,____/ / + ${c2} \\______/ \\_____/ + EOF + ;; + + ([Oo]pen[Ss][Uu][Ss][Ee]*|[Oo]pen*SUSE*|SUSE*|suse*) + read_ascii 2 <<-EOF + ${c2} _______ + ${c2}__| __ \\ + ${c2} / .\\ \\ + ${c2} \\__/ | + ${c2} _______| + ${c2} \\_______ + ${c2}__________/ + EOF + ;; + + ([Oo]pen[Ww]rt*) + read_ascii 1 <<-EOF + ${c1} _______ + ${c1}| |.-----.-----.-----. + ${c1}| - || _ | -__| | + ${c1}|_______|| __|_____|__|__| + ${c1} ________|__| __ + ${c1}| | | |.----.| |_ + ${c1}| | | || _|| _| + ${c1}|________||__| |____| + EOF + ;; + + ([Pp]arabola*) + read_ascii 5 <<-EOF + ${c5} __ __ __ _ + ${c5}.\`_//_//_/ / \`. + ${c5} / .\` + ${c5} / .\` + ${c5} /.\` + ${c5} /\` + EOF + ;; + + ([Pp]op!_[Oo][Ss]*) + read_ascii 6 <<-EOF + ${c6}______ + ${c6}\\ _ \\ __ + ${c6}\\ \\ \\ \\ / / + ${c6}\\ \\_\\ \\ / / + ${c6}\\ ___\\ /_/ + ${c6} \\ \\ _ + ${c6} __\\_\\__(_)_ + ${c6}(___________) + EOF + ;; + + ([Pp]ure[Oo][Ss]*) + read_ascii <<-EOF + ${c7} _____________ + ${c7}| _________ | + ${c7}| | | | + ${c7}| | | | + ${c7}| |_________| | + ${c7}|_____________| + EOF + ;; + + ([Rr]aspbian*) + read_ascii 1 <<-EOF + ${c2} __ __ + ${c2} (_\\)(/_) + ${c1} (_(__)_) + ${c1}(_(_)(_)_) + ${c1} (_(__)_) + ${c1} (__) + EOF + ;; + + ([Ss]lackware*) + read_ascii 4 <<-EOF + ${c4} ________ + ${c4} / ______| + ${c4} | |______ + ${c4} \\______ \\ + ${c4} ______| | + ${c4}| |________/ + ${c4}|____________ + EOF + ;; + + ([Ss]un[Oo][Ss]|[Ss]olaris*) + read_ascii 3 <<-EOF + ${c3} . .; . + ${c3} . :; :: ;: . + ${c3} .;. .. .. .;. + ${c3}.. .. .. .. + ${c3} .;, ,;. + EOF + ;; + + ([Uu]buntu*) + read_ascii 3 <<-EOF + ${c3} _ + ${c3} ---(_) + ${c3} _/ --- \\ + ${c3}(_) | | + ${c3} \\ --- _/ + ${c3} ---(_) + EOF + ;; + + ([Vv]oid*) + read_ascii 2 <<-EOF + ${c2} _______ + ${c2} _ \\______ - + ${c2}| \\ ___ \\ | + ${c2}| | / \ | | + ${c2}| | \___/ | | + ${c2}| \\______ \\_| + ${c2} -_______\\ + EOF + ;; + + ([Xx]eonix*) + read_ascii 2 <<-EOF + ${c2} ___ ___ + ${c2}___ \ \/ / ___ + ${c2}\ \ \ / / / + ${c2} \ \/ \/ / + ${c2} \ /\ / + ${c2} \__/ \__/ + EOF + ;; + + (*) + # On no match of a distribution ascii art, this function calls + # itself again, this time to look for a more generic OS related + # ascii art (KISS Linux -> Linux). + [ "$1" ] || { + get_ascii "$os" + return + } + + printf 'error: %s is not currently supported.\n' "$os" >&6 + printf 'error: Open an issue for support to be added.\n' >&6 + exit 1 + ;; + esac + + # Store the "width" (longest line) and "height" (number of lines) + # of the ascii art for positioning. This script prints to the screen + # *almost* like a TUI does. It uses escape sequences to allow dynamic + # printing of the information through user configuration. + # + # Iterate over each line of the ascii art to retrieve the above + # information. The 'sed' is used to strip '\033[3Xm' color codes from + # the ascii art so they don't affect the width variable. + while read -r line; do + ascii_height=$((${ascii_height:-0} + 1)) + + # This was a ternary operation but they aren't supported in + # Minix's shell. + [ "${#line}" -gt "${ascii_width:-0}" ] && + ascii_width=${#line} + + # Using '<<-EOF' is the only way to loop over a command's + # output without the use of a pipe ('|'). + # This ensures that any variables defined in the while loop + # are still accessible in the script. + done <<-EOF + $(printf %s "$ascii" | sed 's/\[3.m//g') + EOF + + # Add a gap between the ascii art and the information. + ascii_width=$((ascii_width + 4)) + + # Print the ascii art and position the cursor back where we + # started prior to printing it. + { + esc_p SGR 1 + printf '%s' "$ascii" + esc_p SGR 0 + esc_p CUU "$ascii_height" + } >&6 +} + +main() { + [ "$1" = --version ] && { + printf 'pfetch 0.7.0\n' + exit 0 + } + + # Hide 'stderr' unless the first argument is '-v'. This saves + # polluting the script with '2>/dev/null'. + [ "$1" = -v ] || { + exec 2>/dev/null + } + + # Hide 'stdout' and selectively print to it using '>&6'. + # This gives full control over what it displayed on the screen. + exec 6>&1 >/dev/null + + # Store raw escape sequence character for later reuse. + esc_c=$(printf '\033') + + # Allow the user to execute their own script and modify or + # extend pfetch's behavior. + # shellcheck source=/dev/null + . "${PF_SOURCE:-/dev/null}" ||: + + # Ensure that the 'TMPDIR' is writable as heredocs use it and + # fail without the write permission. This was found to be the + # case on Android where the temporary directory requires root. + [ -w "${TMPDIR:-/tmp}" ] || export TMPDIR=~ + + # Generic color list. + # Disable warning about unused variables. + # shellcheck disable=2034 + for _c in c1 c2 c3 c4 c5 c6 c7 c8; do + esc SGR "3${_c#?}" 0 + export "$_c=$e" + done + + # Disable line wrapping and catch the EXIT signal to enable it again + # on exit. Ideally you'd somehow query the current value and retain + # it but I'm yet to see this irk anyone. + esc_p DECAWM l >&6 + trap 'esc_p DECAWM h >&6' EXIT + + # Store the output of 'uname' to avoid calling it multiple times + # throughout the script. 'read </dev/null || continue + + # This was a ternary operation but they aren't supported in + # Minix's shell. + [ "${#info}" -gt "${info_length:-0}" ] && + info_length=${#info} + done + + # Add an additional space of length to act as a gap. + info_length=$((info_length + 1)) + + # Iterate over the above list and run any existing "get_" functions. + for info do + "get_$info" + done + } + + # Position the cursor below both the ascii art and information lines + # according to the height of both. If the information exceeds the ascii + # art in height, don't touch the cursor (0/unset), else move it down + # N lines. + # + # This was a ternary operation but they aren't supported in Minix's shell. + [ "${info_height:-0}" -lt "${ascii_height:-0}" ] && + cursor_pos=$((ascii_height - info_height)) + + # Print '$cursor_pos' amount of newlines to correctly position the + # cursor. This used to be a 'printf $(seq X X)' however 'seq' is only + # typically available (by default) on GNU based systems! + while [ "${i:=0}" -le "${cursor_pos:-0}" ]; do + printf '\n' + i=$((i + 1)) + done >&6 +} + +main "$@" diff --git a/.local/bin/pimg b/.local/bin/pimg new file mode 100755 index 0000000..bb7890a --- /dev/null +++ b/.local/bin/pimg @@ -0,0 +1,4 @@ +#! /bin/sh + +placeholder=$1 +curl -F"file=@$placeholder" http://0x0.st \ No newline at end of file diff --git a/.local/bin/pipes b/.local/bin/pipes new file mode 100755 index 0000000..4709745 --- /dev/null +++ b/.local/bin/pipes @@ -0,0 +1,136 @@ +#!/usr/bin/env bash +# pipes.sh: Animated pipes terminal screensaver. +# +# This modified version is maintained at: +# +# https://github.com/pipeseroni/pipes.sh + +VERSION=1.2.0 + +M=32768 +p=1 +f=75 s=13 r=2000 t=0 +w=80 h=24 + +resize() { + w=$(tput cols) h=$(tput lines) +} + +# ab -> idx = a*4 + b +# 0: up, 1: right, 2: down, 3: left +# 00 means going up , then going up -> ┃ +# 12 means going right, then going down -> ┓ +sets=( + "┃┏ ┓┛━┓ ┗┃┛┗ ┏━" + "│╭ ╮╯─╮ ╰│╯╰ ╭─" + "│┌ ┐┘─┐ └│┘└ ┌─" + "║╔ ╗╝═╗ ╚║╝╚ ╔═" + "|+ ++-+ +|++ +-" + "|/ \/-\ \|/\ /-" + ".. .... .... .." + ".o oo.o o.oo o." + "-\ /\|/ /-\/ \|" # railway + "╿┍ ┑┚╼┒ ┕╽┙┖ ┎╾" # knobby pipe +) +v=() +RNDSTART=0 +BOLD=1 +NOCOLOR=0 + +OPTIND=1 +while getopts "p:t:f:s:r:RBChv" arg; do +case $arg in + p) ((p=(OPTARG>0)?OPTARG:p));; + t) + if [[ "$OPTARG" = c???????????????? ]]; then + V+=(${#sets[@]}) + sets+=("${OPTARG:1}") + else + ((OPTARG>=0 && OPTARG<${#sets[@]})) && V+=($OPTARG) + fi + ;; + f) ((f=(OPTARG>19 && OPTARG<101)?OPTARG:f));; + s) ((s=(OPTARG>4 && OPTARG<16 )?OPTARG:s));; + r) ((r=(OPTARG>=0)?OPTARG:r));; + R) RNDSTART=1;; + B) BOLD=0;; + C) NOCOLOR=1;; + h) echo -e "Usage: $(basename $0) [OPTION]..." + echo -e "Animated pipes terminal screensaver.\n" + echo -e " -p [1-]\tnumber of pipes (D=1)." + echo -e " -t [0-$((${#sets[@]} - 1))]\ttype of pipes, can be used more than once (D=0)." + echo -e " -t c[16 chars]\tcustom type of pipes." + echo -e " -f [20-100]\tframerate (D=75)." + echo -e " -s [5-15]\tprobability of a straight fitting (D=13)." + echo -e " -r LIMIT\treset after x characters, 0 if no limit (D=2000)." + echo -e " -R \t\trandom starting point." + echo -e " -B \t\tno bold effect." + echo -e " -C \t\tno color." + echo -e " -h\t\thelp (this screen)." + echo -e " -v\t\tprint version number.\n" + exit 0;; + v) echo "$(basename -- "$0") $VERSION" + exit 0 + esac +done + +# set default values if not by options +((${#V[@]})) || V=(0) + +cleanup() { + # clear up standard input + read -t 0.001 && cat /dev/null + + # terminal has no smcup and rmcup capabilities + ((FORCE_RESET)) && reset && exit 0 + + tput rmcup + tput cnorm + stty echo + ((NOCOLOR)) && echo -ne '\x1b[0m' + exit 0 +} +trap resize SIGWINCH +trap cleanup HUP TERM +trap 'break 2' INT + +resize + +for (( i=1; i<=p; i++ )); do + c[i]=$((i%8)) n[i]=0 l[i]=0 + ((x[i]=RNDSTART==1?RANDOM*w/32768:w/2)) + ((y[i]=RNDSTART==1?RANDOM*h/32768:h/2)) + v[i]=${V[${#V[@]} * RANDOM / M]} +done + +stty -echo +tput smcup || FORCE_RESET=1 +tput civis +tput clear +# any key press exits the loop and this script +while REPLY=; read -t 0.0$((1000/f)) -n 1 2>/dev/null; [[ -z $REPLY ]] ; do + for (( i=1; i<=p; i++ )); do + # New position: + ((${l[i]}%2)) && ((x[i]+=-${l[i]}+2,1)) || ((y[i]+=${l[i]}-1)) + + # Loop on edges (change color on loop): + ((${x[i]}>=w||${x[i]}<0||${y[i]}>=h||${y[i]}<0)) && ((c[i]=RANDOM%8, v[i]=V[${#V[@]}*RANDOM/M])) + ((x[i]=(x[i]+w)%w)) + ((y[i]=(y[i]+h)%h)) + + # New random direction: + ((n[i]=RANDOM%s-1)) + ((n[i]=(${n[i]}>1||${n[i]}==0)?${l[i]}:${l[i]}+${n[i]})) + ((n[i]=(${n[i]}<0)?3:${n[i]}%4)) + + # Print: + tput cup ${y[i]} ${x[i]} + echo -ne "\x1b[${BOLD}m" + [[ $NOCOLOR == 0 ]] && echo -ne "\x1b[3${c[i]}m" + echo -n "${sets[v[i]]:l[i]*4+n[i]:1}" + l[i]=${n[i]} + done + ((r>0 && t*p>=r)) && tput reset && tput civis && t=0 || ((t++)) +done + +cleanup diff --git a/.local/bin/pipesx b/.local/bin/pipesx new file mode 100755 index 0000000..2397b56 --- /dev/null +++ b/.local/bin/pipesx @@ -0,0 +1,207 @@ +#!/bin/bash +# Animated pipes.sh terminal screensaver at an angle. +# Copyright (c) 2013-2015 Yu-Jie Lin +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# Website: https://github.com/pipeseroni/pipesX.sh + +VERSION=1.1.0 + +W=$(tput cols) H=$(tput lines) +# maximal random value + 1 +M=32768 + +SETS=('╱╲' '/\' '..' 'oo' '\/') +COLORS=(31 32 33 34 35 36 37) + +# default values +N=1 +T=() +I=0.05 +P=25 +R=$((W * H / 4)) + +HELP="Usage: $(basename $0) [OPTIONS] +Animated pipes.sh terminal screensaver at an angle. + +Options: + + -n [1-] number of pipes. (Default: $N) + -t [0-$((${#SETS[@]} - 1))] types of pipes, can be used more than once. (Default: $T) + -t c[2chs] custom type of pipes. + -i [float] piping interval or maze generation interval. (Default: $I) + -P [0-100] probability of a turning pipe or of \\ in maze generation. (Default: $P) + -r [LIMIT] reset after x characters, 0 if no limit. (Default: $R) + -R random starting point. + -C no color. + -X maze generation. + -h this help message. + -v print version number. +" + +while getopts "n:t:i:P:r:RCXhv" arg; do + case $arg in + n) + ((N = OPTARG > 0 ? OPTARG : N)) + ;; + t) + if [[ "$OPTARG" = c?? ]]; then + T+=(${#SETS[@]}) + SETS+=("${OPTARG:1}") + else + T+=($(((OPTARG >= 0 && OPTARG < ${#SETS[@]}) ? OPTARG : T))) + fi + ;; + i) + I=$OPTARG + ;; + P) + ((P = (OPTARG >= 0 && OPTARG <= 100) ? OPTARG : P)) + ;; + r) + ((R = OPTARG >= 0 ? OPTARG : R)) + ;; + R) + RNDSTART=1 + ;; + C) + NOCOLOR=1 + ;; + X) + MAZE=1 + ;; + h) + echo -e "$HELP" + exit 0 + ;; + v) + echo "$(basename -- "$0") $VERSION" + exit 0 + esac +done + +# set to default values if not by options +((${#T[@]})) || T=(0) + +do_exit() { + # clear up standard input + read -t 0.001 && cat /dev/null + + # terminal has no smcup and rmcup capabilities + ((FORCE_RESET)) && reset && exit 0 + + tput rmcup + tput cnorm + stty echo + ((NOCOLOR)) && echo -ne '\e[0m' + exit 0 + } +trap do_exit HUP TERM +trap 'break 2' INT + +# No echo stdin and hide the cursor +stty -echo +tput smcup || FORCE_RESET=1 +tput civis +tput clear + +# maze geneartion +while [[ $MAZE ]] && clear; do + [[ $NOCOLOR ]] || echo -ne "\e[1;${COLORS[${#COLORS[@]} * RANDOM / M]}m" + for ((i = 0; i < W * H; i++ )); do + echo -ne ${SETS[T]:100 * RANDOM / M < P:1} + done + read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit +done + +# initialze values +for ((n = 0; n < N; n++)); do + ((X[n] = RNDSTART ? (W + 2) * RANDOM / M : W / 2)) + ((Y[n] = RNDSTART ? (H + 2) * RANDOM / M : H / 2)) + D[n]=$((4 * RANDOM / M)) + C[n]=${COLORS[${#COLORS[@]} * RANDOM / M]} + t[n]=${T[${#T[@]} * RANDOM / M]} +done + +clear +while REPLY=; read -t $I -n 1; [[ -z $REPLY ]] ; do + for ((n = 0; n < N; n++, CC = 0)); do + x=${X[n]} y=${Y[n]} + d=${D[n]} c=${C[n]} + + # calculate new direction `d` + # 1 0 + # \/ 4 directions 0 to 3 + # /\ + # 2 3 + # valid directions: d: dd', d' is the new direction + # d + # 0: / 00 \ 01 03 + # / / /\ + # 1: / 10 \ 11 12 + # \ \ /\ + # 2: \/ 21 / 22 / 23 + # / \ + # 3: \/ 30 \ 32 \ 33 + # / \ + ((d = (100 * RANDOM / M) < P ? ((d + 1) + 2 * (RANDOM % 2)) % 4 : d)) + ((e = (d + 1) % 4)) + + # calculate new position + # d' x' y' + # 0: x+1 y-1 + # 1: x-1 y-1 + # 2: x-1 y+1 + # 3: x+1 y+1 + ((xn = e < 2 ? x + 1 : x - 1)) + ((yn = d < 2 ? y - 1 : y + 1)) + + # adjust position and change color? + ((d < 2 && y == 0)) && ((yn--, CC=1)) + ((e > 1 && x == 0)) && ((xn--, CC=1)) + ((d > 1 && y == H)) && ((yn++, CC=1)) + ((e < 2 && x == W)) && ((xn++, CC=1)) + ((CC)) && c=${COLORS[${#COLORS[@]} * RANDOM / M]} + ((CC)) && t[n]=${T[${#T[@]} * RANDOM / M]} + + # warp pipe + ((xn = (xn + W + 1) % (W + 1))) + ((yn = (yn + H + 1) % (H + 1))) + + # calculate position in terminal + # d' xt yt + # 0: x' y'+1 + # 1: x'+1 y'+1 + # 2: x'+1 y' + # 3: x' y' + ((xt = e < 2 ? xn : xn + 1)) + ((yt = d < 2 ? yn + 1 : yn)) + + echo -ne "\e[${yt};${xt}H" + [[ $NOCOLOR ]] || echo -ne "\e[1;${c}m" + echo -n "${SETS[t[n]]:d%2:1}" + + X[n]=$xn Y[n]=$yn + D[n]=$d C[n]=$c + done + ((R)) && ((r += N, r >= R)) && r=0 && clear +done + +do_exit diff --git a/.local/bin/pst b/.local/bin/pst new file mode 100755 index 0000000..26d248f --- /dev/null +++ b/.local/bin/pst @@ -0,0 +1,15 @@ +#!/bin/sh + +url="https://bin.xstefen.dev" +filepath="$1" +filename=$(basename -- "$filepath") +extension="${filename##*.}" + +response=$(curl --data-binary @${filepath:-/dev/stdin} --url $url) + +#echo "$url$response"".""$extension" | tee >(xclip -selection clipboard) + +pastelink="$url$response" +[ -z "$extension" ] && \ + echo "$pastelink" || \ + echo "$pastelink.$extension" diff --git a/.local/bin/push b/.local/bin/push new file mode 100755 index 0000000..bbe9edc --- /dev/null +++ b/.local/bin/push @@ -0,0 +1,16 @@ +#!/bin/bash + +function push_impl() { + adb shell rm -rf /system/$1 + adb push $1 /system/$1 + adb shell restorecon -R /system/$1 +} + +adb wait-for-device root && adb wait-for-device remount +for blob in $@; do + if [ -f $blob ] || [ -d $blob ]; then + push_impl $blob + else + find -name $blob | xargs push + fi +done diff --git a/.local/bin/push_custom.sh b/.local/bin/push_custom.sh new file mode 100755 index 0000000..5cbac0f --- /dev/null +++ b/.local/bin/push_custom.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# For all repos with custom branch below, add a git remote and push to said remote +# @xstefen + +BRANCH=lineage-20.0-x +LIST=$(repo status | grep "$BRANCH" | awk '{print $2}' | sed 's/.$//') +TOP=$(pwd) + +for REPO in $LIST +do + DEST=android_"$(echo "$REPO" | sed 's/\//_/g')".git + cd "$REPO" || exit + git remote remove xstefen + git remote add xstefen git@git.xstefen.dev:xstefen/"$DEST" + echo + echo pushing "$BRANCH" to "$DEST" + echo + git push -u xstefen "$BRANCH" + sleep 2 + cd "$TOP" || exit +done diff --git a/.local/bin/pykwalify b/.local/bin/pykwalify new file mode 100755 index 0000000..1e329f1 --- /dev/null +++ b/.local/bin/pykwalify @@ -0,0 +1,8 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pykwalify.cli import cli_entrypoint +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(cli_entrypoint()) diff --git a/.local/bin/python-formatter b/.local/bin/python-formatter new file mode 100755 index 0000000..c80102d --- /dev/null +++ b/.local/bin/python-formatter @@ -0,0 +1,8 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from formatter2.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/.local/bin/qc_image_unpacker b/.local/bin/qc_image_unpacker new file mode 100755 index 0000000..2ea2fb4 Binary files /dev/null and b/.local/bin/qc_image_unpacker differ diff --git a/.local/bin/rain b/.local/bin/rain new file mode 100755 index 0000000..8a8d8f6 --- /dev/null +++ b/.local/bin/rain @@ -0,0 +1,100 @@ +#!/bin/bash +RAINS=("|" "│" "┃" "┆" "┇" "┊" "┋" "╽" "╿") +COLORS=("\e[37m" "\e[37;1m") +# More from 256 color mode +for i in {244..255}; do + COLORS=("${COLORS[@]}" "\e[38;5;${i}m") +done +NRAINS=${#RAINS[@]} +NCOLORS=${#COLORS[@]} +NUM_RAIN_METADATA=5 + + +sigwinch() { + TERM_WIDTH=$(tput cols) + TERM_HEIGHT=$(tput lines) + STEP_DURATION=0.025 + ((MAX_RAINS = TERM_WIDTH * TERM_HEIGHT / 4)) + ((MAX_RAIN_LENGTH = TERM_HEIGHT < 10 ? 1 : TERM_HEIGHT / 10)) + # In percentage + ((NEW_RAIN_ODD = TERM_HEIGHT > 50 ? 100 : TERM_HEIGHT * 2)) + ((NEW_RAIN_ODD = NEW_RAIN_ODD * 75 / 100)) + ((FALLING_ODD = TERM_HEIGHT > 25 ? 100 : TERM_HEIGHT * 4)) + ((FALLING_ODD = FALLING_ODD * 90 / 100)) + } + +do_exit() { + echo -ne "\e[${TERM_HEIGHT};1H\e[0K" + + # Show cursor and echo stdin + echo -ne "\e[?25h" + stty echo + exit 0 + } + +do_render() { + # Clean screen first + for ((idx = 0; idx < num_rains * NUM_RAIN_METADATA; idx += NUM_RAIN_METADATA)); do + X=${rains[idx]} + Y=${rains[idx + 1]} + LENGTH=${rains[idx + 4]} + for ((y = Y; y < Y + LENGTH; y++)); do + (( y < 1 || y > TERM_HEIGHT )) && continue + echo -ne "\e[${y};${X}H " + done + done + + for ((idx = 0; idx < num_rains * NUM_RAIN_METADATA; idx += NUM_RAIN_METADATA)); do + if ((100 * RANDOM / 32768 < FALLING_ODD)); then + # Falling + if ((++rains[idx + 1] > TERM_HEIGHT)); then + # Out of screen, bye sweet <3 + rains=("${rains[@]:0:idx}" + "${rains[@]:idx+NUM_RAIN_METADATA:num_rains*NUM_RAIN_METADATA}") + ((num_rains--)) + continue + fi + fi + X=${rains[idx]} + Y=${rains[idx + 1]} + RAIN=${rains[idx + 2]} + COLOR=${rains[idx + 3]} + LENGTH=${rains[idx + 4]} + for ((y = Y; y < Y + LENGTH; y++)); do + (( y < 1 || y > TERM_HEIGHT )) && continue + echo -ne "\e[${y};${X}H${COLOR}${RAIN}" + done + done + } + +trap do_exit TERM INT +trap sigwinch WINCH +# No echo stdin and hide the cursor +stty -echo +echo -ne "\e[?25l" + +echo -ne "\e[2J" +rains=() +sigwinch +while :; do + read -n 1 -t $STEP_DURATION ch + case "$ch" in + q|Q) + do_exit + ;; + esac + + if ((num_rains < MAX_RAINS)) && ((100 * RANDOM / 32768 < NEW_RAIN_ODD)); then + # Need new |, 1-based + RAIN="${RAINS[NRAINS * RANDOM / 32768]}" + COLOR="${COLORS[NCOLORS * RANDOM / 32768]}" + LENGTH=$((MAX_RAIN_LENGTH * RANDOM / 32768 + 1)) + X=$((TERM_WIDTH * RANDOM / 32768 + 1)) + Y=$((1 - LENGTH)) + rains=("${rains[@]}" "$X" "$Y" "$RAIN" "$COLOR" "$LENGTH") + ((num_rains++)) + fi + + # Let rain fall! + do_render +done \ No newline at end of file diff --git a/.local/bin/readelf.py b/.local/bin/readelf.py new file mode 100755 index 0000000..3b7d182 --- /dev/null +++ b/.local/bin/readelf.py @@ -0,0 +1,1798 @@ +#!/usr/bin/python +#------------------------------------------------------------------------------- +# scripts/readelf.py +# +# A clone of 'readelf' in Python, based on the pyelftools library +# +# Eli Bendersky (eliben@gmail.com) +# This code is in the public domain +#------------------------------------------------------------------------------- +import argparse +import os, sys +import string +import traceback +import itertools +# Note: zip has different behaviour between Python 2.x and 3.x. +# - Using izip ensures compatibility. +try: + from itertools import izip +except: + izip = zip + +# For running from development directory. It should take precedence over the +# installed pyelftools. +sys.path.insert(0, '.') + + +from elftools import __version__ +from elftools.common.exceptions import ELFError +from elftools.common.py3compat import ( + ifilter, byte2int, bytes2str, itervalues, str2bytes, iterbytes) +from elftools.elf.elffile import ELFFile +from elftools.elf.dynamic import DynamicSection, DynamicSegment +from elftools.elf.enums import ENUM_D_TAG +from elftools.elf.segments import InterpSegment +from elftools.elf.sections import ( + NoteSection, SymbolTableSection, SymbolTableIndexSection +) +from elftools.elf.gnuversions import ( + GNUVerSymSection, GNUVerDefSection, + GNUVerNeedSection, + ) +from elftools.elf.relocation import RelocationSection +from elftools.elf.descriptions import ( + describe_ei_class, describe_ei_data, describe_ei_version, + describe_ei_osabi, describe_e_type, describe_e_machine, + describe_e_version_numeric, describe_p_type, describe_p_flags, + describe_rh_flags, describe_sh_type, describe_sh_flags, + describe_symbol_type, describe_symbol_bind, describe_symbol_visibility, + describe_symbol_shndx, describe_reloc_type, describe_dyn_tag, + describe_dt_flags, describe_dt_flags_1, describe_ver_flags, describe_note, + describe_attr_tag_arm, describe_symbol_other + ) +from elftools.elf.constants import E_FLAGS +from elftools.elf.constants import E_FLAGS_MASKS +from elftools.elf.constants import SH_FLAGS +from elftools.elf.constants import SHN_INDICES +from elftools.dwarf.dwarfinfo import DWARFInfo +from elftools.dwarf.descriptions import ( + describe_reg_name, describe_attr_value, set_global_machine_arch, + describe_CFI_instructions, describe_CFI_register_rule, + describe_CFI_CFA_rule, describe_DWARF_expr + ) +from elftools.dwarf.constants import ( + DW_LNS_copy, DW_LNS_set_file, DW_LNE_define_file) +from elftools.dwarf.locationlists import LocationParser, LocationEntry, LocationViewPair, BaseAddressEntry as LocBaseAddressEntry, LocationListsPair +from elftools.dwarf.ranges import RangeEntry, BaseAddressEntry as RangeBaseAddressEntry, RangeListsPair +from elftools.dwarf.callframe import CIE, FDE, ZERO +from elftools.ehabi.ehabiinfo import CorruptEHABIEntry, CannotUnwindEHABIEntry, GenericEHABIEntry +from elftools.dwarf.enums import ENUM_DW_UT + +def _get_cu_base(cu): + top_die = cu.get_top_DIE() + attr = top_die.attributes + if 'DW_AT_low_pc' in attr: + return attr['DW_AT_low_pc'].value + elif 'DW_AT_entry_pc' in attr: + return attr['DW_AT_entry_pc'].value + elif 'DW_AT_ranges' in attr: + # Rare case but happens: rangelist in the top DIE. + # If there is a base or at least one absolute entry, + # this will give us the base IP for the CU. + rl = cu.dwarfinfo.range_lists().get_range_list_at_offset(attr['DW_AT_ranges'].value, cu) + base_ip = None + for r in rl: + if isinstance(r, RangeBaseAddressEntry): + ip = r.base_address + elif isinstance(r, RangeEntry) and r.is_absolute: + ip = r.begin_offset + else: + ip = None + if ip is not None and (base_ip is None or ip < base_ip): + base_ip = ip + if base_ip is None: + raise ValueError("Can't find the base IP (low_pc) for a CU") + return base_ip + else: + raise ValueError("Can't find the base IP (low_pc) for a CU") + +class ReadElf(object): + """ display_* methods are used to emit output into the output stream + """ + def __init__(self, file, output): + """ file: + stream object with the ELF file to read + + output: + output stream to write to + """ + self.elffile = ELFFile(file) + self.output = output + + # Lazily initialized if a debug dump is requested + self._dwarfinfo = None + + self._versioninfo = None + + self._shndx_sections = None + + def display_file_header(self): + """ Display the ELF file header + """ + self._emitline('ELF Header:') + self._emit(' Magic: ') + self._emit(' '.join('%2.2x' % byte2int(b) + for b in self.elffile.e_ident_raw)) + self._emitline(' ') + header = self.elffile.header + e_ident = header['e_ident'] + self._emitline(' Class: %s' % + describe_ei_class(e_ident['EI_CLASS'])) + self._emitline(' Data: %s' % + describe_ei_data(e_ident['EI_DATA'])) + self._emitline(' Version: %s' % + describe_ei_version(e_ident['EI_VERSION'])) + self._emitline(' OS/ABI: %s' % + describe_ei_osabi(e_ident['EI_OSABI'])) + self._emitline(' ABI Version: %d' % + e_ident['EI_ABIVERSION']) + self._emitline(' Type: %s' % + describe_e_type(header['e_type'], self.elffile)) + self._emitline(' Machine: %s' % + describe_e_machine(header['e_machine'])) + self._emitline(' Version: %s' % + describe_e_version_numeric(header['e_version'])) + self._emitline(' Entry point address: %s' % + self._format_hex(header['e_entry'])) + self._emit(' Start of program headers: %s' % + header['e_phoff']) + self._emitline(' (bytes into file)') + self._emit(' Start of section headers: %s' % + header['e_shoff']) + self._emitline(' (bytes into file)') + self._emitline(' Flags: %s%s' % + (self._format_hex(header['e_flags']), + self.decode_flags(header['e_flags']))) + self._emitline(' Size of this header: %s (bytes)' % + header['e_ehsize']) + self._emitline(' Size of program headers: %s (bytes)' % + header['e_phentsize']) + self._emitline(' Number of program headers: %s' % + header['e_phnum']) + self._emitline(' Size of section headers: %s (bytes)' % + header['e_shentsize']) + self._emit(' Number of section headers: %s' % + header['e_shnum']) + if header['e_shnum'] == 0 and self.elffile.num_sections() != 0: + self._emitline(' (%d)' % self.elffile.num_sections()) + else: + self._emitline('') + self._emit(' Section header string table index: %s' % + header['e_shstrndx']) + if header['e_shstrndx'] == SHN_INDICES.SHN_XINDEX: + self._emitline(' (%d)' % self.elffile.get_shstrndx()) + else: + self._emitline('') + + def decode_flags(self, flags): + description = "" + if self.elffile['e_machine'] == "EM_ARM": + eabi = flags & E_FLAGS.EF_ARM_EABIMASK + flags &= ~E_FLAGS.EF_ARM_EABIMASK + + if flags & E_FLAGS.EF_ARM_RELEXEC: + description += ', relocatable executabl' + flags &= ~E_FLAGS.EF_ARM_RELEXEC + + if eabi == E_FLAGS.EF_ARM_EABI_VER5: + EF_ARM_KNOWN_FLAGS = E_FLAGS.EF_ARM_ABI_FLOAT_SOFT|E_FLAGS.EF_ARM_ABI_FLOAT_HARD|E_FLAGS.EF_ARM_LE8|E_FLAGS.EF_ARM_BE8 + description += ', Version5 EABI' + if flags & E_FLAGS.EF_ARM_ABI_FLOAT_SOFT: + description += ", soft-float ABI" + elif flags & E_FLAGS.EF_ARM_ABI_FLOAT_HARD: + description += ", hard-float ABI" + + if flags & E_FLAGS.EF_ARM_BE8: + description += ", BE8" + elif flags & E_FLAGS.EF_ARM_LE8: + description += ", LE8" + + if flags & ~EF_ARM_KNOWN_FLAGS: + description += ', ' + else: + description += ', ' + + elif self.elffile['e_machine'] == 'EM_PPC64': + if flags & E_FLAGS.EF_PPC64_ABI_V2: + description += ', abiv2' + + elif self.elffile['e_machine'] == "EM_MIPS": + if flags & E_FLAGS.EF_MIPS_NOREORDER: + description += ", noreorder" + if flags & E_FLAGS.EF_MIPS_PIC: + description += ", pic" + if flags & E_FLAGS.EF_MIPS_CPIC: + description += ", cpic" + if (flags & E_FLAGS.EF_MIPS_ABI2): + description += ", abi2" + if (flags & E_FLAGS.EF_MIPS_32BITMODE): + description += ", 32bitmode" + if (flags & E_FLAGS_MASKS.EFM_MIPS_ABI_O32): + description += ", o32" + elif (flags & E_FLAGS_MASKS.EFM_MIPS_ABI_O64): + description += ", o64" + elif (flags & E_FLAGS_MASKS.EFM_MIPS_ABI_EABI32): + description += ", eabi32" + elif (flags & E_FLAGS_MASKS.EFM_MIPS_ABI_EABI64): + description += ", eabi64" + if (flags & E_FLAGS.EF_MIPS_ARCH) == E_FLAGS.EF_MIPS_ARCH_1: + description += ", mips1" + if (flags & E_FLAGS.EF_MIPS_ARCH) == E_FLAGS.EF_MIPS_ARCH_2: + description += ", mips2" + if (flags & E_FLAGS.EF_MIPS_ARCH) == E_FLAGS.EF_MIPS_ARCH_3: + description += ", mips3" + if (flags & E_FLAGS.EF_MIPS_ARCH) == E_FLAGS.EF_MIPS_ARCH_4: + description += ", mips4" + if (flags & E_FLAGS.EF_MIPS_ARCH) == E_FLAGS.EF_MIPS_ARCH_5: + description += ", mips5" + if (flags & E_FLAGS.EF_MIPS_ARCH) == E_FLAGS.EF_MIPS_ARCH_32R2: + description += ", mips32r2" + if (flags & E_FLAGS.EF_MIPS_ARCH) == E_FLAGS.EF_MIPS_ARCH_64R2: + description += ", mips64r2" + if (flags & E_FLAGS.EF_MIPS_ARCH) == E_FLAGS.EF_MIPS_ARCH_32: + description += ", mips32" + if (flags & E_FLAGS.EF_MIPS_ARCH) == E_FLAGS.EF_MIPS_ARCH_64: + description += ", mips64" + + return description + + def display_program_headers(self, show_heading=True): + """ Display the ELF program headers. + If show_heading is True, displays the heading for this information + (Elf file type is...) + """ + self._emitline() + if self.elffile.num_segments() == 0: + self._emitline('There are no program headers in this file.') + return + + elfheader = self.elffile.header + if show_heading: + self._emitline('Elf file type is %s' % + describe_e_type(elfheader['e_type'], self.elffile)) + self._emitline('Entry point is %s' % + self._format_hex(elfheader['e_entry'])) + # readelf weirness - why isn't e_phoff printed as hex? (for section + # headers, it is...) + self._emitline('There are %s program headers, starting at offset %s' % ( + self.elffile.num_segments(), elfheader['e_phoff'])) + self._emitline() + + self._emitline('Program Headers:') + + # Now comes the table of program headers with their attributes. Note + # that due to different formatting constraints of 32-bit and 64-bit + # addresses, there are some conditions on elfclass here. + # + # First comes the table heading + # + if self.elffile.elfclass == 32: + self._emitline(' Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align') + else: + self._emitline(' Type Offset VirtAddr PhysAddr') + self._emitline(' FileSiz MemSiz Flags Align') + + # Now the entries + # + for segment in self.elffile.iter_segments(): + self._emit(' %-14s ' % describe_p_type(segment['p_type'])) + + if self.elffile.elfclass == 32: + self._emitline('%s %s %s %s %s %-3s %s' % ( + self._format_hex(segment['p_offset'], fieldsize=6), + self._format_hex(segment['p_vaddr'], fullhex=True), + self._format_hex(segment['p_paddr'], fullhex=True), + self._format_hex(segment['p_filesz'], fieldsize=5), + self._format_hex(segment['p_memsz'], fieldsize=5), + describe_p_flags(segment['p_flags']), + self._format_hex(segment['p_align']))) + else: # 64 + self._emitline('%s %s %s' % ( + self._format_hex(segment['p_offset'], fullhex=True), + self._format_hex(segment['p_vaddr'], fullhex=True), + self._format_hex(segment['p_paddr'], fullhex=True))) + self._emitline(' %s %s %-3s %s' % ( + self._format_hex(segment['p_filesz'], fullhex=True), + self._format_hex(segment['p_memsz'], fullhex=True), + describe_p_flags(segment['p_flags']), + # lead0x set to False for p_align, to mimic readelf. + # No idea why the difference from 32-bit mode :-| + self._format_hex(segment['p_align'], lead0x=False))) + + if isinstance(segment, InterpSegment): + self._emitline(' [Requesting program interpreter: %s]' % + segment.get_interp_name()) + + # Sections to segments mapping + # + if self.elffile.num_sections() == 0: + # No sections? We're done + return + + self._emitline('\n Section to Segment mapping:') + self._emitline(' Segment Sections...') + + for nseg, segment in enumerate(self.elffile.iter_segments()): + self._emit(' %2.2d ' % nseg) + + for section in self.elffile.iter_sections(): + if ( not section.is_null() and + not ((section['sh_flags'] & SH_FLAGS.SHF_TLS) != 0 and + section['sh_type'] == 'SHT_NOBITS' and + segment['p_type'] != 'PT_TLS') and + segment.section_in_segment(section)): + self._emit('%s ' % section.name) + + self._emitline('') + + def display_section_headers(self, show_heading=True): + """ Display the ELF section headers + """ + elfheader = self.elffile.header + if show_heading: + self._emitline('There are %s section headers, starting at offset %s' % ( + elfheader['e_shnum'], self._format_hex(elfheader['e_shoff']))) + + if self.elffile.num_sections() == 0: + self._emitline('There are no sections in this file.') + return + + self._emitline('\nSection Header%s:' % ( + 's' if self.elffile.num_sections() > 1 else '')) + + # Different formatting constraints of 32-bit and 64-bit addresses + # + if self.elffile.elfclass == 32: + self._emitline(' [Nr] Name Type Addr Off Size ES Flg Lk Inf Al') + else: + self._emitline(' [Nr] Name Type Address Offset') + self._emitline(' Size EntSize Flags Link Info Align') + + # Now the entries + # + for nsec, section in enumerate(self.elffile.iter_sections()): + self._emit(' [%2u] %-17.17s %-15.15s ' % ( + nsec, section.name, describe_sh_type(section['sh_type']))) + + if self.elffile.elfclass == 32: + self._emitline('%s %s %s %s %3s %2s %3s %2s' % ( + self._format_hex(section['sh_addr'], fieldsize=8, lead0x=False), + self._format_hex(section['sh_offset'], fieldsize=6, lead0x=False), + self._format_hex(section['sh_size'], fieldsize=6, lead0x=False), + self._format_hex(section['sh_entsize'], fieldsize=2, lead0x=False), + describe_sh_flags(section['sh_flags']), + section['sh_link'], section['sh_info'], + section['sh_addralign'])) + else: # 64 + self._emitline(' %s %s' % ( + self._format_hex(section['sh_addr'], fullhex=True, lead0x=False), + self._format_hex(section['sh_offset'], + fieldsize=16 if section['sh_offset'] > 0xffffffff else 8, + lead0x=False))) + self._emitline(' %s %s %3s %2s %3s %s' % ( + self._format_hex(section['sh_size'], fullhex=True, lead0x=False), + self._format_hex(section['sh_entsize'], fullhex=True, lead0x=False), + describe_sh_flags(section['sh_flags']), + section['sh_link'], section['sh_info'], + section['sh_addralign'])) + + self._emitline('Key to Flags:') + self._emitline(' W (write), A (alloc), X (execute), M (merge),' + ' S (strings), I (info),') + self._emitline(' L (link order), O (extra OS processing required),' + ' G (group), T (TLS),') + self._emitline(' C (compressed), x (unknown), o (OS specific),' + ' E (exclude),') + self._emit(' ') + if self.elffile['e_machine'] == 'EM_ARM': + self._emit('y (purecode), ') + self._emitline('p (processor specific)') + + def display_symbol_tables(self): + """ Display the symbol tables contained in the file + """ + self._init_versioninfo() + + symbol_tables = [(idx, s) for idx, s in enumerate(self.elffile.iter_sections()) + if isinstance(s, SymbolTableSection)] + + if not symbol_tables and self.elffile.num_sections() == 0: + self._emitline('') + self._emitline('Dynamic symbol information is not available for' + ' displaying symbols.') + + for section_index, section in symbol_tables: + if not isinstance(section, SymbolTableSection): + continue + + if section['sh_entsize'] == 0: + self._emitline("\nSymbol table '%s' has a sh_entsize of zero!" % ( + section.name)) + continue + + self._emitline("\nSymbol table '%s' contains %d %s:" % ( + section.name, + section.num_symbols(), + 'entry' if section.num_symbols() == 1 else 'entries')) + + if self.elffile.elfclass == 32: + self._emitline(' Num: Value Size Type Bind Vis Ndx Name') + else: # 64 + self._emitline(' Num: Value Size Type Bind Vis Ndx Name') + + for nsym, symbol in enumerate(section.iter_symbols()): + version_info = '' + # readelf doesn't display version info for Solaris versioning + if (section['sh_type'] == 'SHT_DYNSYM' and + self._versioninfo['type'] == 'GNU'): + version = self._symbol_version(nsym) + if (version['name'] != symbol.name and + version['index'] not in ('VER_NDX_LOCAL', + 'VER_NDX_GLOBAL')): + if version['filename']: + # external symbol + version_info = '@%(name)s (%(index)i)' % version + else: + # internal symbol + if version['hidden']: + version_info = '@%(name)s' % version + else: + version_info = '@@%(name)s' % version + + symbol_name = symbol.name + # Print section names for STT_SECTION symbols as readelf does + if (symbol['st_info']['type'] == 'STT_SECTION' + and symbol['st_shndx'] < self.elffile.num_sections() + and symbol['st_name'] == 0): + symbol_name = self.elffile.get_section(symbol['st_shndx']).name + + # symbol names are truncated to 25 chars, similarly to readelf + self._emitline('%6d: %s %s %-7s %-6s %-7s %4s %.25s%s' % ( + nsym, + self._format_hex( + symbol['st_value'], fullhex=True, lead0x=False), + "%5d" % symbol['st_size'] if symbol['st_size'] < 100000 else hex(symbol['st_size']), + describe_symbol_type(symbol['st_info']['type']), + describe_symbol_bind(symbol['st_info']['bind']), + describe_symbol_other(symbol['st_other']), + describe_symbol_shndx(self._get_symbol_shndx(symbol, + nsym, + section_index)), + symbol_name, + version_info)) + + def display_dynamic_tags(self): + """ Display the dynamic tags contained in the file + """ + has_dynamic_sections = False + for section in self.elffile.iter_sections(): + if not isinstance(section, DynamicSection): + continue + + has_dynamic_sections = True + self._emitline("\nDynamic section at offset %s contains %d %s:" % ( + self._format_hex(section['sh_offset']), + section.num_tags(), + 'entry' if section.num_tags() == 1 else 'entries')) + self._emitline(" Tag Type Name/Value") + + padding = 20 + (8 if self.elffile.elfclass == 32 else 0) + for tag in section.iter_tags(): + if tag.entry.d_tag == 'DT_NEEDED': + parsed = 'Shared library: [%s]' % tag.needed + elif tag.entry.d_tag == 'DT_RPATH': + parsed = 'Library rpath: [%s]' % tag.rpath + elif tag.entry.d_tag == 'DT_RUNPATH': + parsed = 'Library runpath: [%s]' % tag.runpath + elif tag.entry.d_tag == 'DT_SONAME': + parsed = 'Library soname: [%s]' % tag.soname + elif tag.entry.d_tag.endswith(('SZ', 'ENT')): + parsed = '%i (bytes)' % tag['d_val'] + elif tag.entry.d_tag == 'DT_FLAGS': + parsed = describe_dt_flags(tag.entry.d_val) + elif tag.entry.d_tag == 'DT_FLAGS_1': + parsed = 'Flags: %s' % describe_dt_flags_1(tag.entry.d_val) + elif tag.entry.d_tag.endswith(('NUM', 'COUNT')): + parsed = '%i' % tag['d_val'] + elif tag.entry.d_tag == 'DT_PLTREL': + s = describe_dyn_tag(tag.entry.d_val) + if s.startswith('DT_'): + s = s[3:] + parsed = '%s' % s + elif tag.entry.d_tag == 'DT_MIPS_FLAGS': + parsed = describe_rh_flags(tag.entry.d_val) + elif tag.entry.d_tag in ('DT_MIPS_SYMTABNO', + 'DT_MIPS_LOCAL_GOTNO'): + parsed = str(tag.entry.d_val) + else: + parsed = '%#x' % tag['d_val'] + + self._emitline(" %s %-*s %s" % ( + self._format_hex(ENUM_D_TAG.get(tag.entry.d_tag, tag.entry.d_tag), + fullhex=True, lead0x=True), + padding, + '(%s)' % (tag.entry.d_tag[3:],), + parsed)) + if not has_dynamic_sections: + self._emitline("\nThere is no dynamic section in this file.") + + def display_notes(self): + """ Display the notes contained in the file + """ + for section in self.elffile.iter_sections(): + if isinstance(section, NoteSection): + for note in section.iter_notes(): + self._emitline("\nDisplaying notes found in: {}".format( + section.name)) + self._emitline(' Owner Data size Description') + self._emitline(' %s %s\t%s' % ( + note['n_name'].ljust(20), + self._format_hex(note['n_descsz'], fieldsize=8), + describe_note(note))) + + def display_relocations(self): + """ Display the relocations contained in the file + """ + has_relocation_sections = False + for section in self.elffile.iter_sections(): + if not isinstance(section, RelocationSection): + continue + + has_relocation_sections = True + self._emitline("\nRelocation section '%.128s' at offset %s contains %d %s:" % ( + section.name, + self._format_hex(section['sh_offset']), + section.num_relocations(), + 'entry' if section.num_relocations() == 1 else 'entries')) + if section.is_RELA(): + self._emitline(" Offset Info Type Sym. Value Sym. Name + Addend") + else: + self._emitline(" Offset Info Type Sym.Value Sym. Name") + + # The symbol table section pointed to in sh_link + symtable = self.elffile.get_section(section['sh_link']) + + for rel in section.iter_relocations(): + hexwidth = 8 if self.elffile.elfclass == 32 else 12 + self._emit('%s %s %-17.17s' % ( + self._format_hex(rel['r_offset'], + fieldsize=hexwidth, lead0x=False), + self._format_hex(rel['r_info'], + fieldsize=hexwidth, lead0x=False), + describe_reloc_type( + rel['r_info_type'], self.elffile))) + + if rel['r_info_sym'] == 0: + if section.is_RELA(): + fieldsize = 8 if self.elffile.elfclass == 32 else 16 + addend = self._format_hex(rel['r_addend'], lead0x=False) + self._emit(' %s %s' % (' ' * fieldsize, addend)) + self._emitline() + + else: + symbol = symtable.get_symbol(rel['r_info_sym']) + # Some symbols have zero 'st_name', so instead what's used + # is the name of the section they point at. Truncate symbol + # names (excluding version info) to 22 chars, similarly to + # readelf. + if symbol['st_name'] == 0: + symsecidx = self._get_symbol_shndx(symbol, + rel['r_info_sym'], + section['sh_link']) + symsec = self.elffile.get_section(symsecidx) + symbol_name = symsec.name + version = '' + else: + symbol_name = symbol.name + version = self._symbol_version(rel['r_info_sym']) + version = (version['name'] + if version and version['name'] else '') + symbol_name = '%.22s' % symbol_name + if version: + symbol_name += '@' + version + + self._emit(' %s %s' % ( + self._format_hex( + symbol['st_value'], + fullhex=True, lead0x=False), + symbol_name)) + if section.is_RELA(): + self._emit(' %s %x' % ( + '+' if rel['r_addend'] >= 0 else '-', + abs(rel['r_addend']))) + self._emitline() + + # Emit the two additional relocation types for ELF64 MIPS + # binaries. + if (self.elffile.elfclass == 64 and + self.elffile['e_machine'] == 'EM_MIPS'): + for i in (2, 3): + rtype = rel['r_info_type%s' % i] + self._emit(' Type%s: %s' % ( + i, + describe_reloc_type(rtype, self.elffile))) + self._emitline() + + if not has_relocation_sections: + self._emitline('\nThere are no relocations in this file.') + + def display_arm_unwind(self): + if not self.elffile.has_ehabi_info(): + self._emitline('There are no .ARM.idx sections in this file.') + return + for ehabi_info in self.elffile.get_ehabi_infos(): + # Unwind section '.ARM.exidx' at offset 0x203e8 contains 1009 entries: + self._emitline("\nUnwind section '%s' at offset 0x%x contains %d %s" % ( + ehabi_info.section_name(), + ehabi_info.section_offset(), + ehabi_info.num_entry(), + 'entry' if ehabi_info.num_entry() == 1 else 'entries')) + + for i in range(ehabi_info.num_entry()): + entry = ehabi_info.get_entry(i) + self._emitline() + self._emitline("Entry %d:" % i) + if isinstance(entry, CorruptEHABIEntry): + self._emitline(" [corrupt] %s" % entry.reason) + continue + self._emit(" Function offset 0x%x: " % entry.function_offset) + if isinstance(entry, CannotUnwindEHABIEntry): + self._emitline("[cantunwind]") + continue + elif entry.eh_table_offset: + self._emitline("@0x%x" % entry.eh_table_offset) + else: + self._emitline("Compact (inline)") + if isinstance(entry, GenericEHABIEntry): + self._emitline(" Personality: 0x%x" % entry.personality) + else: + self._emitline(" Compact model index: %d" % entry.personality) + for mnemonic_item in entry.mnmemonic_array(): + self._emit(' ') + self._emitline(mnemonic_item) + + def display_version_info(self): + """ Display the version info contained in the file + """ + self._init_versioninfo() + + if not self._versioninfo['type']: + self._emitline("\nNo version information found in this file.") + return + + for section in self.elffile.iter_sections(): + if isinstance(section, GNUVerSymSection): + self._print_version_section_header(section, 'Version symbols') + num_symbols = section.num_symbols() + + # Symbol version info are printed four by four entries + for idx_by_4 in range(0, num_symbols, 4): + + self._emit(' %03x:' % idx_by_4) + + for idx in range(idx_by_4, min(idx_by_4 + 4, num_symbols)): + + symbol_version = self._symbol_version(idx) + if symbol_version['index'] == 'VER_NDX_LOCAL': + version_index = 0 + version_name = '(*local*)' + elif symbol_version['index'] == 'VER_NDX_GLOBAL': + version_index = 1 + version_name = '(*global*)' + else: + version_index = symbol_version['index'] + version_name = '(%(name)s)' % symbol_version + + visibility = 'h' if symbol_version['hidden'] else ' ' + + self._emit('%4x%s%-13s' % ( + version_index, visibility, version_name)) + + self._emitline() + + elif isinstance(section, GNUVerDefSection): + self._print_version_section_header( + section, 'Version definition', indent=2) + + offset = 0 + for verdef, verdaux_iter in section.iter_versions(): + verdaux = next(verdaux_iter) + + name = verdaux.name + if verdef['vd_flags']: + flags = describe_ver_flags(verdef['vd_flags']) + # Mimic exactly the readelf output + flags += ' ' + else: + flags = 'none' + + self._emitline(' %s: Rev: %i Flags: %s Index: %i' + ' Cnt: %i Name: %s' % ( + self._format_hex(offset, fieldsize=6, + alternate=True), + verdef['vd_version'], flags, verdef['vd_ndx'], + verdef['vd_cnt'], name)) + + verdaux_offset = ( + offset + verdef['vd_aux'] + verdaux['vda_next']) + for idx, verdaux in enumerate(verdaux_iter, start=1): + self._emitline(' %s: Parent %i: %s' % + (self._format_hex(verdaux_offset, fieldsize=4), + idx, verdaux.name)) + verdaux_offset += verdaux['vda_next'] + + offset += verdef['vd_next'] + + elif isinstance(section, GNUVerNeedSection): + self._print_version_section_header(section, 'Version needs') + + offset = 0 + for verneed, verneed_iter in section.iter_versions(): + + self._emitline(' %s: Version: %i File: %s Cnt: %i' % ( + self._format_hex(offset, fieldsize=6, + alternate=True), + verneed['vn_version'], verneed.name, + verneed['vn_cnt'])) + + vernaux_offset = offset + verneed['vn_aux'] + for idx, vernaux in enumerate(verneed_iter, start=1): + if vernaux['vna_flags']: + flags = describe_ver_flags(vernaux['vna_flags']) + # Mimic exactly the readelf output + flags += ' ' + else: + flags = 'none' + + self._emitline( + ' %s: Name: %s Flags: %s Version: %i' % ( + self._format_hex(vernaux_offset, fieldsize=4), + vernaux.name, flags, + vernaux['vna_other'])) + + vernaux_offset += vernaux['vna_next'] + + offset += verneed['vn_next'] + + def display_arch_specific(self): + """ Display the architecture-specific info contained in the file. + """ + if self.elffile['e_machine'] == 'EM_ARM': + self._display_arch_specific_arm() + + def display_hex_dump(self, section_spec): + """ Display a hex dump of a section. section_spec is either a section + number or a name. + """ + section = self._section_from_spec(section_spec) + if section is None: + # readelf prints the warning to stderr. Even though stderrs are not compared + # in tests, we comply with that behavior. + sys.stderr.write('readelf: Warning: Section \'%s\' was not dumped because it does not exist!\n' % ( + section_spec)) + return + if section['sh_type'] == 'SHT_NOBITS': + self._emitline("\nSection '%s' has no data to dump." % ( + section_spec)) + return + + self._emitline("\nHex dump of section '%s':" % section.name) + self._note_relocs_for_section(section) + addr = section['sh_addr'] + data = section.data() + dataptr = 0 + + while dataptr < len(data): + bytesleft = len(data) - dataptr + # chunks of 16 bytes per line + linebytes = 16 if bytesleft > 16 else bytesleft + + self._emit(' %s ' % self._format_hex(addr, fieldsize=8)) + for i in range(16): + if i < linebytes: + self._emit('%2.2x' % byte2int(data[dataptr + i])) + else: + self._emit(' ') + if i % 4 == 3: + self._emit(' ') + + for i in range(linebytes): + c = data[dataptr + i : dataptr + i + 1] + if byte2int(c[0]) >= 32 and byte2int(c[0]) < 0x7f: + self._emit(bytes2str(c)) + else: + self._emit(bytes2str(b'.')) + + self._emitline() + addr += linebytes + dataptr += linebytes + + self._emitline() + + def display_string_dump(self, section_spec): + """ Display a strings dump of a section. section_spec is either a + section number or a name. + """ + section = self._section_from_spec(section_spec) + if section is None: + # readelf prints the warning to stderr. Even though stderrs are not compared + # in tests, we comply with that behavior. + sys.stderr.write('readelf.py: Warning: Section \'%s\' was not dumped because it does not exist!\n' % ( + section_spec)) + return + if section['sh_type'] == 'SHT_NOBITS': + self._emitline("\nSection '%s' has no data to dump." % ( + section_spec)) + return + + self._emitline("\nString dump of section '%s':" % section.name) + + found = False + data = section.data() + dataptr = 0 + + while dataptr < len(data): + while ( dataptr < len(data) and + not (32 <= byte2int(data[dataptr]) <= 127)): + dataptr += 1 + + if dataptr >= len(data): + break + + endptr = dataptr + while endptr < len(data) and byte2int(data[endptr]) != 0: + endptr += 1 + + found = True + self._emitline(' [%6x] %s' % ( + dataptr, bytes2str(data[dataptr:endptr]))) + + dataptr = endptr + + if not found: + self._emitline(' No strings found in this section.') + else: + self._emitline() + + def display_debug_dump(self, dump_what): + """ Dump a DWARF section + """ + self._init_dwarfinfo() + if self._dwarfinfo is None: + return + + set_global_machine_arch(self.elffile.get_machine_arch()) + + if dump_what == 'info': + self._dump_debug_info() + elif dump_what == 'decodedline': + self._dump_debug_line_programs() + elif dump_what == 'frames': + self._dump_debug_frames() + elif dump_what == 'frames-interp': + self._dump_debug_frames_interp() + elif dump_what == 'aranges': + self._dump_debug_aranges() + elif dump_what in { 'pubtypes', 'pubnames' }: + self._dump_debug_namelut(dump_what) + elif dump_what == 'loc': + self._dump_debug_locations() + elif dump_what == 'Ranges': + self._dump_debug_ranges() + else: + self._emitline('debug dump not yet supported for "%s"' % dump_what) + + def _format_hex(self, addr, fieldsize=None, fullhex=False, lead0x=True, + alternate=False): + """ Format an address into a hexadecimal string. + + fieldsize: + Size of the hexadecimal field (with leading zeros to fit the + address into. For example with fieldsize=8, the format will + be %08x + If None, the minimal required field size will be used. + + fullhex: + If True, override fieldsize to set it to the maximal size + needed for the elfclass + + lead0x: + If True, leading 0x is added + + alternate: + If True, override lead0x to emulate the alternate + hexadecimal form specified in format string with the # + character: only non-zero values are prefixed with 0x. + This form is used by readelf. + """ + if alternate: + if addr == 0: + lead0x = False + else: + lead0x = True + fieldsize -= 2 + + s = '0x' if lead0x else '' + if fullhex: + fieldsize = 8 if self.elffile.elfclass == 32 else 16 + if fieldsize is None: + field = '%x' + else: + field = '%' + '0%sx' % fieldsize + return s + field % addr + + def _print_version_section_header(self, version_section, name, lead0x=True, + indent=1): + """ Print a section header of one version related section (versym, + verneed or verdef) with some options to accomodate readelf + little differences between each header (e.g. indentation + and 0x prefixing). + """ + if hasattr(version_section, 'num_versions'): + num_entries = version_section.num_versions() + else: + num_entries = version_section.num_symbols() + + self._emitline("\n%s section '%s' contains %d %s:" % ( + name, version_section.name, num_entries, + 'entry' if num_entries == 1 else 'entries')) + self._emitline('%sAddr: %s Offset: %s Link: %i (%s)' % ( + ' ' * indent, + self._format_hex( + version_section['sh_addr'], fieldsize=16, lead0x=lead0x), + self._format_hex( + version_section['sh_offset'], fieldsize=6, lead0x=True), + version_section['sh_link'], + self.elffile.get_section(version_section['sh_link']).name + ) + ) + + def _init_versioninfo(self): + """ Search and initialize informations about version related sections + and the kind of versioning used (GNU or Solaris). + """ + if self._versioninfo is not None: + return + + self._versioninfo = {'versym': None, 'verdef': None, + 'verneed': None, 'type': None} + + for section in self.elffile.iter_sections(): + if isinstance(section, GNUVerSymSection): + self._versioninfo['versym'] = section + elif isinstance(section, GNUVerDefSection): + self._versioninfo['verdef'] = section + elif isinstance(section, GNUVerNeedSection): + self._versioninfo['verneed'] = section + elif isinstance(section, DynamicSection): + for tag in section.iter_tags(): + if tag['d_tag'] == 'DT_VERSYM': + self._versioninfo['type'] = 'GNU' + break + + if not self._versioninfo['type'] and ( + self._versioninfo['verneed'] or self._versioninfo['verdef']): + self._versioninfo['type'] = 'Solaris' + + def _symbol_version(self, nsym): + """ Return a dict containing information on the + or None if no version information is available + """ + self._init_versioninfo() + + symbol_version = dict.fromkeys(('index', 'name', 'filename', 'hidden')) + + if (not self._versioninfo['versym'] or + nsym >= self._versioninfo['versym'].num_symbols()): + return None + + symbol = self._versioninfo['versym'].get_symbol(nsym) + index = symbol.entry['ndx'] + if not index in ('VER_NDX_LOCAL', 'VER_NDX_GLOBAL'): + index = int(index) + + if self._versioninfo['type'] == 'GNU': + # In GNU versioning mode, the highest bit is used to + # store whether the symbol is hidden or not + if index & 0x8000: + index &= ~0x8000 + symbol_version['hidden'] = True + + if (self._versioninfo['verdef'] and + index <= self._versioninfo['verdef'].num_versions()): + _, verdaux_iter = \ + self._versioninfo['verdef'].get_version(index) + symbol_version['name'] = next(verdaux_iter).name + else: + verneed, vernaux = \ + self._versioninfo['verneed'].get_version(index) + symbol_version['name'] = vernaux.name + symbol_version['filename'] = verneed.name + + symbol_version['index'] = index + return symbol_version + + def _section_from_spec(self, spec): + """ Retrieve a section given a "spec" (either number or name). + Return None if no such section exists in the file. + """ + try: + num = int(spec) + if num < self.elffile.num_sections(): + return self.elffile.get_section(num) + else: + return None + except ValueError: + # Not a number. Must be a name then + return self.elffile.get_section_by_name(spec) + + def _get_symbol_shndx(self, symbol, symbol_index, symtab_index): + """ Get the index into the section header table for the "symbol" + at "symbol_index" located in the symbol table with section index + "symtab_index". + """ + symbol_shndx = symbol['st_shndx'] + if symbol_shndx != SHN_INDICES.SHN_XINDEX: + return symbol_shndx + + # Check for or lazily construct index section mapping (symbol table + # index -> corresponding symbol table index section object) + if self._shndx_sections is None: + self._shndx_sections = {sec.symboltable: sec for sec in self.elffile.iter_sections() + if isinstance(sec, SymbolTableIndexSection)} + return self._shndx_sections[symtab_index].get_section_index(symbol_index) + + def _note_relocs_for_section(self, section): + """ If there are relocation sections pointing to the givne section, + emit a note about it. + """ + for relsec in self.elffile.iter_sections(): + if isinstance(relsec, RelocationSection): + info_idx = relsec['sh_info'] + if self.elffile.get_section(info_idx) == section: + self._emitline(' Note: This section has relocations against it, but these have NOT been applied to this dump.') + return + + def _init_dwarfinfo(self): + """ Initialize the DWARF info contained in the file and assign it to + self._dwarfinfo. + Leave self._dwarfinfo at None if no DWARF info was found in the file + """ + if self._dwarfinfo is not None: + return + + if self.elffile.has_dwarf_info(): + self._dwarfinfo = self.elffile.get_dwarf_info() + else: + self._dwarfinfo = None + + def _dump_debug_info(self): + """ Dump the debugging info section. + """ + if not self._dwarfinfo.has_debug_info: + return + self._emitline('Contents of the %s section:\n' % self._dwarfinfo.debug_info_sec.name) + + # Offset of the .debug_info section in the stream + section_offset = self._dwarfinfo.debug_info_sec.global_offset + + for cu in self._dwarfinfo.iter_CUs(): + self._emitline(' Compilation Unit @ offset %s:' % + self._format_hex(cu.cu_offset)) + self._emitline(' Length: %s (%s)' % ( + self._format_hex(cu['unit_length']), + '%s-bit' % cu.dwarf_format())) + self._emitline(' Version: %s' % cu['version']) + if cu.header.get("unit_type", False): + ut = next((key for key, value in ENUM_DW_UT.items() if value == cu.header.unit_type), '?') + self._emitline(' Unit Type: %s (%d)' % (ut, cu.header.unit_type)) + self._emitline(' Abbrev Offset: %s' % ( + self._format_hex(cu['debug_abbrev_offset']))), + self._emitline(' Pointer Size: %s' % cu['address_size']) + + # The nesting depth of each DIE within the tree of DIEs must be + # displayed. To implement this, a counter is incremented each time + # the current DIE has children, and decremented when a null die is + # encountered. Due to the way the DIE tree is serialized, this will + # correctly reflect the nesting depth + # + die_depth = 0 + current_function = None + for die in cu.iter_DIEs(): + if die.tag == 'DW_TAG_subprogram': + current_function = die + self._emitline(' <%s><%x>: Abbrev Number: %s%s' % ( + die_depth, + die.offset, + die.abbrev_code, + (' (%s)' % die.tag) if not die.is_null() else '')) + if die.is_null(): + die_depth -= 1 + continue + + for attr in itervalues(die.attributes): + name = attr.name + # Unknown attribute values are passed-through as integers + if isinstance(name, int): + name = 'Unknown AT value: %x' % name + + attr_desc = describe_attr_value(attr, die, section_offset) + + if 'DW_OP_fbreg' in attr_desc and current_function and not 'DW_AT_frame_base' in current_function.attributes: + postfix = ' [without dw_at_frame_base]' + else: + postfix = '' + + self._emitline(' <%x> %-18s: %s%s' % ( + attr.offset, + name, + attr_desc, + postfix)) + + if die.has_children: + die_depth += 1 + + self._emitline() + + def _dump_debug_line_programs(self): + """ Dump the (decoded) line programs from .debug_line + The programs are dumped in the order of the CUs they belong to. + """ + if not self._dwarfinfo.has_debug_info: + return + self._emitline('Contents of the %s section:' % self._dwarfinfo.debug_line_sec.name) + self._emitline() + + for cu in self._dwarfinfo.iter_CUs(): + lineprogram = self._dwarfinfo.line_program_for_CU(cu) + ver5 = lineprogram.header.version >= 5 + + cu_filename = bytes2str(lineprogram['file_entry'][0].name) + if len(lineprogram['include_directory']) > 0: + # GNU readelf 2.38 only outputs directory in wide mode + self._emitline('%s:' % cu_filename) + else: + self._emitline('CU: %s:' % cu_filename) + + self._emitline('File name Line number Starting address Stmt') + # GNU readelf has a View column that we don't try to replicate + # The autotest has logic in place to ignore that + + # Print each state's file, line and address information. For some + # instructions other output is needed to be compatible with + # readelf. + for entry in lineprogram.get_entries(): + state = entry.state + if state is None: + # Special handling for commands that don't set a new state + if entry.command == DW_LNS_set_file: + file_entry = lineprogram['file_entry'][entry.args[0] - 1] + if file_entry.dir_index == 0: + # current directory + self._emitline('\n./%s:[++]' % ( + bytes2str(file_entry.name))) + else: + self._emitline('\n%s/%s:' % ( + bytes2str(lineprogram['include_directory'][file_entry.dir_index - 1]), + bytes2str(file_entry.name))) + elif entry.command == DW_LNE_define_file: + self._emitline('%s:' % ( + bytes2str(lineprogram['include_directory'][entry.args[0].dir_index]))) + elif lineprogram['version'] < 4 or self.elffile['e_machine'] == 'EM_PPC64': + self._emitline('%-35s %11s %18s %s' % ( + bytes2str(lineprogram['file_entry'][state.file - 1].name), + state.line if not state.end_sequence else '-', + '0' if state.address == 0 else self._format_hex(state.address), + 'x' if state.is_stmt and not state.end_sequence else '')) + else: + # In readelf, on non-VLIW machines there is no op_index postfix after address. + # It used to be unconditional. + self._emitline('%-35s %s %18s%s %s' % ( + bytes2str(lineprogram['file_entry'][state.file - 1].name), + "%11d" % (state.line,) if not state.end_sequence else '-', + '0' if state.address == 0 else self._format_hex(state.address), + '' if lineprogram.header.maximum_operations_per_instruction == 1 else '[%d]' % (state.op_index,), + 'x' if state.is_stmt and not state.end_sequence else '')) + if entry.command == DW_LNS_copy: + # Another readelf oddity... + self._emitline() + + def _dump_frames_info(self, section, cfi_entries): + """ Dump the raw call frame info in a section. + + `section` is the Section instance that contains the call frame info + while `cfi_entries` must be an iterable that yields the sequence of + CIE or FDE instances. + """ + self._emitline('Contents of the %s section:' % section.name) + + for entry in cfi_entries: + if isinstance(entry, CIE): + self._emitline('\n%08x %s %s CIE' % ( + entry.offset, + self._format_hex(entry['length'], fullhex=True, lead0x=False), + self._format_hex(entry['CIE_id'], fieldsize=8, lead0x=False))) + self._emitline(' Version: %d' % entry['version']) + self._emitline(' Augmentation: "%s"' % bytes2str(entry['augmentation'])) + self._emitline(' Code alignment factor: %u' % entry['code_alignment_factor']) + self._emitline(' Data alignment factor: %d' % entry['data_alignment_factor']) + self._emitline(' Return address column: %d' % entry['return_address_register']) + if entry.augmentation_bytes: + self._emitline(' Augmentation data: {}'.format(' '.join( + '{:02x}'.format(ord(b)) + for b in iterbytes(entry.augmentation_bytes) + ))) + self._emitline() + + elif isinstance(entry, FDE): + self._emitline('\n%08x %s %s FDE cie=%08x pc=%s..%s' % ( + entry.offset, + self._format_hex(entry['length'], fullhex=True, lead0x=False), + self._format_hex(entry['CIE_pointer'], fieldsize=8, lead0x=False), + entry.cie.offset, + self._format_hex(entry['initial_location'], fullhex=True, lead0x=False), + self._format_hex( + entry['initial_location'] + entry['address_range'], + fullhex=True, lead0x=False))) + if entry.augmentation_bytes: + self._emitline(' Augmentation data: {}'.format(' '.join( + '{:02x}'.format(ord(b)) + for b in iterbytes(entry.augmentation_bytes) + ))) + + else: # ZERO terminator + assert isinstance(entry, ZERO) + self._emitline('\n%08x ZERO terminator' % entry.offset) + continue + + self._emit(describe_CFI_instructions(entry)) + self._emitline() + + def _dump_debug_frames(self): + """ Dump the raw frame info from .debug_frame and .eh_frame sections. + """ + if self._dwarfinfo.has_EH_CFI(): + self._dump_frames_info( + self._dwarfinfo.eh_frame_sec, + self._dwarfinfo.EH_CFI_entries()) + self._emitline() + + if self._dwarfinfo.has_CFI(): + self._dump_frames_info( + self._dwarfinfo.debug_frame_sec, + self._dwarfinfo.CFI_entries()) + + def _dump_debug_namelut(self, what): + """ + Dump the debug pubnames section. + """ + if what == 'pubnames': + namelut = self._dwarfinfo.get_pubnames() + section = self._dwarfinfo.debug_pubnames_sec + else: + namelut = self._dwarfinfo.get_pubtypes() + section = self._dwarfinfo.debug_pubtypes_sec + + # readelf prints nothing if the section is not present. + if namelut is None or len(namelut) == 0: + return + + self._emitline('Contents of the %s section:' % section.name) + self._emitline() + + cu_headers = namelut.get_cu_headers() + + # go over CU-by-CU first and item-by-item next. + for (cu_hdr, (cu_ofs, items)) in izip(cu_headers, itertools.groupby( + namelut.items(), key = lambda x: x[1].cu_ofs)): + + self._emitline(' Length: %d' % cu_hdr.unit_length) + self._emitline(' Version: %d' % cu_hdr.version) + self._emitline(' Offset into .debug_info section: 0x%x' % cu_hdr.debug_info_offset) + self._emitline(' Size of area in .debug_info section: %d' % cu_hdr.debug_info_length) + self._emitline() + self._emitline(' Offset Name') + for item in items: + self._emitline(' %x %s' % (item[1].die_ofs - cu_ofs, item[0])) + self._emitline() + + def _dump_debug_aranges(self): + """ Dump the aranges table + """ + aranges_table = self._dwarfinfo.get_aranges() + if aranges_table == None: + return + # Seems redundant, but we need to get the unsorted set of entries + # to match system readelf. + # Also, sometimes there are blank sections in aranges, but readelf + # dumps them, so we should too. + unordered_entries = aranges_table._get_entries(need_empty=True) + + if len(unordered_entries) == 0: + self._emitline() + self._emitline("Section '.debug_aranges' has no debugging data.") + return + + self._emitline('Contents of the %s section:' % self._dwarfinfo.debug_aranges_sec.name) + self._emitline() + prev_offset = None + for entry in unordered_entries: + if prev_offset != entry.info_offset: + if entry != unordered_entries[0]: + self._emitline(' %s %s' % ( + self._format_hex(0, fullhex=True, lead0x=False), + self._format_hex(0, fullhex=True, lead0x=False))) + self._emitline(' Length: %d' % (entry.unit_length)) + self._emitline(' Version: %d' % (entry.version)) + self._emitline(' Offset into .debug_info: 0x%x' % (entry.info_offset)) + self._emitline(' Pointer Size: %d' % (entry.address_size)) + self._emitline(' Segment Size: %d' % (entry.segment_size)) + self._emitline() + self._emitline(' Address Length') + if entry.begin_addr != 0 or entry.length != 0: + self._emitline(' %s %s' % ( + self._format_hex(entry.begin_addr, fullhex=True, lead0x=False), + self._format_hex(entry.length, fullhex=True, lead0x=False))) + prev_offset = entry.info_offset + self._emitline(' %s %s' % ( + self._format_hex(0, fullhex=True, lead0x=False), + self._format_hex(0, fullhex=True, lead0x=False))) + + def _dump_frames_interp_info(self, section, cfi_entries): + """ Dump interpreted (decoded) frame information in a section. + + `section` is the Section instance that contains the call frame info + while `cfi_entries` must be an iterable that yields the sequence of + CIE or FDE instances. + """ + self._emitline('Contents of the %s section:' % section.name) + + for entry in cfi_entries: + if isinstance(entry, CIE): + self._emitline('\n%08x %s %s CIE "%s" cf=%d df=%d ra=%d' % ( + entry.offset, + self._format_hex(entry['length'], fullhex=True, lead0x=False), + self._format_hex(entry['CIE_id'], fieldsize=8, lead0x=False), + bytes2str(entry['augmentation']), + entry['code_alignment_factor'], + entry['data_alignment_factor'], + entry['return_address_register'])) + ra_regnum = entry['return_address_register'] + + elif isinstance(entry, FDE): + self._emitline('\n%08x %s %s FDE cie=%08x pc=%s..%s' % ( + entry.offset, + self._format_hex(entry['length'], fullhex=True, lead0x=False), + self._format_hex(entry['CIE_pointer'], fieldsize=8, lead0x=False), + entry.cie.offset, + self._format_hex(entry['initial_location'], fullhex=True, lead0x=False), + self._format_hex(entry['initial_location'] + entry['address_range'], + fullhex=True, lead0x=False))) + ra_regnum = entry.cie['return_address_register'] + + # If the FDE brings adds no unwinding information compared to + # its CIE, omit its table. + if (len(entry.get_decoded().table) == + len(entry.cie.get_decoded().table)): + continue + + else: # ZERO terminator + assert isinstance(entry, ZERO) + self._emitline('\n%08x ZERO terminator' % entry.offset) + continue + + # Decode the table. + decoded_table = entry.get_decoded() + if len(decoded_table.table) == 0: + continue + + # Print the heading row for the decoded table + self._emit(' LOC') + self._emit(' ' if entry.structs.address_size == 4 else ' ') + self._emit(' CFA ') + + # Look at the registers the decoded table describes. + # We build reg_order here to match readelf's order. In particular, + # registers are sorted by their number, and the register matching + # ra_regnum is always listed last with a special heading. + decoded_table = entry.get_decoded() + reg_order = sorted(ifilter( + lambda r: r != ra_regnum, + decoded_table.reg_order)) + if len(decoded_table.reg_order): + + # Headings for the registers + for regnum in reg_order: + self._emit('%-6s' % describe_reg_name(regnum)) + self._emitline('ra ') + + # Now include ra_regnum in reg_order to print its values + # similarly to the other registers. + reg_order.append(ra_regnum) + else: + self._emitline() + + for line in decoded_table.table: + self._emit(self._format_hex( + line['pc'], fullhex=True, lead0x=False)) + + if line['cfa'] is not None: + s = describe_CFI_CFA_rule(line['cfa']) + else: + s = 'u' + self._emit(' %-9s' % s) + + for regnum in reg_order: + if regnum in line: + s = describe_CFI_register_rule(line[regnum]) + else: + s = 'u' + self._emit('%-6s' % s) + self._emitline() + self._emitline() + + def _dump_debug_frames_interp(self): + """ Dump the interpreted (decoded) frame information from .debug_frame + and .eh_frame sections. + """ + if self._dwarfinfo.has_EH_CFI(): + self._dump_frames_interp_info( + self._dwarfinfo.eh_frame_sec, + self._dwarfinfo.EH_CFI_entries()) + self._emitline() + + if self._dwarfinfo.has_CFI(): + self._dump_frames_interp_info( + self._dwarfinfo.debug_frame_sec, + self._dwarfinfo.CFI_entries()) + + def _dump_debug_locations(self): + """ Dump the location lists from .debug_loc/.debug_loclists section + """ + di = self._dwarfinfo + loc_lists_sec = di.location_lists() + if not loc_lists_sec: # No locations section - readelf outputs nothing + return + + if isinstance(loc_lists_sec, LocationListsPair): + self._dump_debug_locsection(di, loc_lists_sec._loc) + self._dump_debug_locsection(di, loc_lists_sec._loclists) + else: + self._dump_debug_locsection(di, loc_lists_sec) + + def _dump_debug_locsection(self, di, loc_lists_sec): + """ Dump the location lists from .debug_loc/.debug_loclists section + """ + ver5 = loc_lists_sec.version >= 5 + section_name = (di.debug_loclists_sec if ver5 else di.debug_loc_sec).name + + # To dump a location list, one needs to know the CU. + # Scroll through DIEs once, list the known location list offsets. + # Don't need this CU/DIE scan if all entries are absolute or prefixed by base, + # but let's not optimize for that yet. + cu_map = dict() # Loc list offset => CU + for cu in di.iter_CUs(): + for die in cu.iter_DIEs(): + for key in die.attributes: + attr = die.attributes[key] + if (LocationParser.attribute_has_location(attr, cu['version']) and + LocationParser._attribute_has_loc_list(attr, cu['version'])): + cu_map[attr.value] = cu + + addr_size = di.config.default_address_size # In bytes, 4 or 8 + addr_width = addr_size * 2 # In hex digits, 8 or 16 + line_template = " %%08x %%0%dx %%0%dx %%s%%s" % (addr_width, addr_width) + + loc_lists = list(loc_lists_sec.iter_location_lists()) + if len(loc_lists) == 0: + # Present but empty locations section - readelf outputs a message + self._emitline("\nSection '%s' has no debugging data." % (section_name,)) + return + + self._emitline('Contents of the %s section:\n' % (section_name,)) + self._emitline(' Offset Begin End Expression') + for loc_list in loc_lists: + self._dump_loclist(loc_list, line_template, cu_map) + + def _dump_loclist(self, loc_list, line_template, cu_map): + in_views = False + has_views = False + base_ip = None + loc_entry_count = 0 + cu = None + for entry in loc_list: + if isinstance(entry, LocationViewPair): + has_views = in_views = True + # The "v" before address is conditional in binutils, haven't figured out how + self._emitline(" %08x v%015x v%015x location view pair" % (entry.entry_offset, entry.begin, entry.end)) + else: + if in_views: + in_views = False + self._emitline("") + + # Readelf quirk: indexed loclists don't show the real base IP + if cu_map is None: + base_ip = 0 + elif cu is None: + cu = cu_map.get(entry.entry_offset, False) + if not cu: + raise ValueError("Location list can't be tracked to a CU") + + if isinstance(entry, LocationEntry): + if base_ip is None and not entry.is_absolute: + base_ip = _get_cu_base(cu) + + begin_offset = (0 if entry.is_absolute else base_ip) + entry.begin_offset + end_offset = (0 if entry.is_absolute else base_ip) + entry.end_offset + expr = describe_DWARF_expr(entry.loc_expr, cu.structs, cu.cu_offset) + if has_views: + view = loc_list[loc_entry_count] + postfix = ' (start == end)' if entry.begin_offset == entry.end_offset and view.begin == view.end else '' + self._emitline(' %08x v%015x v%015x views at %08x for:' %( + entry.entry_offset, + view.begin, + view.end, + view.entry_offset)) + self._emitline(' %016x %016x %s%s' %( + begin_offset, + end_offset, + expr, + postfix)) + loc_entry_count += 1 + else: + postfix = ' (start == end)' if entry.begin_offset == entry.end_offset else '' + self._emitline(line_template % ( + entry.entry_offset, + begin_offset, + end_offset, + expr, + postfix)) + elif isinstance(entry, LocBaseAddressEntry): + base_ip = entry.base_address + self._emitline(" %08x %016x (base address)" % (entry.entry_offset, entry.base_address)) + + # Pyelftools doesn't store the terminating entry, + # but readelf emits its offset, so this should too. + last = loc_list[-1] + self._emitline(" %08x " % (last.entry_offset + last.entry_length)) + + def _dump_debug_ranges(self): + # TODO: GNU readelf format doesn't need entry_length? + di = self._dwarfinfo + range_lists_sec = di.range_lists() + if not range_lists_sec: # No ranges section - readelf outputs nothing + return + + if isinstance(range_lists_sec, RangeListsPair): + self._dump_debug_rangesection(di, range_lists_sec._ranges) + self._dump_debug_rangesection(di, range_lists_sec._rnglists) + else: + self._dump_debug_rangesection(di, range_lists_sec) + + def _dump_debug_rangesection(self, di, range_lists_sec): + # In the master branch of binutils, the v5 dump format is way different by now. + + ver5 = range_lists_sec.version >= 5 + section_name = (di.debug_rnglists_sec if ver5 else di.debug_ranges_sec).name + addr_size = di.config.default_address_size # In bytes, 4 or 8 + addr_width = addr_size * 2 # In hex digits, 8 or 16 + line_template = " %%08x %%0%dx %%0%dx %%s" % (addr_width, addr_width) + base_template = " %%08x %%0%dx (base address)" % (addr_width) + + range_lists = list(range_lists_sec.iter_range_lists()) + if len(range_lists) == 0: + # Present but empty locations section - readelf outputs a message + self._emitline("\nSection '%s' has no debugging data." % section_name) + return + + # In order to determine the base address of the range + # We need to know the corresponding CU. + cu_map = {die.attributes['DW_AT_ranges'].value : cu # Range list offset => CU + for cu in di.iter_CUs() + for die in cu.iter_DIEs() + if 'DW_AT_ranges' in die.attributes} + + self._emitline('Contents of the %s section:\n' % section_name) + self._emitline(' Offset Begin End') + + for range_list in range_lists: + self._dump_rangelist(range_list, cu_map, ver5, line_template, base_template) + + def _dump_rangelist(self, range_list, cu_map, ver5, line_template, base_template): + # Weird discrepancy in binutils: for DWARFv5 it outputs entry offset, + # for DWARF<=4 list offset. + first = range_list[0] + base_ip = _get_cu_base(cu_map[first.entry_offset]) + for entry in range_list: + if isinstance(entry, RangeEntry): + postfix = ' (start == end)' if entry.begin_offset == entry.end_offset else '' + self._emitline(line_template % ( + entry.entry_offset if ver5 else first.entry_offset, + (0 if entry.is_absolute else base_ip) + entry.begin_offset, + (0 if entry.is_absolute else base_ip) + entry.end_offset, + postfix)) + elif isinstance(entry,RangeBaseAddressEntry): + base_ip = entry.base_address + self._emitline(base_template % ( + entry.entry_offset if ver5 else first.entry_offset, + entry.base_address)) + else: + raise NotImplementedError("Unknown object in a range list") + last = range_list[-1] + self._emitline(' %08x ' % (last.entry_offset + last.entry_length if ver5 else first.entry_offset)) + + def _display_arch_specific_arm(self): + """ Display the ARM architecture-specific info contained in the file. + """ + attr_sec = self.elffile.get_section_by_name('.ARM.attributes') + + for s in attr_sec.iter_subsections(): + self._emitline("Attribute Section: %s" % s.header['vendor_name']) + for ss in s.iter_subsubsections(): + h_val = "" if ss.header.extra is None else " ".join("%d" % x for x in ss.header.extra) + self._emitline(describe_attr_tag_arm(ss.header.tag, h_val, None)) + + for attr in ss.iter_attributes(): + self._emit(' ') + self._emitline(describe_attr_tag_arm(attr.tag, + attr.value, + attr.extra)) + + def _emit(self, s=''): + """ Emit an object to output + """ + self.output.write(str(s)) + + def _emitline(self, s=''): + """ Emit an object to output, followed by a newline + """ + self.output.write(str(s).rstrip() + '\n') + + +SCRIPT_DESCRIPTION = 'Display information about the contents of ELF format files' +VERSION_STRING = '%%(prog)s: based on pyelftools %s' % __version__ + + +def main(stream=None): + # parse the command-line arguments and invoke ReadElf + argparser = argparse.ArgumentParser( + usage='usage: %(prog)s [options] ', + description=SCRIPT_DESCRIPTION, + add_help=False, # -h is a real option of readelf + prog='readelf.py') + argparser.add_argument('file', + nargs='?', default=None, + help='ELF file to parse') + argparser.add_argument('-v', '--version', + action='version', version=VERSION_STRING) + argparser.add_argument('-d', '--dynamic', + action='store_true', dest='show_dynamic_tags', + help='Display the dynamic section') + argparser.add_argument('-H', '--help', + action='store_true', dest='help', + help='Display this information') + argparser.add_argument('-h', '--file-header', + action='store_true', dest='show_file_header', + help='Display the ELF file header') + argparser.add_argument('-l', '--program-headers', '--segments', + action='store_true', dest='show_program_header', + help='Display the program headers') + argparser.add_argument('-S', '--section-headers', '--sections', + action='store_true', dest='show_section_header', + help="Display the sections' headers") + argparser.add_argument('-e', '--headers', + action='store_true', dest='show_all_headers', + help='Equivalent to: -h -l -S') + argparser.add_argument('-s', '--symbols', '--syms', + action='store_true', dest='show_symbols', + help='Display the symbol table') + argparser.add_argument('-n', '--notes', + action='store_true', dest='show_notes', + help='Display the core notes (if present)') + argparser.add_argument('-r', '--relocs', + action='store_true', dest='show_relocs', + help='Display the relocations (if present)') + argparser.add_argument('-au', '--arm-unwind', + action='store_true', dest='show_arm_unwind', + help='Display the armeabi unwind information (if present)') + argparser.add_argument('-x', '--hex-dump', + action='store', dest='show_hex_dump', metavar='', + help='Dump the contents of section as bytes') + argparser.add_argument('-p', '--string-dump', + action='store', dest='show_string_dump', metavar='', + help='Dump the contents of section as strings') + argparser.add_argument('-V', '--version-info', + action='store_true', dest='show_version_info', + help='Display the version sections (if present)') + argparser.add_argument('-A', '--arch-specific', + action='store_true', dest='show_arch_specific', + help='Display the architecture-specific information (if present)') + argparser.add_argument('--debug-dump', + action='store', dest='debug_dump_what', metavar='', + help=( + 'Display the contents of DWARF debug sections. can ' + + 'one of {info,decodedline,frames,frames-interp,aranges,pubtypes,pubnames,loc,Ranges}')) + argparser.add_argument('--traceback', + action='store_true', dest='show_traceback', + help='Dump the Python traceback on ELFError' + ' exceptions from elftools') + + args = argparser.parse_args() + + if args.help or not args.file: + argparser.print_help() + sys.exit(0) + + if args.show_all_headers: + do_file_header = do_section_header = do_program_header = True + else: + do_file_header = args.show_file_header + do_section_header = args.show_section_header + do_program_header = args.show_program_header + + with open(args.file, 'rb') as file: + try: + readelf = ReadElf(file, stream or sys.stdout) + if do_file_header: + readelf.display_file_header() + if do_section_header: + readelf.display_section_headers( + show_heading=not do_file_header) + if do_program_header: + readelf.display_program_headers( + show_heading=not do_file_header) + if args.show_dynamic_tags: + readelf.display_dynamic_tags() + if args.show_symbols: + readelf.display_symbol_tables() + if args.show_notes: + readelf.display_notes() + if args.show_relocs: + readelf.display_relocations() + if args.show_arm_unwind: + readelf.display_arm_unwind() + if args.show_version_info: + readelf.display_version_info() + if args.show_arch_specific: + readelf.display_arch_specific() + if args.show_hex_dump: + readelf.display_hex_dump(args.show_hex_dump) + if args.show_string_dump: + readelf.display_string_dump(args.show_string_dump) + if args.debug_dump_what: + readelf.display_debug_dump(args.debug_dump_what) + except ELFError as ex: + sys.stdout.flush() + sys.stderr.write('ELF error: %s\n' % ex) + if args.show_traceback: + traceback.print_exc() + sys.exit(1) + + +def profile_main(): + # Run 'main' redirecting its output to readelfout.txt + # Saves profiling information in readelf.profile + PROFFILE = 'readelf.profile' + import cProfile + cProfile.run('main(open("readelfout.txt", "w"))', PROFFILE) + + # Dig in some profiling stats + import pstats + p = pstats.Stats(PROFFILE) + p.sort_stats('cumulative').print_stats(25) + + +#------------------------------------------------------------------------------- +if __name__ == '__main__': + main() + #profile_main() diff --git a/.local/bin/repo b/.local/bin/repo new file mode 100755 index 0000000..7f24ff1 --- /dev/null +++ b/.local/bin/repo @@ -0,0 +1,1549 @@ +#!/usr/bin/env python +# -*- coding:utf-8 -*- +# +# Copyright (C) 2008 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Repo launcher. + +This is a standalone tool that people may copy to anywhere in their system. +It is used to get an initial repo client checkout, and after that it runs the +copy of repo in the checkout. +""" + +from __future__ import print_function + +import datetime +import os +import platform +import shlex +import subprocess +import sys + + +# These should never be newer than the main.py version since this needs to be a +# bit more flexible with older systems. See that file for more details on the +# versions we select. +MIN_PYTHON_VERSION_SOFT = (3, 6) +MIN_PYTHON_VERSION_HARD = (3, 5) + + +# Keep basic logic in sync with repo_trace.py. +class Trace(object): + """Trace helper logic.""" + + REPO_TRACE = "REPO_TRACE" + + def __init__(self): + self.set(os.environ.get(self.REPO_TRACE) == "1") + + def set(self, value): + self.enabled = bool(value) + + def print(self, *args, **kwargs): + if self.enabled: + print(*args, **kwargs) + + +trace = Trace() + + +def exec_command(cmd): + """Execute |cmd| or return None on failure.""" + trace.print(":", " ".join(cmd)) + try: + if platform.system() == "Windows": + ret = subprocess.call(cmd) + sys.exit(ret) + else: + os.execvp(cmd[0], cmd) + except Exception: + pass + + +def check_python_version(): + """Make sure the active Python version is recent enough.""" + + def reexec(prog): + exec_command([prog] + sys.argv) + + ver = sys.version_info + major = ver.major + minor = ver.minor + + # Abort on very old Python 2 versions. + if (major, minor) < (2, 7): + print( + "repo: error: Your Python version is too old. " + "Please use Python {}.{} or newer instead.".format( + *MIN_PYTHON_VERSION_SOFT + ), + file=sys.stderr, + ) + sys.exit(1) + + # Try to re-exec the version specific Python 3 if needed. + if (major, minor) < MIN_PYTHON_VERSION_SOFT: + # Python makes releases ~once a year, so try our min version +10 to help + # bridge the gap. This is the fallback anyways so perf isn't critical. + min_major, min_minor = MIN_PYTHON_VERSION_SOFT + for inc in range(0, 10): + reexec("python{}.{}".format(min_major, min_minor + inc)) + + # Fallback to older versions if possible. + for inc in range( + MIN_PYTHON_VERSION_SOFT[1] - MIN_PYTHON_VERSION_HARD[1], 0, -1 + ): + # Don't downgrade, and don't reexec ourselves (which would infinite loop). + if (min_major, min_minor - inc) <= (major, minor): + break + reexec("python{}.{}".format(min_major, min_minor - inc)) + + # Try the generic Python 3 wrapper, but only if it's new enough. If it + # isn't, we want to just give up below and make the user resolve things. + try: + proc = subprocess.Popen( + [ + "python3", + "-c", + "import sys; " + "print(sys.version_info.major, sys.version_info.minor)", + ], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + (output, _) = proc.communicate() + python3_ver = tuple(int(x) for x in output.decode("utf-8").split()) + except (OSError, subprocess.CalledProcessError): + python3_ver = None + + # If the python3 version looks like it's new enough, give it a try. + if ( + python3_ver + and python3_ver >= MIN_PYTHON_VERSION_HARD + and python3_ver != (major, minor) + ): + reexec("python3") + + # We're still here, so diagnose things for the user. + if major < 3: + print( + "repo: error: Python 2 is no longer supported; " + "Please upgrade to Python {}.{}+.".format( + *MIN_PYTHON_VERSION_HARD + ), + file=sys.stderr, + ) + sys.exit(1) + elif (major, minor) < MIN_PYTHON_VERSION_HARD: + print( + "repo: error: Python 3 version is too old; " + "Please use Python {}.{} or newer.".format( + *MIN_PYTHON_VERSION_HARD + ), + file=sys.stderr, + ) + sys.exit(1) + + +if __name__ == "__main__": + check_python_version() + + +# repo default configuration +# +REPO_URL = os.environ.get("REPO_URL", None) +if not REPO_URL: + REPO_URL = "https://gerrit.googlesource.com/git-repo" +REPO_REV = os.environ.get("REPO_REV") +if not REPO_REV: + REPO_REV = "stable" +# URL to file bug reports for repo tool issues. +BUG_URL = "https://issues.gerritcodereview.com/issues/new?component=1370071" + +# increment this whenever we make important changes to this script +VERSION = (2, 37) + +# increment this if the MAINTAINER_KEYS block is modified +KEYRING_VERSION = (2, 3) + +# Each individual key entry is created by using: +# gpg --armor --export keyid +MAINTAINER_KEYS = """ + + Repo Maintainer +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQGiBEj3ugERBACrLJh/ZPyVSKeClMuznFIrsQ+hpNnmJGw1a9GXKYKk8qHPhAZf +WKtrBqAVMNRLhL85oSlekRz98u41H5si5zcuv+IXJDF5MJYcB8f22wAy15lUqPWi +VCkk1l8qqLiuW0fo+ZkPY5qOgrvc0HW1SmdH649uNwqCbcKb6CxaTxzhOwCgj3AP +xI1WfzLqdJjsm1Nq98L0cLcD/iNsILCuw44PRds3J75YP0pze7YF/6WFMB6QSFGu +aUX1FsTTztKNXGms8i5b2l1B8JaLRWq/jOnZzyl1zrUJhkc0JgyZW5oNLGyWGhKD +Fxp5YpHuIuMImopWEMFIRQNrvlg+YVK8t3FpdI1RY0LYqha8pPzANhEYgSfoVzOb +fbfbA/4ioOrxy8ifSoga7ITyZMA+XbW8bx33WXutO9N7SPKS/AK2JpasSEVLZcON +ae5hvAEGVXKxVPDjJBmIc2cOe7kOKSi3OxLzBqrjS2rnjiP4o0ekhZIe4+ocwVOg +e0PLlH5avCqihGRhpoqDRsmpzSHzJIxtoeb+GgGEX8KkUsVAhbQpUmVwbyBNYWlu +dGFpbmVyIDxyZXBvQGFuZHJvaWQua2VybmVsLm9yZz6IYAQTEQIAIAUCSPe6AQIb +AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEBZTDV6SD1xl1GEAn0x/OKQpy7qI +6G73NJviU0IUMtftAKCFMUhGb/0bZvQ8Rm3QCUpWHyEIu7kEDQRI97ogEBAA2wI6 +5fs9y/rMwD6dkD/vK9v4C9mOn1IL5JCPYMJBVSci+9ED4ChzYvfq7wOcj9qIvaE0 +GwCt2ar7Q56me5J+byhSb32Rqsw/r3Vo5cZMH80N4cjesGuSXOGyEWTe4HYoxnHv +gF4EKI2LK7xfTUcxMtlyn52sUpkfKsCpUhFvdmbAiJE+jCkQZr1Z8u2KphV79Ou+ +P1N5IXY/XWOlq48Qf4MWCYlJFrB07xjUjLKMPDNDnm58L5byDrP/eHysKexpbakL +xCmYyfT6DV1SWLblpd2hie0sL3YejdtuBMYMS2rI7Yxb8kGuqkz+9l1qhwJtei94 +5MaretDy/d/JH/pRYkRf7L+ke7dpzrP+aJmcz9P1e6gq4NJsWejaALVASBiioqNf +QmtqSVzF1wkR5avZkFHuYvj6V/t1RrOZTXxkSk18KFMJRBZrdHFCWbc5qrVxUB6e +N5pja0NFIUCigLBV1c6I2DwiuboMNh18VtJJh+nwWeez/RueN4ig59gRTtkcc0PR +35tX2DR8+xCCFVW/NcJ4PSePYzCuuLvp1vEDHnj41R52Fz51hgddT4rBsp0nL+5I +socSOIIezw8T9vVzMY4ArCKFAVu2IVyBcahTfBS8q5EM63mONU6UVJEozfGljiMw +xuQ7JwKcw0AUEKTKG7aBgBaTAgT8TOevpvlw91cAAwUP/jRkyVi/0WAb0qlEaq/S +ouWxX1faR+vU3b+Y2/DGjtXQMzG0qpetaTHC/AxxHpgt/dCkWI6ljYDnxgPLwG0a +Oasm94BjZc6vZwf1opFZUKsjOAAxRxNZyjUJKe4UZVuMTk6zo27Nt3LMnc0FO47v +FcOjRyquvgNOS818irVHUf12waDx8gszKxQTTtFxU5/ePB2jZmhP6oXSe4K/LG5T ++WBRPDrHiGPhCzJRzm9BP0lTnGCAj3o9W90STZa65RK7IaYpC8TB35JTBEbrrNCp +w6lzd74LnNEp5eMlKDnXzUAgAH0yzCQeMl7t33QCdYx2hRs2wtTQSjGfAiNmj/WW +Vl5Jn+2jCDnRLenKHwVRFsBX2e0BiRWt/i9Y8fjorLCXVj4z+7yW6DawdLkJorEo +p3v5ILwfC7hVx4jHSnOgZ65L9s8EQdVr1ckN9243yta7rNgwfcqb60ILMFF1BRk/ +0V7wCL+68UwwiQDvyMOQuqkysKLSDCLb7BFcyA7j6KG+5hpsREstFX2wK1yKeraz +5xGrFy8tfAaeBMIQ17gvFSp/suc9DYO0ICK2BISzq+F+ZiAKsjMYOBNdH/h0zobQ +HTHs37+/QLMomGEGKZMWi0dShU2J5mNRQu3Hhxl3hHDVbt5CeJBb26aQcQrFz69W +zE3GNvmJosh6leayjtI9P2A6iEkEGBECAAkFAkj3uiACGwwACgkQFlMNXpIPXGWp +TACbBS+Up3RpfYVfd63c1cDdlru13pQAn3NQy/SN858MkxN+zym86UBgOad2uQIN +BF5FqOoBEAC8aRtWEtXzeuoQhdFrLTqYs2dy6kl9y+j3DMQYAMs8je582qzUigIO +ZZxq7T/3WQgghsdw9yPvdzlw9tKdet2TJkR1mtBfSjZQrkKwR0pQP4AD7t/90Whu +R8Wlu8ysapE2hLxMH5Y2znRQX2LkUYmk0K2ik9AgZEh3AFEg3YLl2pGnSjeSp3ch +cLX2n/rVZf5LXluZGRG+iov1Ka+8m+UqzohMA1DYNECJW6KPgXsNX++i8/iwZVic +PWzhRJSQC+QiAZNsKT6HNNKs97YCUVzhjBLnRSxRBPkr0hS/VMWY2V4pbASljWyd +GYmlDcxheLne0yjes0bJAdvig5rB42FOV0FCM4bDYOVwKfZ7SpzGCYXxtlwe0XNG +tLW9WA6tICVqNZ/JNiRTBLrsGSkyrEhDPKnIHlHRI5Zux6IHwMVB0lQKHjSop+t6 +oyubqWcPCGGYdz2QGQHNz7huC/Zn0wS4hsoiSwPv6HCq3jNyUkOJ7wZ3ouv60p2I +kPurgviVaRaPSKTYdKfkcJOtFeqOh1na5IHkXsD9rNctB7tSgfsm0G6qJIVe3ZmJ +7QAyHBfuLrAWCq5xS8EHDlvxPdAD8EEsa9T32YxcHKIkxr1eSwrUrKb8cPhWq1pp +Jiylw6G1fZ02VKixqmPC4oFMyg1PO8L2tcQTrnVmZvfFGiaekHKdhQARAQABiQKW +BBgRAgAgFiEEi7mteT6OYVOvD5pEFlMNXpIPXGUFAl5FqOoCGwICQAkQFlMNXpIP +XGXBdCAEGQEKAB0WIQSjShO+jna/9GoMAi2i51qCSquWJAUCXkWo6gAKCRCi51qC +SquWJLzgD/0YEZYS7yKxhP+kk94TcTYMBMSZpU5KFClB77yu4SI1LeXq4ocBT4sp +EPaOsQiIx//j59J67b7CBe4UeRA6D2n0pw+bCKuc731DFi5X9C1zq3a7E67SQ2yd +FbYE2fnpVnMqb62g4sTh7JmdxEtXCWBUWL0OEoWouBW1PkFDHx2kYLC7YpZt3+4t +VtNhSfV8NS6PF8ep3JXHVd2wsC3DQtggeId5GM44o8N0SkwQHNjK8ZD+VZ74ZnhZ +HeyHskomiOC61LrZWQvxD6VqtfnBQ5GvONO8QuhkiFwMMOnpPVj2k7ngSkd5o27K +6c53ZESOlR4bAfl0i3RZYC9B5KerGkBE3dTgTzmGjOaahl2eLz4LDPdTwMtS+sAU +1hPPvZTQeYDdV62bOWUyteMoJu354GgZPQ9eItWYixpNCyOGNcJXl6xk3/OuoP6f +MciFV8aMxs/7mUR8q1Ei3X9MKu+bbODYj2rC1tMkLj1OaAJkfvRuYrKsQpoUsn4q +VT9+aciNpU/I7M30watlWo7RfUFI3zaGdMDcMFju1cWt2Un8E3gtscGufzbz1Z5Z +Gak+tCOWUyuYNWX3noit7Dk6+3JGHGaQettldNu2PLM9SbIXd2EaqK/eEv9BS3dd +ItkZwzyZXSaQ9UqAceY1AHskJJ5KVXIRLuhP5jBWWo3fnRMyMYt2nwNBAJ9B9TA8 +VlBniwIl5EzCvOFOTGrtewCdHOvr3N3ieypGz1BzyCN9tJMO3G24MwReRal9Fgkr +BgEEAdpHDwEBB0BhPE/je6OuKgWzJ1mnrUmHhn4IMOHp+58+T5kHU3Oy6YjXBBgR +AgAgFiEEi7mteT6OYVOvD5pEFlMNXpIPXGUFAl5FqX0CGwIAgQkQFlMNXpIPXGV2 +IAQZFggAHRYhBOH5BA16P22vrIl809O5XaJD5Io5BQJeRal9AAoJENO5XaJD5Io5 +MEkA/3uLmiwANOcgE0zB9zga0T/KkYhYOWFx7zRyDhrTf9spAPwIfSBOAGtwxjLO +DCce5OaQJl/YuGHvXq2yx5h7T8pdAZ+PAJ4qfIk2LLSidsplTDXOKhOQAuOqUQCf +cZ7aFsJF4PtcDrfdejyAxbtsSHI= +=82Tj +-----END PGP PUBLIC KEY BLOCK----- +""" + +GIT = "git" # our git command +# NB: The version of git that the repo launcher requires may be much older than +# the version of git that the main repo source tree requires. Keeping this at +# an older version also makes it easier for users to upgrade/rollback as needed. +# +# git-1.7 is in (EOL) Ubuntu Precise. +MIN_GIT_VERSION = (1, 7, 2) # minimum supported git version +repodir = ".repo" # name of repo's private directory +S_repo = "repo" # special repo repository +S_manifests = "manifests" # special manifest repository +REPO_MAIN = S_repo + "/main.py" # main script +GITC_CONFIG_FILE = "/gitc/.config" +GITC_FS_ROOT_DIR = "/gitc/manifest-rw/" + + +import collections +import errno +import json +import optparse +import re +import shutil +import stat + + +if sys.version_info[0] == 3: + import urllib.error + import urllib.request +else: + import imp + + import urllib2 + + urllib = imp.new_module("urllib") + urllib.request = urllib2 + urllib.error = urllib2 + + +repo_config_dir = os.getenv("REPO_CONFIG_DIR", os.path.expanduser("~")) +home_dot_repo = os.path.join(repo_config_dir, ".repoconfig") +gpg_dir = os.path.join(home_dot_repo, "gnupg") + + +def GetParser(gitc_init=False): + """Setup the CLI parser.""" + if gitc_init: + sys.exit("repo: fatal: GITC not supported.") + else: + usage = "repo init [options] [-u] url" + + parser = optparse.OptionParser(usage=usage) + InitParser(parser) + return parser + + +def InitParser(parser): + """Setup the CLI parser.""" + # NB: Keep in sync with command.py:_CommonOptions(). + + # Logging. + group = parser.add_option_group("Logging options") + group.add_option( + "-v", + "--verbose", + dest="output_mode", + action="store_true", + help="show all output", + ) + group.add_option( + "-q", + "--quiet", + dest="output_mode", + action="store_false", + help="only show errors", + ) + + # Manifest. + group = parser.add_option_group("Manifest options") + group.add_option( + "-u", + "--manifest-url", + help="manifest repository location", + metavar="URL", + ) + group.add_option( + "-b", + "--manifest-branch", + metavar="REVISION", + help="manifest branch or revision (use HEAD for default)", + ) + group.add_option( + "-m", + "--manifest-name", + default="default.xml", + help="initial manifest file", + metavar="NAME.xml", + ) + group.add_option( + "-g", + "--groups", + default="default", + help="restrict manifest projects to ones with specified " + "group(s) [default|all|G1,G2,G3|G4,-G5,-G6]", + metavar="GROUP", + ) + group.add_option( + "-p", + "--platform", + default="auto", + help="restrict manifest projects to ones with a specified " + "platform group [auto|all|none|linux|darwin|...]", + metavar="PLATFORM", + ) + group.add_option( + "--submodules", + action="store_true", + help="sync any submodules associated with the manifest repo", + ) + group.add_option( + "--standalone-manifest", + action="store_true", + help="download the manifest as a static file " + "rather then create a git checkout of " + "the manifest repo", + ) + group.add_option( + "--manifest-depth", + type="int", + default=0, + metavar="DEPTH", + help="create a shallow clone of the manifest repo with " + "given depth (0 for full clone); see git clone " + "(default: %default)", + ) + + # Options that only affect manifest project, and not any of the projects + # specified in the manifest itself. + group = parser.add_option_group("Manifest (only) checkout options") + + group.add_option( + "--current-branch", + "-c", + default=True, + dest="current_branch_only", + action="store_true", + help="fetch only current manifest branch from server (default)", + ) + group.add_option( + "--no-current-branch", + dest="current_branch_only", + action="store_false", + help="fetch all manifest branches from server", + ) + group.add_option( + "--tags", action="store_true", help="fetch tags in the manifest" + ) + group.add_option( + "--no-tags", + dest="tags", + action="store_false", + help="don't fetch tags in the manifest", + ) + + # These are fundamentally different ways of structuring the checkout. + group = parser.add_option_group("Checkout modes") + group.add_option( + "--mirror", + action="store_true", + help="create a replica of the remote repositories " + "rather than a client working directory", + ) + group.add_option( + "--archive", + action="store_true", + help="checkout an archive instead of a git repository for " + "each project. See git archive.", + ) + group.add_option( + "--worktree", + action="store_true", + help="use git-worktree to manage projects", + ) + + # These are fundamentally different ways of structuring the checkout. + group = parser.add_option_group("Project checkout optimizations") + group.add_option( + "--reference", help="location of mirror directory", metavar="DIR" + ) + group.add_option( + "--dissociate", + action="store_true", + help="dissociate from reference mirrors after clone", + ) + group.add_option( + "--depth", + type="int", + default=None, + help="create a shallow clone with given depth; " "see git clone", + ) + group.add_option( + "--partial-clone", + action="store_true", + help="perform partial clone (https://git-scm.com/" + "docs/gitrepository-layout#_code_partialclone_code)", + ) + group.add_option( + "--no-partial-clone", + action="store_false", + help="disable use of partial clone (https://git-scm.com/" + "docs/gitrepository-layout#_code_partialclone_code)", + ) + group.add_option( + "--partial-clone-exclude", + action="store", + help="exclude the specified projects (a comma-delimited " + "project names) from partial clone (https://git-scm.com" + "/docs/gitrepository-layout#_code_partialclone_code)", + ) + group.add_option( + "--clone-filter", + action="store", + default="blob:none", + help="filter for use with --partial-clone " "[default: %default]", + ) + group.add_option( + "--use-superproject", + action="store_true", + default=None, + help="use the manifest superproject to sync projects; implies -c", + ) + group.add_option( + "--no-use-superproject", + action="store_false", + dest="use_superproject", + help="disable use of manifest superprojects", + ) + group.add_option( + "--clone-bundle", + action="store_true", + help="enable use of /clone.bundle on HTTP/HTTPS " + "(default if not --partial-clone)", + ) + group.add_option( + "--no-clone-bundle", + dest="clone_bundle", + action="store_false", + help="disable use of /clone.bundle on HTTP/HTTPS (default if --partial-clone)", + ) + group.add_option( + "--git-lfs", action="store_true", help="enable Git LFS support" + ) + group.add_option( + "--no-git-lfs", + dest="git_lfs", + action="store_false", + help="disable Git LFS support", + ) + + # Tool. + group = parser.add_option_group("repo Version options") + group.add_option( + "--repo-url", metavar="URL", help="repo repository location ($REPO_URL)" + ) + group.add_option( + "--repo-rev", metavar="REV", help="repo branch or revision ($REPO_REV)" + ) + group.add_option( + "--repo-branch", dest="repo_rev", help=optparse.SUPPRESS_HELP + ) + group.add_option( + "--no-repo-verify", + dest="repo_verify", + default=True, + action="store_false", + help="do not verify repo source code", + ) + + # Other. + group = parser.add_option_group("Other options") + group.add_option( + "--config-name", + action="store_true", + default=False, + help="Always prompt for name/e-mail", + ) + + return parser + + +# This is a poor replacement for subprocess.run until we require Python 3.6+. +RunResult = collections.namedtuple( + "RunResult", ("returncode", "stdout", "stderr") +) + + +class RunError(Exception): + """Error when running a command failed.""" + + +def run_command(cmd, **kwargs): + """Run |cmd| and return its output.""" + check = kwargs.pop("check", False) + if kwargs.pop("capture_output", False): + kwargs.setdefault("stdout", subprocess.PIPE) + kwargs.setdefault("stderr", subprocess.PIPE) + cmd_input = kwargs.pop("input", None) + + def decode(output): + """Decode |output| to text.""" + if output is None: + return output + try: + return output.decode("utf-8") + except UnicodeError: + print( + "repo: warning: Invalid UTF-8 output:\ncmd: %r\n%r" + % (cmd, output), + file=sys.stderr, + ) + return output.decode("utf-8", "backslashreplace") + + # Run & package the results. + proc = subprocess.Popen(cmd, **kwargs) + (stdout, stderr) = proc.communicate(input=cmd_input) + dbg = ": " + " ".join(cmd) + if cmd_input is not None: + dbg += " 0<|" + if stdout == subprocess.PIPE: + dbg += " 1>|" + if stderr == subprocess.PIPE: + dbg += " 2>|" + elif stderr == subprocess.STDOUT: + dbg += " 2>&1" + trace.print(dbg) + ret = RunResult(proc.returncode, decode(stdout), decode(stderr)) + + # If things failed, print useful debugging output. + if check and ret.returncode: + print( + 'repo: error: "%s" failed with exit status %s' + % (cmd[0], ret.returncode), + file=sys.stderr, + ) + print( + " cwd: %s\n cmd: %r" % (kwargs.get("cwd", os.getcwd()), cmd), + file=sys.stderr, + ) + + def _print_output(name, output): + if output: + print( + " %s:\n >> %s" + % (name, "\n >> ".join(output.splitlines())), + file=sys.stderr, + ) + + _print_output("stdout", ret.stdout) + _print_output("stderr", ret.stderr) + raise RunError(ret) + + return ret + + +_gitc_manifest_dir = None + + +def get_gitc_manifest_dir(): + global _gitc_manifest_dir + if _gitc_manifest_dir is None: + _gitc_manifest_dir = "" + try: + with open(GITC_CONFIG_FILE, "r") as gitc_config: + for line in gitc_config: + match = re.match("gitc_dir=(?P.*)", line) + if match: + _gitc_manifest_dir = match.group("gitc_manifest_dir") + except IOError: + pass + return _gitc_manifest_dir + + +def gitc_parse_clientdir(gitc_fs_path): + """Parse a path in the GITC FS and return its client name. + + Args: + gitc_fs_path: A subdirectory path within the GITC_FS_ROOT_DIR. + + Returns: + The GITC client name. + """ + if gitc_fs_path == GITC_FS_ROOT_DIR: + return None + if not gitc_fs_path.startswith(GITC_FS_ROOT_DIR): + manifest_dir = get_gitc_manifest_dir() + if manifest_dir == "": + return None + if manifest_dir[-1] != "/": + manifest_dir += "/" + if gitc_fs_path == manifest_dir: + return None + if not gitc_fs_path.startswith(manifest_dir): + return None + return gitc_fs_path.split(manifest_dir)[1].split("/")[0] + return gitc_fs_path.split(GITC_FS_ROOT_DIR)[1].split("/")[0] + + +class CloneFailure(Exception): + + """Indicate the remote clone of repo itself failed.""" + + +def check_repo_verify(repo_verify, quiet=False): + """Check the --repo-verify state.""" + if not repo_verify: + print( + "repo: warning: verification of repo code has been disabled;\n" + "repo will not be able to verify the integrity of itself.\n", + file=sys.stderr, + ) + return False + + if NeedSetupGnuPG(): + return SetupGnuPG(quiet) + + return True + + +def check_repo_rev(dst, rev, repo_verify=True, quiet=False): + """Check that |rev| is valid.""" + do_verify = check_repo_verify(repo_verify, quiet=quiet) + remote_ref, local_rev = resolve_repo_rev(dst, rev) + if not quiet and not remote_ref.startswith("refs/heads/"): + print( + "warning: repo is not tracking a remote branch, so it will not " + "receive updates", + file=sys.stderr, + ) + if do_verify: + rev = verify_rev(dst, remote_ref, local_rev, quiet) + else: + rev = local_rev + return (remote_ref, rev) + + +def _Init(args, gitc_init=False): + """Installs repo by cloning it over the network.""" + parser = GetParser(gitc_init=gitc_init) + opt, args = parser.parse_args(args) + if args: + if not opt.manifest_url: + opt.manifest_url = args.pop(0) + if args: + parser.print_usage() + sys.exit(1) + opt.quiet = opt.output_mode is False + opt.verbose = opt.output_mode is True + + if opt.clone_bundle is None: + opt.clone_bundle = False if opt.partial_clone else True + + url = opt.repo_url or REPO_URL + rev = opt.repo_rev or REPO_REV + + try: + os.mkdir(repodir) + except OSError as e: + if e.errno != errno.EEXIST: + print( + "fatal: cannot make %s directory: %s" % (repodir, e.strerror), + file=sys.stderr, + ) + # Don't raise CloneFailure; that would delete the + # name. Instead exit immediately. + # + sys.exit(1) + + _CheckGitVersion() + try: + if not opt.quiet: + print("Downloading Repo source from", url) + dst_final = os.path.abspath(os.path.join(repodir, S_repo)) + dst = dst_final + ".tmp" + shutil.rmtree(dst, ignore_errors=True) + _Clone(url, dst, opt.clone_bundle, opt.quiet, opt.verbose) + + remote_ref, rev = check_repo_rev( + dst, rev, opt.repo_verify, quiet=opt.quiet + ) + _Checkout(dst, remote_ref, rev, opt.quiet) + + if not os.path.isfile(os.path.join(dst, "repo")): + print( + "fatal: '%s' does not look like a git-repo repository, is " + "--repo-url set correctly?" % url, + file=sys.stderr, + ) + raise CloneFailure() + + os.rename(dst, dst_final) + + except CloneFailure: + print("fatal: double check your --repo-rev setting.", file=sys.stderr) + if opt.quiet: + print( + "fatal: repo init failed; run without --quiet to see why", + file=sys.stderr, + ) + raise + + +def run_git(*args, **kwargs): + """Run git and return execution details.""" + kwargs.setdefault("capture_output", True) + kwargs.setdefault("check", True) + try: + return run_command([GIT] + list(args), **kwargs) + except OSError as e: + print(file=sys.stderr) + print('repo: error: "%s" is not available' % GIT, file=sys.stderr) + print("repo: error: %s" % e, file=sys.stderr) + print(file=sys.stderr) + print( + "Please make sure %s is installed and in your path." % GIT, + file=sys.stderr, + ) + sys.exit(1) + except RunError: + raise CloneFailure() + + +# The git version info broken down into components for easy analysis. +# Similar to Python's sys.version_info. +GitVersion = collections.namedtuple( + "GitVersion", ("major", "minor", "micro", "full") +) + + +def ParseGitVersion(ver_str=None): + if ver_str is None: + # Load the version ourselves. + ver_str = run_git("--version").stdout + + if not ver_str.startswith("git version "): + return None + + full_version = ver_str[len("git version ") :].strip() + num_ver_str = full_version.split("-")[0] + to_tuple = [] + for num_str in num_ver_str.split(".")[:3]: + if num_str.isdigit(): + to_tuple.append(int(num_str)) + else: + to_tuple.append(0) + to_tuple.append(full_version) + return GitVersion(*to_tuple) + + +def _CheckGitVersion(): + ver_act = ParseGitVersion() + if ver_act is None: + print("fatal: unable to detect git version", file=sys.stderr) + raise CloneFailure() + + if ver_act < MIN_GIT_VERSION: + need = ".".join(map(str, MIN_GIT_VERSION)) + print( + "fatal: git %s or later required; found %s" % (need, ver_act.full), + file=sys.stderr, + ) + raise CloneFailure() + + +def SetGitTrace2ParentSid(env=None): + """Set up GIT_TRACE2_PARENT_SID for git tracing.""" + # We roughly follow the format git itself uses in trace2/tr2_sid.c. + # (1) Be unique (2) be valid filename (3) be fixed length. + # + # Since we always export this variable, we try to avoid more expensive calls. + # e.g. We don't attempt hostname lookups or hashing the results. + if env is None: + env = os.environ + + KEY = "GIT_TRACE2_PARENT_SID" + + now = datetime.datetime.now(datetime.timezone.utc) + value = "repo-%s-P%08x" % (now.strftime("%Y%m%dT%H%M%SZ"), os.getpid()) + + # If it's already set, then append ourselves. + if KEY in env: + value = env[KEY] + "/" + value + + _setenv(KEY, value, env=env) + + +def _setenv(key, value, env=None): + """Set |key| in the OS environment |env| to |value|.""" + if env is None: + env = os.environ + # Environment handling across systems is messy. + try: + env[key] = value + except UnicodeEncodeError: + env[key] = value.encode() + + +def NeedSetupGnuPG(): + if not os.path.isdir(home_dot_repo): + return True + + kv = os.path.join(home_dot_repo, "keyring-version") + if not os.path.exists(kv): + return True + + kv = open(kv).read() + if not kv: + return True + + kv = tuple(map(int, kv.split("."))) + if kv < KEYRING_VERSION: + return True + return False + + +def SetupGnuPG(quiet): + try: + os.mkdir(home_dot_repo) + except OSError as e: + if e.errno != errno.EEXIST: + print( + "fatal: cannot make %s directory: %s" + % (home_dot_repo, e.strerror), + file=sys.stderr, + ) + sys.exit(1) + + try: + os.mkdir(gpg_dir, stat.S_IRWXU) + except OSError as e: + if e.errno != errno.EEXIST: + print( + "fatal: cannot make %s directory: %s" % (gpg_dir, e.strerror), + file=sys.stderr, + ) + sys.exit(1) + + if not quiet: + print( + "repo: Updating release signing keys to keyset ver %s" + % (".".join(str(x) for x in KEYRING_VERSION),) + ) + # NB: We use --homedir (and cwd below) because some environments (Windows) do + # not correctly handle full native paths. We avoid the issue by changing to + # the right dir with cwd=gpg_dir before executing gpg, and then telling gpg to + # use the cwd (.) as its homedir which leaves the path resolution logic to it. + cmd = ["gpg", "--homedir", ".", "--import"] + try: + # gpg can be pretty chatty. Always capture the output and if something goes + # wrong, the builtin check failure will dump stdout & stderr for debugging. + run_command( + cmd, + stdin=subprocess.PIPE, + capture_output=True, + cwd=gpg_dir, + check=True, + input=MAINTAINER_KEYS.encode("utf-8"), + ) + except OSError: + if not quiet: + print("warning: gpg (GnuPG) is not available.", file=sys.stderr) + print( + "warning: Installing it is strongly encouraged.", + file=sys.stderr, + ) + print(file=sys.stderr) + return False + + with open(os.path.join(home_dot_repo, "keyring-version"), "w") as fd: + fd.write(".".join(map(str, KEYRING_VERSION)) + "\n") + return True + + +def _SetConfig(cwd, name, value): + """Set a git configuration option to the specified value.""" + run_git("config", name, value, cwd=cwd) + + +def _GetRepoConfig(name): + """Read a repo configuration option.""" + config = os.path.join(home_dot_repo, "config") + if not os.path.exists(config): + return None + + cmd = ["config", "--file", config, "--get", name] + ret = run_git(*cmd, check=False) + if ret.returncode == 0: + return ret.stdout + elif ret.returncode == 1: + return None + else: + print( + "repo: error: git %s failed:\n%s" % (" ".join(cmd), ret.stderr), + file=sys.stderr, + ) + raise RunError() + + +def _InitHttp(): + handlers = [] + + mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm() + try: + import netrc + + n = netrc.netrc() + for host in n.hosts: + p = n.hosts[host] + mgr.add_password(p[1], "http://%s/" % host, p[0], p[2]) + mgr.add_password(p[1], "https://%s/" % host, p[0], p[2]) + except Exception: + pass + handlers.append(urllib.request.HTTPBasicAuthHandler(mgr)) + handlers.append(urllib.request.HTTPDigestAuthHandler(mgr)) + + if "http_proxy" in os.environ: + url = os.environ["http_proxy"] + handlers.append( + urllib.request.ProxyHandler({"http": url, "https": url}) + ) + if "REPO_CURL_VERBOSE" in os.environ: + handlers.append(urllib.request.HTTPHandler(debuglevel=1)) + handlers.append(urllib.request.HTTPSHandler(debuglevel=1)) + urllib.request.install_opener(urllib.request.build_opener(*handlers)) + + +def _Fetch(url, cwd, src, quiet, verbose): + cmd = ["fetch"] + if not verbose: + cmd.append("--quiet") + err = None + if not quiet and sys.stdout.isatty(): + cmd.append("--progress") + elif not verbose: + err = subprocess.PIPE + cmd.append(src) + cmd.append("+refs/heads/*:refs/remotes/origin/*") + cmd.append("+refs/tags/*:refs/tags/*") + run_git(*cmd, stderr=err, capture_output=False, cwd=cwd) + + +def _DownloadBundle(url, cwd, quiet, verbose): + if not url.endswith("/"): + url += "/" + url += "clone.bundle" + + ret = run_git( + "config", "--get-regexp", "url.*.insteadof", cwd=cwd, check=False + ) + for line in ret.stdout.splitlines(): + m = re.compile(r"^url\.(.*)\.insteadof (.*)$").match(line) + if m: + new_url = m.group(1) + old_url = m.group(2) + if url.startswith(old_url): + url = new_url + url[len(old_url) :] + break + + if not url.startswith("http:") and not url.startswith("https:"): + return False + + dest = open(os.path.join(cwd, ".git", "clone.bundle"), "w+b") + try: + try: + r = urllib.request.urlopen(url) + except urllib.error.HTTPError as e: + if e.code not in [400, 401, 403, 404, 501]: + print("warning: Cannot get %s" % url, file=sys.stderr) + print("warning: HTTP error %s" % e.code, file=sys.stderr) + return False + except urllib.error.URLError as e: + print("fatal: Cannot get %s" % url, file=sys.stderr) + print("fatal: error %s" % e.reason, file=sys.stderr) + raise CloneFailure() + try: + if verbose: + print("Downloading clone bundle %s" % url, file=sys.stderr) + while True: + buf = r.read(8192) + if not buf: + return True + dest.write(buf) + finally: + r.close() + finally: + dest.close() + + +def _ImportBundle(cwd): + path = os.path.join(cwd, ".git", "clone.bundle") + try: + _Fetch(cwd, cwd, path, True, False) + finally: + os.remove(path) + + +def _Clone(url, cwd, clone_bundle, quiet, verbose): + """Clones a git repository to a new subdirectory of repodir""" + if verbose: + print("Cloning git repository", url) + + try: + os.mkdir(cwd) + except OSError as e: + print( + "fatal: cannot make %s directory: %s" % (cwd, e.strerror), + file=sys.stderr, + ) + raise CloneFailure() + + run_git("init", "--quiet", cwd=cwd) + + _InitHttp() + _SetConfig(cwd, "remote.origin.url", url) + _SetConfig( + cwd, "remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*" + ) + if clone_bundle and _DownloadBundle(url, cwd, quiet, verbose): + _ImportBundle(cwd) + _Fetch(url, cwd, "origin", quiet, verbose) + + +def resolve_repo_rev(cwd, committish): + """Figure out what REPO_REV represents. + + We support: + * refs/heads/xxx: Branch. + * refs/tags/xxx: Tag. + * xxx: Branch or tag or commit. + + Args: + cwd: The git checkout to run in. + committish: The REPO_REV argument to resolve. + + Returns: + A tuple of (remote ref, commit) as makes sense for the committish. + For branches, this will look like ('refs/heads/stable', ). + For tags, this will look like ('refs/tags/v1.0', ). + For commits, this will be (, ). + """ + + def resolve(committish): + ret = run_git( + "rev-parse", + "--verify", + "%s^{commit}" % (committish,), + cwd=cwd, + check=False, + ) + return None if ret.returncode else ret.stdout.strip() + + # An explicit branch. + if committish.startswith("refs/heads/"): + remote_ref = committish + committish = committish[len("refs/heads/") :] + rev = resolve("refs/remotes/origin/%s" % committish) + if rev is None: + print( + 'repo: error: unknown branch "%s"' % (committish,), + file=sys.stderr, + ) + raise CloneFailure() + return (remote_ref, rev) + + # An explicit tag. + if committish.startswith("refs/tags/"): + remote_ref = committish + committish = committish[len("refs/tags/") :] + rev = resolve(remote_ref) + if rev is None: + print( + 'repo: error: unknown tag "%s"' % (committish,), file=sys.stderr + ) + raise CloneFailure() + return (remote_ref, rev) + + # See if it's a short branch name. + rev = resolve("refs/remotes/origin/%s" % committish) + if rev: + return ("refs/heads/%s" % (committish,), rev) + + # See if it's a tag. + rev = resolve("refs/tags/%s" % committish) + if rev: + return ("refs/tags/%s" % (committish,), rev) + + # See if it's a commit. + rev = resolve(committish) + if rev and rev.lower().startswith(committish.lower()): + return (rev, rev) + + # Give up! + print( + 'repo: error: unable to resolve "%s"' % (committish,), file=sys.stderr + ) + raise CloneFailure() + + +def verify_rev(cwd, remote_ref, rev, quiet): + """Verify the commit has been signed by a tag.""" + ret = run_git("describe", rev, cwd=cwd) + cur = ret.stdout.strip() + + m = re.compile(r"^(.*)-[0-9]{1,}-g[0-9a-f]{1,}$").match(cur) + if m: + cur = m.group(1) + if not quiet: + print(file=sys.stderr) + print( + "warning: '%s' is not signed; falling back to signed release '%s'" + % (remote_ref, cur), + file=sys.stderr, + ) + print(file=sys.stderr) + + env = os.environ.copy() + _setenv("GNUPGHOME", gpg_dir, env) + run_git("tag", "-v", cur, cwd=cwd, env=env) + return "%s^0" % cur + + +def _Checkout(cwd, remote_ref, rev, quiet): + """Checkout an upstream branch into the repository and track it.""" + run_git("update-ref", "refs/heads/default", rev, cwd=cwd) + + _SetConfig(cwd, "branch.default.remote", "origin") + _SetConfig(cwd, "branch.default.merge", remote_ref) + + run_git("symbolic-ref", "HEAD", "refs/heads/default", cwd=cwd) + + cmd = ["read-tree", "--reset", "-u"] + if not quiet: + cmd.append("-v") + cmd.append("HEAD") + run_git(*cmd, cwd=cwd) + + +def _FindRepo(): + """Look for a repo installation, starting at the current directory.""" + curdir = os.getcwd() + repo = None + + olddir = None + while curdir != olddir and not repo: + repo = os.path.join(curdir, repodir, REPO_MAIN) + if not os.path.isfile(repo): + repo = None + olddir = curdir + curdir = os.path.dirname(curdir) + return (repo, os.path.join(curdir, repodir)) + + +class _Options(object): + help = False + version = False + + +def _ExpandAlias(name): + """Look up user registered aliases.""" + # We don't resolve aliases for existing subcommands. This matches git. + if name in {"gitc-init", "help", "init"}: + return name, [] + + alias = _GetRepoConfig("alias.%s" % (name,)) + if alias is None: + return name, [] + + args = alias.strip().split(" ", 1) + name = args[0] + if len(args) == 2: + args = shlex.split(args[1]) + else: + args = [] + return name, args + + +def _ParseArguments(args): + cmd = None + opt = _Options() + arg = [] + + for i in range(len(args)): + a = args[i] + if a == "-h" or a == "--help": + opt.help = True + elif a == "--version": + opt.version = True + elif a == "--trace": + trace.set(True) + elif not a.startswith("-"): + cmd = a + arg = args[i + 1 :] + break + return cmd, opt, arg + + +class Requirements(object): + """Helper for checking repo's system requirements.""" + + REQUIREMENTS_NAME = "requirements.json" + + def __init__(self, requirements): + """Initialize. + + Args: + requirements: A dictionary of settings. + """ + self.requirements = requirements + + @classmethod + def from_dir(cls, path): + return cls.from_file(os.path.join(path, cls.REQUIREMENTS_NAME)) + + @classmethod + def from_file(cls, path): + try: + with open(path, "rb") as f: + data = f.read() + except EnvironmentError: + # NB: EnvironmentError is used for Python 2 & 3 compatibility. + # If we couldn't open the file, assume it's an old source tree. + return None + + return cls.from_data(data) + + @classmethod + def from_data(cls, data): + comment_line = re.compile(rb"^ *#") + strip_data = b"".join( + x for x in data.splitlines() if not comment_line.match(x) + ) + try: + json_data = json.loads(strip_data) + except Exception: # pylint: disable=broad-except + # If we couldn't parse it, assume it's incompatible. + return None + + return cls(json_data) + + def _get_soft_ver(self, pkg): + """Return the soft version for |pkg| if it exists.""" + return self.requirements.get(pkg, {}).get("soft", ()) + + def _get_hard_ver(self, pkg): + """Return the hard version for |pkg| if it exists.""" + return self.requirements.get(pkg, {}).get("hard", ()) + + @staticmethod + def _format_ver(ver): + """Return a dotted version from |ver|.""" + return ".".join(str(x) for x in ver) + + def assert_ver(self, pkg, curr_ver): + """Verify |pkg|'s |curr_ver| is new enough.""" + curr_ver = tuple(curr_ver) + soft_ver = tuple(self._get_soft_ver(pkg)) + hard_ver = tuple(self._get_hard_ver(pkg)) + if curr_ver < hard_ver: + print( + 'repo: error: Your version of "%s" (%s) is unsupported; ' + "Please upgrade to at least version %s to continue." + % (pkg, self._format_ver(curr_ver), self._format_ver(soft_ver)), + file=sys.stderr, + ) + sys.exit(1) + + if curr_ver < soft_ver: + print( + 'repo: warning: Your version of "%s" (%s) is no longer supported; ' + "Please upgrade to at least version %s to avoid breakage." + % (pkg, self._format_ver(curr_ver), self._format_ver(soft_ver)), + file=sys.stderr, + ) + + def assert_all(self): + """Assert all of the requirements are satisified.""" + # See if we need a repo launcher upgrade first. + self.assert_ver("repo", VERSION) + + # Check python before we try to import the repo code. + self.assert_ver("python", sys.version_info) + + # Check git while we're at it. + self.assert_ver("git", ParseGitVersion()) + + +def _Usage(): + gitc_usage = "" + if get_gitc_manifest_dir(): + gitc_usage = " gitc-init Initialize a GITC Client.\n" + + print( + """usage: repo COMMAND [ARGS] + +repo is not yet installed. Use "repo init" to install it here. + +The most commonly used repo commands are: + + init Install repo in the current working directory +""" + + gitc_usage + + """ help Display detailed help on a command + +For access to the full online help, install repo ("repo init"). +""" + ) + print("Bug reports:", BUG_URL) + sys.exit(0) + + +def _Help(args): + if args: + if args[0] in {"init", "gitc-init"}: + parser = GetParser(gitc_init=args[0] == "gitc-init") + parser.print_help() + sys.exit(0) + else: + print( + "error: '%s' is not a bootstrap command.\n" + ' For access to online help, install repo ("repo init").' + % args[0], + file=sys.stderr, + ) + else: + _Usage() + sys.exit(1) + + +def _Version(): + """Show version information.""" + print("") + print("repo launcher version %s" % (".".join(str(x) for x in VERSION),)) + print(" (from %s)" % (__file__,)) + print("git %s" % (ParseGitVersion().full,)) + print("Python %s" % sys.version) + uname = platform.uname() + if sys.version_info.major < 3: + # Python 3 returns a named tuple, but Python 2 is simpler. + print(uname) + else: + print("OS %s %s (%s)" % (uname.system, uname.release, uname.version)) + print( + "CPU %s (%s)" + % (uname.machine, uname.processor if uname.processor else "unknown") + ) + print("Bug reports:", BUG_URL) + sys.exit(0) + + +def _NotInstalled(): + print( + 'error: repo is not installed. Use "repo init" to install it here.', + file=sys.stderr, + ) + sys.exit(1) + + +def _NoCommands(cmd): + print( + """error: command '%s' requires repo to be installed first. + Use "repo init" to install it here.""" + % cmd, + file=sys.stderr, + ) + sys.exit(1) + + +def _RunSelf(wrapper_path): + my_dir = os.path.dirname(wrapper_path) + my_main = os.path.join(my_dir, "main.py") + my_git = os.path.join(my_dir, ".git") + + if os.path.isfile(my_main) and os.path.isdir(my_git): + for name in ["git_config.py", "project.py", "subcmds"]: + if not os.path.exists(os.path.join(my_dir, name)): + return None, None + return my_main, my_git + return None, None + + +def _SetDefaultsTo(gitdir): + global REPO_URL + global REPO_REV + + REPO_URL = gitdir + ret = run_git("--git-dir=%s" % gitdir, "symbolic-ref", "HEAD", check=False) + if ret.returncode: + # If we're not tracking a branch (bisect/etc...), then fall back to commit. + print( + "repo: warning: %s has no current branch; using HEAD" % gitdir, + file=sys.stderr, + ) + try: + ret = run_git("rev-parse", "HEAD", cwd=gitdir) + except CloneFailure: + print("fatal: %s has invalid HEAD" % gitdir, file=sys.stderr) + sys.exit(1) + + REPO_REV = ret.stdout.strip() + + +def main(orig_args): + cmd, opt, args = _ParseArguments(orig_args) + + # We run this early as we run some git commands ourselves. + SetGitTrace2ParentSid() + + repo_main, rel_repo_dir = None, None + # Don't use the local repo copy, make sure to switch to the gitc client first. + if cmd != "gitc-init": + repo_main, rel_repo_dir = _FindRepo() + + wrapper_path = os.path.abspath(__file__) + my_main, my_git = _RunSelf(wrapper_path) + + cwd = os.getcwd() + if get_gitc_manifest_dir() and cwd.startswith(get_gitc_manifest_dir()): + print( + "error: repo cannot be used in the GITC local manifest directory." + "\nIf you want to work on this GITC client please rerun this " + "command from the corresponding client under /gitc/", + file=sys.stderr, + ) + sys.exit(1) + if not repo_main: + # Only expand aliases here since we'll be parsing the CLI ourselves. + # If we had repo_main, alias expansion would happen in main.py. + cmd, alias_args = _ExpandAlias(cmd) + args = alias_args + args + + if opt.help: + _Usage() + if cmd == "help": + _Help(args) + if opt.version or cmd == "version": + _Version() + if not cmd: + _NotInstalled() + if cmd == "init" or cmd == "gitc-init": + if my_git: + _SetDefaultsTo(my_git) + try: + _Init(args, gitc_init=(cmd == "gitc-init")) + except CloneFailure: + path = os.path.join(repodir, S_repo) + print( + "fatal: cloning the git-repo repository failed, will remove " + "'%s' " % path, + file=sys.stderr, + ) + shutil.rmtree(path, ignore_errors=True) + shutil.rmtree(path + ".tmp", ignore_errors=True) + sys.exit(1) + repo_main, rel_repo_dir = _FindRepo() + else: + _NoCommands(cmd) + + if my_main: + repo_main = my_main + + if not repo_main: + print("fatal: unable to find repo entry point", file=sys.stderr) + sys.exit(1) + + reqs = Requirements.from_dir(os.path.dirname(repo_main)) + if reqs: + reqs.assert_all() + + ver_str = ".".join(map(str, VERSION)) + me = [ + sys.executable, + repo_main, + "--repo-dir=%s" % rel_repo_dir, + "--wrapper-version=%s" % ver_str, + "--wrapper-path=%s" % wrapper_path, + "--", + ] + me.extend(orig_args) + exec_command(me) + print("fatal: unable to start %s" % repo_main, file=sys.stderr) + sys.exit(148) + + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/.local/bin/rofi_run b/.local/bin/rofi_run new file mode 100755 index 0000000..973e1de --- /dev/null +++ b/.local/bin/rofi_run @@ -0,0 +1,95 @@ +#!/bin/bash + +NAME="${0##*/}" +VER="0.8" +OPTS=( + -padding 50 + -line-padding 4 + -hide-scrollbar +) + +usage() +{ + cat </dev/null 2>&1 || { echo "Requires 'libqalculate' installed"; exit 1; } + rofi -modi "calc:qalc +u8 -nocurrencies" -show "calc:qalc +u8 -nocurrencies" "${OPTS[@]}" + ;; + -c|--clipboard) + hash greenclip >/dev/null 2>&1 || { echo "Requires 'greenclip' installed"; exit 1; } + rofi -modi "clipboard:greenclip print" -show "clipboard:greenclip print" "${OPTS[@]}" + ;; + -b|--browser) + hash surfraw >/dev/null 2>&1 || { echo "Requires 'surfraw' installed"; exit 1; } + surfraw -browser="$BROWSER" "$(sr -elvi | awk -F'-' '{print $1}' | sed '/:/d' | awk '{$1=$1};1' | + rofi -hide-scrollbar -kb-row-select 'Tab' -kb-row-tab 'Control+space' \ + -dmenu -mesg 'Tab for Autocomplete' -i -p 'Web Search')" + ;; + -l|--logout) + case "$(rofi -sep "|" -dmenu -i -p 'System' -width 20 -hide-scrollbar \ + -line-padding 4 -padding 20 -lines 4 <<< " Lock| Logout| Reboot| Shutdown")" in + *Lock) i3lock-fancy ;; + *Reboot) systemctl reboot ;; + *Shutdown) systemctl -i poweroff ;; + *Logout) session-logout >/dev/null 2>&1 || pkill -15 -t tty"$XDG_VTNR" Xorg ;; + esac + ;; + *) + printf "\nOption does not exist: %s\n\n" "$arg" + exit 2 + esac + done +fi + +exit 0 diff --git a/.local/bin/rotatefont b/.local/bin/rotatefont new file mode 120000 index 0000000..dc6448b --- /dev/null +++ b/.local/bin/rotatefont @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/rotatefont \ No newline at end of file diff --git a/.local/bin/ryu b/.local/bin/ryu new file mode 100755 index 0000000..070f8bb --- /dev/null +++ b/.local/bin/ryu @@ -0,0 +1,188 @@ +#!/bin/bash +# s y n t a x . s a m u r a i +# p r e s e n t s +# +# ███████ ██ ██ ██ ██ +# ░██░░░░██ ░░██ ██ ░██ ░██ +# ░██ ░██ ░░████ ░██ ░██ +# ░███████ ░░██ ░██ ░██ +# ░██░░░██ ░██ ░██ ░██ +# ░██ ░░██ ░██ ░██ ░██ +# ░██ ░░██ ░██ ░░███████ +# ░░ ░░ ░░ ░░░░░░░ +# +# ansi art of ryu hayabusa from ninja gaiden +# +# ▓▓▓▓▓▓▓▓▓▓ +# ░▓ author ▓ xero +# ░▓ code ▓ http://code.xero.nu/ryu +# ░▓ mirror ▓ http://git.io/ryu +# ░▓▓▓▓▓▓▓▓▓▓ +# ░░░░░░░░░░ + +cols=`tput cols` +pad () { + count=$1 + until [[ $count -eq 1 ]]; do + let count-=1 + echo -ne "." + done; + if [[ $2 ]]; then + echo "." + fi +} +let half=($cols-100)/2 +half=${half/.*} + +if [[ -z $1 || $1 == "--grey" || $1 == "-g" || $1 == "grey" ]]; then + pad $half; echo -en "..░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░░░▒▒▒▒ ▒▒▒▒▒▒▒▒░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░░▒▒▒▒ ▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░░▒▒▒ ▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░░▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░░ ░░░░░░░░░░░░░ ░░░░░░░░░░░░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░ ▒ ░░░▓▓▓▓▓▓▓▓▓▓▓▓░░ ░░░░░░░░░░░░░░░ ░ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░░ ░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░░ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░ ▒ ░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ ░░▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░ ░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░ ░ ░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░ ░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░ ░ ░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░ ░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░░░░░▒ ░ ░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░ ░ ."; pad $half true + pad $half; echo -en "░░░░░░░░░░ ░░░ ░ ▓▓▓▓▓▓▓▓░▓▓▓▓░░░▓░░░░░░▓▓▓▓▓ ░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░░▒▒ ░░░░░ ░ ▓▓▓▓▓▓░▓▓▓▓░░▓▓▓░░░░░░▓▓ ░ ░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░░▒ ░░░░░░░░░ ░ ░▓░░▓▓▓▓▓░▓▓▓░░░░░ ░ ░░ ░░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░▒▒ ░░░░░░░ ░░ ▓▓▓▓▓▓▓▓▓░░ ░░ ░ ░░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░▒▒ ░░░░░░░░░░ ░▓▓▓▓▓▓▓░░░ ░░░ ░ ░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░ ▒ ░░░░░░ ░░░▓▓▓░▓░░░░ ░ ░ ░░ ░ ▒ "; pad $half true + pad $half; echo -en "░░░░░░░ ▒ ░░░░░░░ ▓▓ ▓ ░░ ░░░░░░░░░░░░░ ░ ░░ ▓ █▓ ░ ░ ░ ▒▒ "; pad $half true + pad $half; echo -en ".░░░░░▒ ▒ ░░░░░░░░ ▓▓██ ▓ ██ ██▓ ▓ ░░░▓░ ░ ░ ░░░░ ▓ ██ ▓█ ▓ ██▓▓ ░░░░ ░ ░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░▒ ▒▒ ░░░░░░░░░ ▓██ ▓▓ ▓ ██▓ ▓░░░░▓▓░ ░░░░░░░░ ▓ ▓██ ▓ ▓ ██▓▓ ░░░░░░░ ░ ▒ ."; pad $half true + pad $half; echo -en ".░░░░░ ▒░ ░░░░░░░▓░░ ▓███ ▓▓▓▓ ███░ ░░░░▓▓░░░░░░░░░░ ░▓██ ▓▓▓ ███▓ ░░▓▓░░ ░ ▒ ▒ ."; pad $half true + pad $half; echo -en "..░░░░ ▒░ ░░░░▓▓▓▓▓▓░ ███ ██ ░░░░░▓▓▓▓▓░░░░░░░ ███ ████ ░░▓▓▓▓░░ ░ ▒ ▒ ."; pad $half true + pad $half; echo -en "..░░░░ ▒ ░▒ ░░▓▓▓▓▓▓▓▓▓▓ ██████ ▓▓▓░░ ░░░░▓▓▓▓▓▓░░░░░░░░░▓▓▓ █████ ▓▓▓▓▓▓▓░░░░ ▒▒ ▒ ."; pad $half true + pad $half; echo -en "..░░░░ ░ ░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█░░░░░░░▓▓▓▓▓▓▓░░░░ ░░ ░░▓░▓▓░░░░░░░▓▓▓▓▓▓░░ ▒▒ ▒ ."; pad $half true + pad $half; echo -en "..░░░░ ░ ░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██ ░░░░░░░▓▓▓▓▓▓▓░░░░ ░░░░░ ░░░░░░░░░▓▓▓▓▓░░ ░ ▒▒ ▒ ."; pad $half true + pad $half; echo -en "..░░░░▒░░▒░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░▓▓░░░░ ▒▒ ▒ .."; pad $half true + pad $half; echo -en "..░░░░▒░░ ░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓░░░░ ░░░░░░░░░░░░░░░░░░░░░ ▒▒ ▒ .."; pad $half true + pad $half; echo -en "..░░░░░░░ ▒░▒ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓░░ ░░░░░ ░░░░░░░░░░░░░░░░░░░░ ▒ ▒ .."; pad $half true + pad $half; echo -en "..░░░░░░░░░░░ ░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ░ ░░░░░░░░░░░░░░░ ▒ ▒ .."; pad $half true + pad $half; echo -en "...░░░░░░░░░░░▒ ▒▒ ▓▓▓▓▓▓▓▓▓▓▓▓▓ ░░░░░░░░░░▒▒ ▒▒▒▒▒ ▒ ▒ ..."; pad $half true + pad $half; echo -en "...░░░░░░░░░░ ░▒ ▒▒▒░░░ ▓▓▓▓▓▓ ░░░░░░░░░░░░░▒▒▒ ▒▒▒▒▒░░░░▒▒ ▒▒▒▒▒▒▒ ▒▒ ▒ ..."; pad $half true + pad $half; echo -en "...░░░░░░░░░░ ░░░ ▒▒▒░░░░░░ ░░░░░ ░░░░░░░░░░▒░▒ ▒▒▒▒▒▒░░░░░░▒▒▒▒▒░▒▒▒▒ ▒▒ ..."; pad $half true + pad $half; echo -en "....░░░░░░░░░░ ░░░░░ ▒▒░░░░░░░░░░░░░░ ░░░░░░░░░ ▒░▒▒ ▒▒▒▒▒░░░░▒▒▒▒▒▒░░▒▒▒ ▒▒▒ ...."; pad $half true + pad $half; echo -en "....░░░░░░░░░░░░░░░░░░ ▒░░░░░░░░░░░ ░░░░░░░░░░░░░░ ▒ ▒▒▒▒▒▒▒░▒▒▒▒▒▒░░░░▒▒▒ ▒▒ ...."; pad $half true + pad $half; echo -en "....░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒▒▒▒▒▒▒ ▒ ░░░▒▒▒▒ ▒▒▒ ...."; pad $half true + pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▒░▒▒▒ ▒▒▒ ▒░░░░░░░░░░▒ ▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒ ░░▒▒▒▒▒▒░░░░░░░░░░░░░▒ ░▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒ ▒▒░▒▒▒▒▒▒▒░░░░░░░░░░ ░░▒▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en ".....░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒ ░▒▒▒▒▒▒▒▒▒░░▒░░░░░░ ░░▒▒▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en "......░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒░░▒░▒▒▒ ▒▒▒▒▒░░░░░░░░░▒▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en "......░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒░▒▒▒▒▒ ░░░░░░░░▒▒▒▒▒▒ ▒ ....."; pad $half true + pad $half; echo -en "......░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒░░▒░▒▒▒▒▒▒ ▒░░░░░░░▒▒▒▒▒▒ ▒ ....."; pad $half true +else + if [[ $1 == "--color" || $1 == "-c" || $1 == "color" ]]; then + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒\e[0;36m░░░░░░░░\e[0;34m▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒\e[0;36m░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒\e[0;36m░░░░░░░░\e[0;34m▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒ ▒▒▒▒▒▒▒▒\e[0;36m░░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░░\e[0;34m▒▒▒▒ ▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░░\e[0;34m▒▒▒ ▒▒▒▒\e[0;36m░░\e[0;34m▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░░\e[0;34m▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░░ \e[0;33m░░░░░░░░░░░░░ ░░░░░░░░░░░░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░ \e[0;34m▒ \e[0;33m░░░▓▓▓▓▓▓▓▓▓▓▓▓░░ ░░░░░░░░░░░░░░░ ░ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░░ \e[0;33m░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░░ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░ \e[0;34m▒ \e[0;33m░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ ░░▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░ ░ \e[0;33m░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░ ░ \e[0;33m░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░░░░░\e[0;34m▒ \e[0;33m░ ░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓░ ░ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░░░░ \e[0;33m░░░ ░ ▓▓▓▓▓▓▓▓░▓▓▓▓░░░▓░░░░░░▓▓▓▓▓ ░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░░\e[0;34m▒▒ \e[0;33m░░░░░ ░ ▓▓▓▓▓▓░▓▓▓▓░░▓▓▓░░░░░░▓▓ ░ ░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░░\e[0;34m▒ \e[0;33m░░░░░░░░░ ░ ░▓░░▓▓▓▓▓░▓▓▓░░░░░ ░ ░░ ░░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░\e[0;34m▒▒ \e[0;33m░░░░░░░ ░░ ▓▓▓▓▓▓▓▓▓░░ ░░ ░ ░░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░\e[0;34m▒▒ \e[0;33m░░░░░░░░░░ ░▓▓▓▓▓▓▓░░░ ░░░ ░ ░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░ \e[0;34m▒ \e[0;33m░░░░░░ ░░░▓▓▓░▓░░░░ ░ ░ ░░ ░ \e[0;34m▒ \e[0;37m."; pad $half true + pad $half; echo -en "\e[0;37m\e[0;36m░░░░░░░ \e[0;34m▒ \e[0;33m░░░░░░░ \e[0;39m▓▓ ▓ \e[0;33m░░ ░░░░░░░░░░░░░ ░ ░░ \e[0;39m▓ █▓ \e[0;33m░ ░ ░ \e[0;34m▒▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░\e[0;34m▒ ▒ \e[0;33m░░░░░░░░ \e[0;39m▓▓██ \e[0;36m▓ ██ \e[0;39m██▓ \e[0;33m▓ ░░░▓░ ░ ░ ░░░░ ▓ \e[0;39m██ \e[0;36m▓█ ▓\e[0;39m ██▓▓ \e[0;33m░░░░ ░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░\e[0;34m▒ ▒▒ \e[0;33m░░░░░░░░░ \e[0;39m▓██ \e[0;36m▓▓ ▓ \e[0;39m██▓ \e[0;33m▓░░░░▓▓░ ░░░░░░░░ ▓ \e[0;39m▓██ \e[0;36m▓ ▓\e[0;39m ██▓▓ \e[0;33m░░░░░░░ ░ \e[0;34m▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m.\e[0;36m░░░░░ \e[0;34m▒\e[0;36m░ \e[0;33m░░░░░░░▓░░ \e[0;39m▓███ \e[0;36m▓▓▓▓ \e[0;39m███░ \e[0;33m░░░░▓▓░░░░░░░░░░ \e[0;39m░▓██ \e[0;36m▓▓▓ \e[0;39m███▓ \e[0;33m░░▓▓░░ ░ \e[0;34m▒ ▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ \e[0;34m▒\e[0;36m░ \e[0;33m░░░░▓▓▓▓▓▓░ \e[0;39m███ ██ \e[0;33m░░░░░▓▓▓▓▓░░░░░░░ \e[0;39m███ ████ \e[0;33m░░▓▓▓▓░░ ░ \e[0;34m▒ ▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ \e[0;34m▒ \e[0;36m░\e[0;34m▒ \e[0;33m░░▓▓▓▓▓▓▓▓▓▓ \e[0;39m██████ \e[0;33m▓▓▓░░ ░░░░▓▓▓▓▓▓░░░░░░░░░▓▓▓ \e[0;39m█████ \e[0;33m▓▓▓▓▓▓▓░░░░ \e[0;34m▒▒ ▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ ░ ░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█░░░░░░░▓▓▓▓▓▓▓░░░░ ░░ ░░▓░▓▓░░░░░░░▓▓▓▓▓▓░░ \e[0;34m▒▒ ▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░ ░ ░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██ ░░░░░░░▓▓▓▓▓▓▓░░░░ ░░░░░ ░░░░░░░░░▓▓▓▓▓░░ ░ \e[0;34m▒▒ ▒ \e[0;37m.."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░\e[0;34m▒\e[0;36m░░\e[0;34m▒\e[0;36m░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓░░░ ░░░░░░░░░░░░░░░░░░▓▓░░░░ \e[0;34m▒▒ ▒ \e[0;37m..."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░\e[0;34m▒\e[0;36m░░ ░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓░░░░ ░░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒▒ ▒ \e[0;37m..."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░░░░ \e[0;34m▒\e[0;36m░\e[0;34m▒ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓░░ ░░░░░ ░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒ ▒ \e[0;37m..."; pad $half true + pad $half; echo -en "\e[0;37m..\e[0;36m░░░░░░░░░░░ \e[0;33m░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ░ ░░░░░░░░░░░░░░░ \e[0;34m▒ ▒ \e[0;37m..."; pad $half true + pad $half; echo -en "\e[0;37m...\e[0;36m░░░░░░░░░░░\e[0;34m▒ ▒▒ \e[0;33m▓▓▓▓▓▓▓▓▓▓▓▓▓ \e[0;36m░░░░░░░░░░\e[0;34m▒▒ ▒▒▒▒▒ \e[0;34m▒ ▒ \e[0;37m...."; pad $half true + pad $half; echo -en "\e[0;37m...\e[0;36m░░░░░░░░░░ ░\e[0;34m▒ ▒▒▒\e[0;36m░░░ \e[0;33m▓▓▓▓▓▓ \e[0;36m░░░░░░░░░░░░░\e[0;34m▒▒▒ ▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒ ▒▒▒▒▒▒▒ ▒▒ ▒ \e[0;37m...."; pad $half true + pad $half; echo -en "\e[0;37m...\e[0;36m░░░░░░░░░░ ░░░ \e[0;34m▒▒▒\e[0;36m░░░░░░ ░░░░░ ░░░░░░░░░░\e[0;34m▒\e[0;36m░\e[0;34m▒ ▒▒▒▒▒▒\e[0;36m░░░░░░\e[0;34m▒▒▒▒▒\e[0;36m░\e[0;34m▒▒▒▒ ▒▒ \e[0;37m...."; pad $half true + pad $half; echo -en "\e[0;37m....\e[0;36m░░░░░░░░░░ ░░░░░ \e[0;34m▒▒\e[0;36m░░░░░░░░░░░░░░ ░░░░░░░░░ \e[0;34m▒\e[0;36m░\e[0;34m▒▒ ▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒▒▒▒\e[0;36m░░\e[0;34m▒▒▒ ▒▒▒ \e[0;37m....."; pad $half true + pad $half; echo -en "\e[0;37m....\e[0;36m░░░░░░░░░░░░░░░░░░ \e[0;34m▒\e[0;36m░░░░░░░░░░░ ░░░░░░░░░░░░░░ \e[0;34m▒ ▒▒▒▒▒▒▒\e[0;36m░\e[0;34m▒▒▒▒▒▒\e[0;36m░░░░\e[0;34m▒▒▒ ▒▒ \e[0;37m....."; pad $half true + pad $half; echo -en "\e[0;37m....\e[0;36m░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒▒▒▒▒▒▒ \e[0;34m▒ \e[0;36m░░░\e[0;34m▒▒▒▒ ▒▒▒ \e[0;37m....."; pad $half true + pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ \e[0;34m▒\e[0;36m░\e[0;34m▒▒▒ ▒▒▒ ▒\e[0;36m░░░░░░░░░░\e[0;34m▒ ▒▒▒▒ ▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒ \e[0;36m░░\e[0;34m▒▒▒▒▒▒\e[0;36m░░░░░░░░░░░░░\e[0;34m▒ \e[0;36m░\e[0;34m▒▒▒▒ ▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒ ▒▒\e[0;36m░\e[0;34m▒▒▒▒▒▒▒\e[0;36m░░░░░░░░░░ ░░\e[0;34m▒▒▒▒▒ \e[0;34m▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m.....\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒ \e[0;36m░\e[0;34m▒▒▒▒▒▒▒▒▒\e[0;36m░░\e[0;34m▒\e[0;36m░░░░░░ ░░\e[0;34m▒▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m......\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒\e[0;36m░░\e[0;34m▒\e[0;36m░\e[0;34m▒▒▒ ▒▒▒▒▒\e[0;36m░░░░░░░░░\e[0;34m▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m......\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒▒\e[0;36m░\e[0;34m▒▒▒▒▒ \e[0;36m░░░░░░░░\e[0;34m▒▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true + pad $half; echo -en "\e[0;37m......\e[0;36m░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░\e[0;34m▒▒▒\e[0;36m░░\e[0;34m▒\e[0;36m░\e[0;34m▒▒▒▒▒▒ ▒\e[0;36m░░░░░░░\e[0;34m▒▒▒▒▒▒ ▒ \e[0;37m......"; pad $half true + elif [[ $1 = '--version' || $1 = '-v' || $1 == "version" ]]; then + echo "ryu version 1.0.0" + echo "xero / syntax-samurai " + echo " ▟▙" + echo "▟▒░░░░░░░▜▙▜████████████████████████████████▛" + echo "▜▒░░░░░░░▟▛▟▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▛" + echo " ▜▛" + echo "this program is free software, and distributed under the Creative Commons " + echo "Attribution-ShareAlike 3.0 Unported License (CC BY-SA 3.0)" + echo "http://creativecommons.org/licenses/by-sa/3.0/" + exit + elif [[ $1 = '--help' || $1 = '-h' || $1 == "help" ]]; then + echo "" + echo " s y n t a x . s a m u r a i" + echo " p r e s e n t s" + echo "" + echo " ███████ ██ ██ ██ ██" + echo " ░██░░░░██ ░░██ ██ ░██ ░██" + echo " ░██ ░██ ░░████ ░██ ░██" + echo " ░███████ ░░██ ░██ ░██" + echo " ░██░░░██ ░██ ░██ ░██" + echo " ░██ ░░██ ░██ ░██ ░██" + echo " ░██ ░░██ ░██ ░░███████" + echo " ░░ ░░ ░░ ░░░░░░░" + echo "" + echo " usage: ryu [option]" + echo "" + echo " ansi art of ryu hayabusa from ninja gaiden" + echo "" + echo " --help, -h : display this message" + echo " --version, -v : display version and license" + echo " --grey, -g : display the art [default]" + echo " --color, -c : display the art in color" + echo "" + echo " ▟▙" + echo "▟▒░░░░░░░▜▙▜████████████████████████████████▛" + echo "▜▒░░░░░░░▟▛▟▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▛" + echo " ▜▛" + echo "" + echo " author: xero harrison > http://xero.nu" + echo " homepage: http://git.io/ryu" + echo " crew: http://github.com/syntax-samurai" + echo "" + exit + else + echo "unknown option" + echo "call 'ryu --help' for more info" + exit + fi +fi +exit \ No newline at end of file diff --git a/.local/bin/sdat2img b/.local/bin/sdat2img new file mode 100755 index 0000000..d44ee34 --- /dev/null +++ b/.local/bin/sdat2img @@ -0,0 +1,97 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#==================================================== +# FILE: sdat2img.py +# AUTHORS: xpirt - luxi78 - howellzhu +# DATE: 2015-10-11 16:33:32 CST +#==================================================== + +import sys, os + +try: + TRANSFER_LIST_FILE = str(sys.argv[1]) + NEW_DATA_FILE = str(sys.argv[2]) + OUTPUT_IMAGE_FILE = str(sys.argv[3]) +except IndexError: + print ("\nsdat2img - usage is: \n\n sdat2img \n\n") + print ("Visit xda thread for more information.\n") + try: + input = raw_input + except NameError: pass + input ("Press ENTER to exit...\n") + sys.exit() + +BLOCK_SIZE = 4096 + +def rangeset(src): + src_set = src.split(',') + num_set = [int(item) for item in src_set] + if len(num_set) != num_set[0]+1: + print ('Error on parsing following data to rangeset:\n%s' % src) + sys.exit(1) + + return tuple ([ (num_set[i], num_set[i+1]) for i in range(1, len(num_set), 2) ]) + +def parse_transfer_list_file(path): + trans_list = open(TRANSFER_LIST_FILE, 'r') + version = int(trans_list.readline()) # 1st line = transfer list version + new_blocks = int(trans_list.readline()) # 2nd line = total number of blocks + + # system.transfer.list: + # - version 1: android-5.0.0_r1 + # - version 2: android-5.1.0_r1 + # - version 3: android-6.0.0_r1 + + # skip next 2 lines. we don't need this stuff now + if version >= 2: + trans_list.readline() # 3rd line = stash entries needed simultaneously + trans_list.readline() # 4th line = number of blocks that will be stashed + + commands = [] + for line in trans_list: + line = line.split(' ') # 5th & next lines should be only commands + cmd = line[0] + if cmd in ['erase', 'new', 'zero']: + commands.append([cmd, rangeset(line[1])]) + else: + # skip lines starting with numbers, they're not commands anyway. + if not cmd[0].isdigit(): + print ('No valid command: %s.' % cmd) + trans_list.close() + sys.exit(1) + + trans_list.close() + return version, new_blocks, commands + +def init_output_file_size(output_file_obj, commands): + all_block_sets = [i for command in commands for i in command[1]] + max_block_num = max(pair[1] for pair in all_block_sets) + output_file_obj.seek(max_block_num*BLOCK_SIZE - 1) + output_file_obj.write('\0'.encode('utf-8')) + output_file_obj.flush() + +def main(argv): + version, new_blocks, commands = parse_transfer_list_file(TRANSFER_LIST_FILE) + output_img = open(OUTPUT_IMAGE_FILE, 'wb') + init_output_file_size(output_img, commands) + new_data_file = open(NEW_DATA_FILE, 'rb') + + for command in commands: + if command[0] == 'new': + for block in command[1]: + begin = block[0] + end = block[1] + block_count = end - begin + data = new_data_file.read(block_count*BLOCK_SIZE) + print('Copying {} blocks into position {}...'.format(block_count, begin)) + output_img.seek(begin*BLOCK_SIZE) + output_img.write(data) + else: + print('Skipping command %s' % command[0]) + + output_img.close() + new_data_file.close() + print ('\nDone! Output image: %s' % os.path.realpath(output_img.name)) + +if __name__ == "__main__": + main(sys.argv) diff --git a/.local/bin/sfntdiff b/.local/bin/sfntdiff new file mode 120000 index 0000000..fd6729d --- /dev/null +++ b/.local/bin/sfntdiff @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/sfntdiff \ No newline at end of file diff --git a/.local/bin/sfntedit b/.local/bin/sfntedit new file mode 120000 index 0000000..3edd912 --- /dev/null +++ b/.local/bin/sfntedit @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/sfntedit \ No newline at end of file diff --git a/.local/bin/sign-omni.sh b/.local/bin/sign-omni.sh new file mode 100755 index 0000000..905556d --- /dev/null +++ b/.local/bin/sign-omni.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +# Copyright (C) 2018-20 Akhil Narang +# SPDX-License-Identifier: GPL-3.0-only +# AOSiP upload script + +# shellcheck disable=SC2086,SC2029 +# SC2086: Double quote to prevent globbing and word splitting +# SC2029: Note that, unescaped, this expands on the client side. + +export TZ=UTC +DATE="$(date +%Y%m%d)" +OMNI_VERSION="omni-13-${DATE}-cheetah-gapps" +SIGNED_OTAPACKAGE="${OMNI_VERSION}.zip" +INSTALLIMG=("boot.img" "dtbo.img" "init_boot.img" "vendor_boot.img" "vendor_kernel_boot.img") +INSTALLZIP="${OMNI_VERSION}-bootkit.zip" +SIGNED_TARGET_FILES="signed-target_files.zip" +SIGNED_IMAGE_PACKAGE="${OMNI_VERSION}-fastboot.zip" +OUT="out/target/product/cheetah" +TEMP_DIR=$(mktemp -d) +UPLOAD="./upload_assets" +mkdir -pv "$UPLOAD" +if [[ $WITH_GAPPS ]]; then + SIGNING_FLAGS="-e CronetDynamite.apk= -e DynamiteLoader.apk= -e DynamiteModulesA.apk= -e AdsDynamite.apk= -e DynamiteModulesC.apk= -e MapsDynamite.apk= -e GoogleCertificates.apk= -e AndroidPlatformServices.apk= -e PrebuiltGmsCoreSc.apk= -e MlkitBarcodeUIPrebuilt.apk= -e VisionBarcodePrebuilt.apk=" +fi + +echo "Signing target_files APKs" +sign_target_files_apks -o -d ~/.android-certs $SIGNING_FLAGS "$OUT"/obj/PACKAGING/target_files_intermediates/omni_cheetah-target_files-eng.*.zip "$UPLOAD/$SIGNED_TARGET_FILES" || exit 1 + +if [[ $WITH_OTA ]]; then + echo "Generating signed otapackage" + ota_from_target_files -k ~/.android-certs/releasekey "$UPLOAD/$SIGNED_TARGET_FILES" "$UPLOAD/$SIGNED_OTAPACKAGE" || exit 1 +fi + +echo "Generating signed images package" +img_from_target_files "$UPLOAD/$SIGNED_TARGET_FILES" "$UPLOAD/$SIGNED_IMAGE_PACKAGE" || exit 1 + +if [[ $WITH_BOOTKIT ]]; then + echo "Setting up bootkit" + TEMP_DIR=$(mktemp -d) + for IMAGE in "${INSTALLIMG[@]}"; do + 7z e "$UPLOAD/$SIGNED_TARGET_FILES" IMAGES/"$IMAGE" -so > "$TEMP_DIR/$IMAGE" + done + find "$TEMP_DIR" -print | zip -j "$UPLOAD/$INSTALLZIP" -@ + rm -vrf "${TEMP_DIR:?}/"* +fi + +cd $UPLOAD || exit + +if [[ $WITH_MD5 ]]; then + echo "Generating MD5 checksums" + md5sum {"$SIGNED_OTAPACKAGE","$SIGNED_IMAGE_PACKAGE","$INSTALLZIP"} >> "$OMNI_VERSION-md5sums.txt" +fi + +echo "Removing old zips from webserver" +ssh oizys 'rm -rf /srv/www/cheetah/omni-*.*' +echo "Uploading to webserver and gdrive" +for FILE in "$OMNI_VERSION"{,-*}.zip; do + scp $FILE cirrus:/srv/www/cheetah/ + rclone copy -P --drive-chunk-size=256M $FILE gdrive:/uploads/cheetah/ +done +cd - || exit +ls -lah $UPLOAD +read -p "Remove ./upload (y/n)? " answer +case ${answer:0:1} in + y|Y ) + rm -rfv $UPLOAD + ;; + * ) + exit + ;; +esac + +# dialog --yesno "Remove ./upload (build zips)" 20 60 && rm -rfv $UPLOAD diff --git a/.local/bin/simg2img b/.local/bin/simg2img new file mode 100755 index 0000000..9e59c2a Binary files /dev/null and b/.local/bin/simg2img differ diff --git a/.local/bin/simg2simg b/.local/bin/simg2simg new file mode 100755 index 0000000..3e606fe Binary files /dev/null and b/.local/bin/simg2simg differ diff --git a/.local/bin/skull b/.local/bin/skull new file mode 100755 index 0000000..91deff5 --- /dev/null +++ b/.local/bin/skull @@ -0,0 +1,70 @@ +#!/bin/bash + +f=3 b=4 +for j in f b; do + for i in {0..7}; do + printf -v $j$i %b "\e[${!j}${i}m" + done +done +bld=$'\e[1m' +rst=$'\e[0m' +inv=$'\e[7m' + + +cat << EOF +$f4 ...----.... +$f4 ..-:"'' ''"-.. +$f4 .-' '-. +$f4 .' . . '. +$f4 .' . . . . .''. +$f4 .' . . . . . . . ..:. +$f4 .' . . . . . . .. . . ....::. +$f4 .. . . . . . . .. . ....:IA. +$f4 .: . . . . . . .. . .. .. ....:IA. +$f4 .: . . .. . . . . .. . ... ....:.:VHA. +$f4 '.. . .. . . . . .. . .. . .....:.::IHHB. +$f4 .:. . . . . . . . . . . ...:.:... .......:HIHMM. +$f4 .:.... . . ."::"'.. . . . .:.:.:II;,. .. ..:IHIMMA +$f4 ':.:.. ..::IHHHHHI::. . . ...:.::::.,,,. . ....VIMMHM +$f4 .:::I. .AHHHHHHHHHHAI::. .:...,:IIHHHHHHMMMHHL:. . VMMMM +$f4 .:.:V.:IVHHHHHHHMHMHHH::..:" .:HIHHHHHHHHHHHHHMHHA. .VMMM. +$f4 :..V.:IVHHHHHMMHHHHHHHB... . .:VPHHMHHHMMHHHHHHHHHAI.:VMMI +$f4 ::V..:VIHHHHHHMMMHHHHHH. . .I":IIMHHMMHHHHHHHHHHHAPI:WMM +$f4 ::". .:.HHHHHHHHMMHHHHHI. . .:..I:MHMMHHHHHHHHHMHV:':H:WM +$f4 :: . :.::IIHHHHHHMMHHHHV .ABA.:.:IMHMHMMMHMHHHHV:'. .IHWW +$f4 '. ..:..:.:IHHHHHMMHV" .AVMHMA.:.'VHMMMMHHHHHV:' . :IHWV +$f4 :. .:...:".:.:TPP" .AVMMHMMA.:. "VMMHHHP.:... .. :IVAI +$f4 .:. '... .:"' . ..HMMMHMMMA::. ."VHHI:::.... .:IHW' +$f4 ... . . ..:IIPPIH: ..HMMMI.MMMV:I:. .:ILLH:.. ...:I:IM +$f4 : . .'"' .:.V". .. . :HMMM:IMMMI::I. ..:HHIIPPHI::'.P:HM. +$f4 :. . . .. ..:.. . :AMMM IMMMM..:...:IV":T::I::.".:IHIMA +$f4 'V:.. .. . .. . . . 'VMMV..VMMV :....:V:.:..:....::IHHHMH +$f4 "IHH:.II:.. .:. . . . . " :HB"" . . ..PI:.::.:::..:IHHMMV" +$f4 :IP""HHII:. . . . . .'V:. . . ..:IH:.:.::IHIHHMMMMM" +$f4 :V:. VIMA:I.. . . . .. . . .:.I:I:..:IHHHHMMHHMMM +$f4 :"VI:.VWMA::. .: . .. .:. ..:.I::.:IVHHHMMMHMMMMI +$f4 :."VIIHHMMA:. . . .: .:.. . .:.II:I:AMMMMMMHMMMMMI +$f4 :..VIHIHMMMI...::.,:.,:!"I:!"I!"I!"V:AI:VAMMMMMMHMMMMMM' +$f4 ':.:HIHIMHHA:"!!"I.:AXXXVVXXXXXXXA:."HPHIMMMMHHMHMMMMMV +$f4 V:H:I:MA:W'I :AXXXIXII:IIIISSSSSSXXA.I.VMMMHMHMMMMMM +$f4 'I::IVA ASSSSXSSSSBBSBMBSSSSSSBBMMMBS.VVMMHIMM'"' +$f4 I:: VPAIMSSSSSSSSSBSSSMMBSSSBBMMMMXXI:MMHIMMI +$f4 .I::. "H:XIIXBBMMMMMMMMMMMMMMMMMBXIXXMMPHIIMM' +$f4 :::I. ':XSSXXIIIIXSSBMBSSXXXIIIXXSMMAMI:.IMM +$f4 :::I:. .VSSSSSISISISSSBII:ISSSSBMMB:MI:..:MM +$f4 ::.I:. ':"SSSSSSSISISSXIIXSSSSBMMB:AHI:..MMM. +$f4 ::.I:. . ..:"BBSSSSSSSSSSSSBBBMMMB:AHHI::.HMMI +$f4 :..::. . ..::":BBBBBSSBBBMMMB:MMMMHHII::IHHMI +$f4 ':.I:... ....:IHHHHHMMMMMMMMMMMMMMMHHIIIIHMMV" +$f4 "V:. ..:...:.IHHHMMMMMMMMMMMMMMMMHHHMHHMHP' +$f4 ':. .:::.:.::III::IHHHHMMMMMHMHMMHHHHM" +$f4 "::....::.:::..:..::IIIIIHHHHMMMHHMV" +$f4 "::.::.. .. . ...:::IIHHMMMMHMV" +$f4 "V::... . .I::IHHMMV"' +$f4 '"VHVHHHAHHHHMMV:"' + +$rst + +EOF + + diff --git a/.local/bin/solo b/.local/bin/solo new file mode 100644 index 0000000..5df3d10 --- /dev/null +++ b/.local/bin/solo @@ -0,0 +1,8 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from solo.cli import solo_cli +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(solo_cli()) diff --git a/.local/bin/sparse2img b/.local/bin/sparse2img new file mode 100755 index 0000000..78ea4a3 --- /dev/null +++ b/.local/bin/sparse2img @@ -0,0 +1,5 @@ +#!/bin/bash + +simg2img system.img_sparsechunk.* system.img.tmp +img2ext4 system.img.tmp system.img +rm -rf system.img.tmp diff --git a/.local/bin/speedtest b/.local/bin/speedtest new file mode 100755 index 0000000..a5a0e7c Binary files /dev/null and b/.local/bin/speedtest differ diff --git a/.local/bin/spot b/.local/bin/spot new file mode 120000 index 0000000..30a3ba6 --- /dev/null +++ b/.local/bin/spot @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/spot \ No newline at end of file diff --git a/.local/bin/toascii b/.local/bin/toascii new file mode 100755 index 0000000..68c3802 --- /dev/null +++ b/.local/bin/toascii @@ -0,0 +1,8 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from toascii.cli import toascii_command +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(toascii_command()) diff --git a/.local/bin/toilet.sh b/.local/bin/toilet.sh new file mode 100755 index 0000000..6b9ada8 --- /dev/null +++ b/.local/bin/toilet.sh @@ -0,0 +1,6 @@ +for f in /usr/share/figlet/* +do + fs=$(basename $f) + fname=${fs%%.tlf} + toilet -f $fname $fname +done diff --git a/.local/bin/ttfcomponentizer b/.local/bin/ttfcomponentizer new file mode 120000 index 0000000..0969686 --- /dev/null +++ b/.local/bin/ttfcomponentizer @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/ttfcomponentizer \ No newline at end of file diff --git a/.local/bin/ttfdecomponentizer b/.local/bin/ttfdecomponentizer new file mode 120000 index 0000000..ce8dc18 --- /dev/null +++ b/.local/bin/ttfdecomponentizer @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/ttfdecomponentizer \ No newline at end of file diff --git a/.local/bin/ttxn b/.local/bin/ttxn new file mode 120000 index 0000000..2a91709 --- /dev/null +++ b/.local/bin/ttxn @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/ttxn \ No newline at end of file diff --git a/.local/bin/tx b/.local/bin/tx new file mode 120000 index 0000000..7c6ecc5 --- /dev/null +++ b/.local/bin/tx @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/tx \ No newline at end of file diff --git a/.local/bin/type1 b/.local/bin/type1 new file mode 120000 index 0000000..65609d9 --- /dev/null +++ b/.local/bin/type1 @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/type1 \ No newline at end of file diff --git a/.local/bin/unpack_bootimg b/.local/bin/unpack_bootimg new file mode 100755 index 0000000..83c2bbe --- /dev/null +++ b/.local/bin/unpack_bootimg @@ -0,0 +1,246 @@ +#!/usr/bin/env python +# Copyright 2018, The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""unpacks the bootimage. + +Extracts the kernel, ramdisk, second bootloader, dtb and recovery dtbo images. +""" + +from __future__ import print_function +from argparse import ArgumentParser, FileType +from struct import unpack +import os + +BOOT_IMAGE_HEADER_V3_PAGESIZE = 4096 +VENDOR_BOOT_IMAGE_HEADER_V3_SIZE = 2112 + +def create_out_dir(dir_path): + """creates a directory 'dir_path' if it does not exist""" + if not os.path.exists(dir_path): + os.makedirs(dir_path) + + +def extract_image(offset, size, bootimage, extracted_image_name): + """extracts an image from the bootimage""" + bootimage.seek(offset) + with open(extracted_image_name, 'wb') as file_out: + file_out.write(bootimage.read(size)) + + +def get_number_of_pages(image_size, page_size): + """calculates the number of pages required for the image""" + return (image_size + page_size - 1) // page_size + + +def cstr(s): + """Remove first NULL character and any character beyond.""" + return s.split('\0', 1)[0] + + +def format_os_version(os_version): + a = os_version >> 14 + b = os_version >> 7 & ((1<<7) - 1) + c = os_version & ((1<<7) - 1) + return '{}.{}.{}'.format(a, b, c) + + +def format_os_patch_level(os_patch_level): + y = os_patch_level >> 4 + y += 2000 + m = os_patch_level & ((1<<4) - 1) + return '{:04d}-{:02d}'.format(y, m) + + +def print_os_version_patch_level(value): + os_version = value >> 11 + os_patch_level = value & ((1<<11) - 1) + print('os version: %s' % format_os_version(os_version)) + print('os patch level: %s' % format_os_patch_level(os_patch_level)) + + +def unpack_bootimage(args): + """extracts kernel, ramdisk, second bootloader and recovery dtbo""" + kernel_ramdisk_second_info = unpack('9I', args.boot_img.read(9 * 4)) + version = kernel_ramdisk_second_info[8] + if version < 3: + print('kernel_size: %s' % kernel_ramdisk_second_info[0]) + print('kernel load address: %#x' % kernel_ramdisk_second_info[1]) + print('ramdisk size: %s' % kernel_ramdisk_second_info[2]) + print('ramdisk load address: %#x' % kernel_ramdisk_second_info[3]) + print('second bootloader size: %s' % kernel_ramdisk_second_info[4]) + print('second bootloader load address: %#x' % kernel_ramdisk_second_info[5]) + print('kernel tags load address: %#x' % kernel_ramdisk_second_info[6]) + print('page size: %s' % kernel_ramdisk_second_info[7]) + print_os_version_patch_level(unpack('I', args.boot_img.read(1 * 4))[0]) + else: + print('kernel_size: %s' % kernel_ramdisk_second_info[0]) + print('ramdisk size: %s' % kernel_ramdisk_second_info[1]) + print_os_version_patch_level(kernel_ramdisk_second_info[2]) + + print('boot image header version: %s' % version) + + if version < 3: + product_name = cstr(unpack('16s', args.boot_img.read(16))[0].decode()) + print('product name: %s' % product_name) + cmdline = cstr(unpack('512s', args.boot_img.read(512))[0].decode()) + print('command line args: %s' % cmdline) + else: + cmdline = cstr(unpack('1536s', args.boot_img.read(1536))[0].decode()) + print('command line args: %s' % cmdline) + + if version < 3: + args.boot_img.read(32) # ignore SHA + + if version < 3: + extra_cmdline = cstr(unpack('1024s', + args.boot_img.read(1024))[0].decode()) + print('additional command line args: %s' % extra_cmdline) + + if version < 3: + kernel_size = kernel_ramdisk_second_info[0] + ramdisk_size = kernel_ramdisk_second_info[2] + second_size = kernel_ramdisk_second_info[4] + page_size = kernel_ramdisk_second_info[7] + else: + kernel_size = kernel_ramdisk_second_info[0] + ramdisk_size = kernel_ramdisk_second_info[1] + second_size = 0 + page_size = BOOT_IMAGE_HEADER_V3_PAGESIZE + + if 0 < version < 3: + recovery_dtbo_size = unpack('I', args.boot_img.read(1 * 4))[0] + print('recovery dtbo size: %s' % recovery_dtbo_size) + recovery_dtbo_offset = unpack('Q', args.boot_img.read(8))[0] + print('recovery dtbo offset: %#x' % recovery_dtbo_offset) + boot_header_size = unpack('I', args.boot_img.read(4))[0] + print('boot header size: %s' % boot_header_size) + else: + recovery_dtbo_size = 0 + if 1 < version < 3: + dtb_size = unpack('I', args.boot_img.read(4))[0] + print('dtb size: %s' % dtb_size) + dtb_load_address = unpack('Q', args.boot_img.read(8))[0] + print('dtb address: %#x' % dtb_load_address) + else: + dtb_size = 0 + + + # The first page contains the boot header + num_header_pages = 1 + + num_kernel_pages = get_number_of_pages(kernel_size, page_size) + kernel_offset = page_size * num_header_pages # header occupies a page + image_info_list = [(kernel_offset, kernel_size, 'kernel')] + + num_ramdisk_pages = get_number_of_pages(ramdisk_size, page_size) + ramdisk_offset = page_size * (num_header_pages + num_kernel_pages + ) # header + kernel + image_info_list.append((ramdisk_offset, ramdisk_size, 'ramdisk')) + + if second_size > 0: + second_offset = page_size * ( + num_header_pages + num_kernel_pages + num_ramdisk_pages + ) # header + kernel + ramdisk + image_info_list.append((second_offset, second_size, 'second')) + + if recovery_dtbo_size > 0: + image_info_list.append((recovery_dtbo_offset, recovery_dtbo_size, + 'recovery_dtbo')) + if dtb_size > 0: + num_second_pages = get_number_of_pages(second_size, page_size) + num_recovery_dtbo_pages = get_number_of_pages(recovery_dtbo_size, page_size) + dtb_offset = page_size * ( + num_header_pages + num_kernel_pages + num_ramdisk_pages + num_second_pages + + num_recovery_dtbo_pages + ) + + image_info_list.append((dtb_offset, dtb_size, 'dtb')) + + for image_info in image_info_list: + extract_image(image_info[0], image_info[1], args.boot_img, + os.path.join(args.out, image_info[2])) + + +def unpack_vendor_bootimage(args): + kernel_ramdisk_info = unpack('5I', args.boot_img.read(5 * 4)) + print('vendor boot image header version: %s' % kernel_ramdisk_info[0]) + print('kernel load address: %#x' % kernel_ramdisk_info[2]) + print('ramdisk load address: %#x' % kernel_ramdisk_info[3]) + print('vendor ramdisk size: %s' % kernel_ramdisk_info[4]) + + cmdline = cstr(unpack('2048s', args.boot_img.read(2048))[0].decode()) + print('vendor command line args: %s' % cmdline) + + tags_load_address = unpack('I', args.boot_img.read(1 * 4))[0] + print('kernel tags load address: %#x' % tags_load_address) + + product_name = cstr(unpack('16s', args.boot_img.read(16))[0].decode()) + print('product name: %s' % product_name) + + dtb_size = unpack('2I', args.boot_img.read(2 * 4))[1] + print('dtb size: %s' % dtb_size) + dtb_load_address = unpack('Q', args.boot_img.read(8))[0] + print('dtb address: %#x' % dtb_load_address) + + ramdisk_size = kernel_ramdisk_info[4] + page_size = kernel_ramdisk_info[1] + + # The first pages contain the boot header + num_boot_header_pages = get_number_of_pages(VENDOR_BOOT_IMAGE_HEADER_V3_SIZE, page_size) + num_boot_ramdisk_pages = get_number_of_pages(ramdisk_size, page_size) + ramdisk_offset = page_size * num_boot_header_pages + image_info_list = [(ramdisk_offset, ramdisk_size, 'vendor_ramdisk')] + + dtb_offset = page_size * (num_boot_header_pages + num_boot_ramdisk_pages + ) # header + vendor_ramdisk + image_info_list.append((dtb_offset, dtb_size, 'dtb')) + + for image_info in image_info_list: + extract_image(image_info[0], image_info[1], args.boot_img, + os.path.join(args.out, image_info[2])) + + +def unpack_image(args): + boot_magic = unpack('8s', args.boot_img.read(8))[0].decode() + print('boot_magic: %s' % boot_magic) + if boot_magic == "ANDROID!": + unpack_bootimage(args) + elif boot_magic == "VNDRBOOT": + unpack_vendor_bootimage(args) + + +def parse_cmdline(): + """parse command line arguments""" + parser = ArgumentParser( + description='Unpacks boot.img/recovery.img, extracts the kernel,' + 'ramdisk, second bootloader, recovery dtbo and dtb') + parser.add_argument( + '--boot_img', + help='path to boot image', + type=FileType('rb'), + required=True) + parser.add_argument('--out', help='path to out binaries', default='out') + return parser.parse_args() + + +def main(): + """parse arguments and unpack boot image""" + args = parse_cmdline() + create_out_dir(args.out) + unpack_image(args) + + +if __name__ == '__main__': + main() diff --git a/.local/bin/unpackbootimg b/.local/bin/unpackbootimg new file mode 100755 index 0000000..63fccba Binary files /dev/null and b/.local/bin/unpackbootimg differ diff --git a/.local/bin/waterfallplot b/.local/bin/waterfallplot new file mode 120000 index 0000000..a057b5a --- /dev/null +++ b/.local/bin/waterfallplot @@ -0,0 +1 @@ +/home/xstefen/.local/pipx/venvs/afdko/bin/waterfallplot \ No newline at end of file diff --git a/.local/bin/west b/.local/bin/west new file mode 100755 index 0000000..894ad55 --- /dev/null +++ b/.local/bin/west @@ -0,0 +1,8 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from west.app.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/.local/bin/xbb_up.sh b/.local/bin/xbb_up.sh new file mode 100755 index 0000000..67e3727 --- /dev/null +++ b/.local/bin/xbb_up.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +am_i_root() { + if [ "$EUID" -ne 0 ]; then + echo "Please run as root or with sudo"; + exit; + fi +} + +create_desktop_entry() { +cat << "EOF" > "/usr/share/applications/xbackbone-uploader-usr_admin.desktop" +[Desktop Entry] +Encoding=UTF-8 +Exec=&EXEC& %U +Type=Application +Terminal=false; +Comment=Uploader script for XBackBone (admin) +Name=XBackBone Uploader (admin) +Icon=image +GenericName=File Uploader +StartupNotify=false +Categories=Graphics; +MimeType=image/bmp;image/jpeg;image/gif;image/png;image/tiff;image/x-bmp;image/x-ico;image/x-png;image/x-pcx;image/x-tga;image/xpm;image/svg+xml; +NoDisplay=false +EOF + + sed -i "s:&EXEC&:${1}:g" "/usr/share/applications/xbackbone-uploader-usr_admin.desktop" + echo "Desktop entry created!"; +} + +upload() { + RESPONSE="$(curl -s -F "token=token_cf3ed0bef839c33df3e42915e77e2816" -F "upload=@${1}" http://files.xstefen.dev/upload)"; + + if [[ "$(echo "${RESPONSE}" | jq -r '.message')" == "OK" ]]; then + URL="$(echo "${RESPONSE}" | jq -r '.url')"; + if [ "${DESKTOP_SESSION}" != "" ]; then + echo "${URL}" | xclip -selection c; + notify-send "Upload completed!" "${URL}"; + else + echo "${URL}"; + fi + exit 0; + else + MESSAGE="$(echo "${RESPONSE}" | jq -r '.message')"; + if [ $? -ne 0 ]; then + echo "Unexpected response:"; + echo "${RESPONSE}"; + exit 1; + fi + if [ "${DESKTOP_SESSION}" != "" ]; then + notify-send "Error!" "${MESSAGE}"; + else + echo "Error! ${MESSAGE}"; + fi + exit 1; + fi +} + +check() { + ERRORS=0; + + if [ ! -x "$(command -v jq)" ]; then + echo "jq command not found."; + ERRORS=1; + fi + + if [ ! -x "$(command -v curl)" ]; then + echo "curl command not found."; + ERRORS=1; + fi + + if [ ! -x "$(command -v xclip)" ] && [ "${DESKTOP_SESSION}" != "" ]; then + echo "xclip command not found."; + ERRORS=1; + fi + + if [ ! -x "$(command -v notify-send)" ] && [ "${DESKTOP_SESSION}" != "" ]; then + echo "notify-send command not found."; + ERRORS=1; + fi + + if [ "${ERRORS}" -eq 1 ]; then + exit 1; + fi +} + +check +if [ "${1}" == "-desktop-entry" ]; then + am_i_root + create_desktop_entry "$(realpath "${0}")"; + exit; +fi + +if [ -f "${1}" ]; then + upload "${1}"; +else + if [ "${DESKTOP_SESSION}" != "" ]; then + notify-send "Error!" "File specified not exists."; + exit 1; + else + echo "Error! File specified not exists."; + exit 1; + fi +fi diff --git a/.local/share/yadm/archive b/.local/share/yadm/archive new file mode 100644 index 0000000..829d60a Binary files /dev/null and b/.local/share/yadm/archive differ diff --git a/.nanorc b/.nanorc new file mode 100644 index 0000000..a8533c0 --- /dev/null +++ b/.nanorc @@ -0,0 +1,20 @@ +set linenumbers +set tabsize 4 +set tabstospaces +set multibuffer +set nohelp +set nowrap +#set smooth +set wordbounds + +set titlecolor brightwhite,blue +set statuscolor brightwhite,green +set errorcolor brightwhite,red +set selectedcolor brightwhite,magenta +set stripecolor ,yellow +set numbercolor cyan +set keycolor cyan +set functioncolor green + +include /usr/share/nano/*.nanorc +#include /usr/share/nano-syntax-highlighting/*.nanorc diff --git a/.nvidia-settings-rc b/.nvidia-settings-rc new file mode 100644 index 0000000..37b17b0 --- /dev/null +++ b/.nvidia-settings-rc @@ -0,0 +1,91 @@ +# +# /home/xstefen/.nvidia-settings-rc +# +# Configuration file for nvidia-settings - the NVIDIA Settings utility +# Generated on Tue Oct 3 01:06:40 2023 +# + +# ConfigProperties: + +RcFileLocale = C +DisplayStatusBar = Yes +SliderTextEntries = Yes +IncludeDisplayNameInConfigFile = No +UpdateRulesOnProfileNameChange = Yes +Timer = Memory_Used_(GPU_0),Yes,3000 +Timer = Thermal_Monitor_(GPU_0),Yes,1000 +Timer = PowerMizer_Monitor_(GPU_0),Yes,1000 + +# Attributes: + +0/SyncToVBlank=1 +0/LogAniso=4 +0/FSAA=11 +0/TextureClamping=1 +0/FXAA=0 +0/AllowFlipping=1 +0/FSAAAppControlled=0 +0/LogAnisoAppControlled=0 +0/OpenGLImageSettings=0 +0/FSAAAppEnhanced=1 +0/ShowGraphicsVisualIndicator=0 +[DPY:DVI-D-0]/RedBrightness=0.000000 +[DPY:DVI-D-0]/GreenBrightness=0.000000 +[DPY:DVI-D-0]/BlueBrightness=0.000000 +[DPY:DVI-D-0]/RedContrast=0.000000 +[DPY:DVI-D-0]/GreenContrast=0.000000 +[DPY:DVI-D-0]/BlueContrast=0.000000 +[DPY:DVI-D-0]/RedGamma=1.000000 +[DPY:DVI-D-0]/GreenGamma=1.000000 +[DPY:DVI-D-0]/BlueGamma=1.000000 +[DPY:DVI-D-0]/Dithering=0 +[DPY:DVI-D-0]/DitheringMode=0 +[DPY:DVI-D-0]/DitheringDepth=0 +[DPY:DVI-D-0]/DigitalVibrance=0 +[DPY:DVI-D-0]/ColorSpace=0 +[DPY:DVI-D-0]/ColorRange=0 +[DPY:DVI-D-0]/SynchronousPaletteUpdates=0 +[DPY:HDMI-0]/Dithering=0 +[DPY:HDMI-0]/DitheringMode=0 +[DPY:HDMI-0]/DitheringDepth=0 +[DPY:HDMI-0]/ColorSpace=0 +[DPY:HDMI-0]/ColorRange=0 +[DPY:HDMI-0]/SynchronousPaletteUpdates=0 +[DPY:DP-0]/Dithering=0 +[DPY:DP-0]/DitheringMode=0 +[DPY:DP-0]/DitheringDepth=0 +[DPY:DP-0]/ColorSpace=0 +[DPY:DP-0]/ColorRange=0 +[DPY:DP-0]/SynchronousPaletteUpdates=0 +[DPY:DP-1]/Dithering=0 +[DPY:DP-1]/DitheringMode=0 +[DPY:DP-1]/DitheringDepth=0 +[DPY:DP-1]/ColorSpace=0 +[DPY:DP-1]/ColorRange=0 +[DPY:DP-1]/SynchronousPaletteUpdates=0 +[DPY:DP-2]/Dithering=0 +[DPY:DP-2]/DitheringMode=0 +[DPY:DP-2]/DitheringDepth=0 +[DPY:DP-2]/ColorSpace=0 +[DPY:DP-2]/ColorRange=0 +[DPY:DP-2]/SynchronousPaletteUpdates=0 +[DPY:DP-3]/Dithering=0 +[DPY:DP-3]/DitheringMode=0 +[DPY:DP-3]/DitheringDepth=0 +[DPY:DP-3]/ColorSpace=0 +[DPY:DP-3]/ColorRange=0 +[DPY:DP-3]/SynchronousPaletteUpdates=0 +[DPY:DP-4]/Dithering=0 +[DPY:DP-4]/DitheringMode=0 +[DPY:DP-4]/DitheringDepth=0 +[DPY:DP-4]/ColorSpace=0 +[DPY:DP-4]/ColorRange=0 +[DPY:DP-4]/SynchronousPaletteUpdates=0 +[DPY:DP-5]/Dithering=0 +[DPY:DP-5]/DitheringMode=0 +[DPY:DP-5]/DitheringDepth=0 +[DPY:DP-5]/ColorSpace=0 +[DPY:DP-5]/ColorRange=0 +[DPY:DP-5]/SynchronousPaletteUpdates=0 +[GPU:0]/GPUPowerMizerMode=1 +[GPU:0]/GPULogoBrightness=100 diff --git a/.profile b/.profile new file mode 100644 index 0000000..7b30254 --- /dev/null +++ b/.profile @@ -0,0 +1,17 @@ +# ~/.profile: executed by the command interpreter for login shells. +# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login +# exists. +# see /usr/share/doc/bash/examples/startup-files for examples. +# the files are located in the bash-doc package. + +# the default umask is set in /etc/profile; for setting the umask +# for ssh logins, install and configure the libpam-umask package. +#umask 022 + +# if running bash +if [ -n "$BASH_VERSION" ]; then + # include .bashrc if it exists + if [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" + fi +fi diff --git a/.sbp b/.sbp new file mode 160000 index 0000000..e307fba --- /dev/null +++ b/.sbp @@ -0,0 +1 @@ +Subproject commit e307fba19a38092b3cf5e50c9d423685b56e448e diff --git a/.xinitrc b/.xinitrc new file mode 100755 index 0000000..7405096 --- /dev/null +++ b/.xinitrc @@ -0,0 +1,19 @@ +#!/bin/sh + +# this file is run when calling startx + +# default arch init scripts +if [ -d /etc/X11/xinit/xinitrc.d ]; then + for f in /etc/X11/xinit/xinitrc.d/?*.sh; do + [ -x "$f" ] && . "$f" + done +fi + +# user init scripts and settings +[ -r /etc/X11/xinit/.Xmodmap ] && xmodmap /etc/X11/xinit/.Xmodmap +[ -r ~/.Xmodmap ] && xmodmap ~/.Xmodmap +[ -r ~/.Xresources ] && xrdb -merge ~/.Xresources +[ -r ~/.xprofile ] && . ~/.xprofile + +# launch the session, commands below this line will be ignored +exec openbox-session diff --git a/.xprofile b/.xprofile new file mode 100644 index 0000000..ce74a71 --- /dev/null +++ b/.xprofile @@ -0,0 +1,9 @@ +#!/bin/sh + +# sourced at boot by ~/.xinitrc and most display managers + +# xdg standard configuration location (needed by some applications) +export XDG_CONFIG_HOME="$HOME/.config" + +# add ~/.local/bin to the PATH (application executables) +export PATH="$HOME/.local/bin:$PATH" diff --git a/.xstefenrc b/.xstefenrc new file mode 100644 index 0000000..67e1bb9 --- /dev/null +++ b/.xstefenrc @@ -0,0 +1,230 @@ +#!/usr/bin/env bash + +#echo " "; +#echo " ▐▄• ▄ .▄▄ · ▄▄▄▄▄▄▄▄ .·▄▄▄▄▄▄ . ▐ ▄ ▄▄▄ ▄▄· "; +#echo " █▌█▌▪▐█ ▀. •██ ▀▄.▀·▐▄▄·▀▄.▀·•█▌▐█▀▄ █·▐█ ▌▪"; +#echo " ·██· ▄▀▀▀█▄ ▐█.▪▐▀▀▪▄██▪ ▐▀▀▪▄▐█▐▐▌▐▀▀▄ ██ ▄▄"; +#echo " ▪▐█·█▌▐█▄▪▐█ ▐█▌·▐█▄▄▌██▌.▐█▄▄▌██▐█▌▐█•█▌▐███▌"; +#echo " ▀ •▀▀ ▀▀ ▀▀▀▀ ▀▀▀ ▀▀▀ ▀▀▀ ▀▀▀ ▀▀ █▪.▀ ▀·▀▀▀ "; + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +# shopt +shopt -s autocd # change to named directory +shopt -s cdspell # autocorrects cd misspellings +shopt -s checkwinsize # checks term size when bash regains control +shopt -s cmdhist # save multi-line commands in history as single line +shopt -s dotglob # include dotfiles in filename expansion +shopt -s expand_aliases # expand aliases +shopt -s extglob # extended pattern matching +shopt -s histappend # do not overwrite history + +# tab-completion +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +# start gpg/ssh-agent +unset SSH_AGENT_PID +if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then + export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" +fi +export GPG_TTY=$(tty) +gpg-connect-agent updatestartuptty /bye >/dev/null + +# if ! pgrep -u "$USER" ssh-agent >/dev/null; then +# ssh-agent -t 1h >"$XDG_RUNTIME_DIR/ssh-agent.env" +# fi +# if [[ ! "$SSH_AUTH_SOCK" ]]; then +# source "$XDG_RUNTIME_DIR/ssh-agent.env" >/dev/null +# fi + +envsetup() { + umask 022 + alias which='command -v' + source build/envsetup.sh + + export LANG=C.UTF-8 + export _JAVA_OPTIONS=-XX:-UsePerfData + export BUILD_DATETIME=$(cat out/build_date.txt 2>/dev/null || date -u +%s) + echo "BUILD_DATETIME=$BUILD_DATETIME" + export BUILD_NUMBER=$(cat out/soong/build_number.txt 2>/dev/null || date -u -d @$BUILD_DATETIME +%Y%m%d00) + echo "BUILD_NUMBER=$BUILD_NUMBER" + export DISPLAY_BUILD_NUMBER=true + export BUILD_USERNAME=\u0000 + export BUILD_HOSTNAME=\u0000 +} + +# extract | usage: ex +ex() +{ + if [ -f "$1" ] ; then + case $1 in + *.tar.bz2) tar xjf $1 ;; + *.tar.gz) tar xzf $1 ;; + *.bz2) bunzip2 $1 ;; + *.rar) unrar x $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xf $1 ;; + *.tbz2) tar xjf $1 ;; + *.tgz) tar xzf $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1;; + *.7z) 7z x $1 ;; + *.deb) ar x $1 ;; + *.tar.xz) tar xf $1 ;; + *.tar.zst) unzstd $1 ;; + *) echo "'$1' cannot be extracted via ex()" ;; + esac + else + echo "'$1' is not a valid file" + fi +} + +# git-cherry-pick | usage: gcp +gcp() { + GCP_GIVEN=$1 + GCP_URL=$(echo ${GCP_GIVEN} | awk -F'/' '{print $1FS$2FS$3FS$4FS$5}') + GCP_COMMIT=$(echo ${GCP_GIVEN} | awk -F'/' '{print $7}') + git fetch $GCP_URL $GCP_COMMIT && git cherry-pick FETCH_HEAD +} + +# installed? | usage: is_available +is_available() { + command -v "$1" >/dev/null 2>&1 +} + +# List lib dependencies of any lib/bin +list_blob_deps() { + readelf -d $1 | grep "\(NEEDED\)" | sed -r "s/.*\[(.*)\]/\1/" +} + +# pixeldrain upload | usage: pdup +PD_API_KEY="$(cat /mnt/files/Documents/store/pixeldrain)" +pdup() { + [ -z "$1" ] && echo "Error: File not specified!" && return + ID=$(curl --progress-bar -T "$1" -u :$PD_API_KEY https://pixeldrain.com/api/file/ | cat | grep -Po '(?<="id":")[^"]*') + echo -e "\nhttps://pixeldrain.com/u/$ID" +} + +# repo sync++ | usage: repofastsync +repofastsync() { + #time schedtool -B -e ionice -n 1 \ + time "$(command -v repo)" sync \ + -c --no-tags --no-clone-bundle --force-sync -j16 \ + "$@" +} + +# random color-script scheme test +scheme_test() { + local COLOR_SCRIPT_REPO=https://api.github.com/repos/stark/Color-Scripts/contents/color-scripts + wget -q -O - $(curl -s $COLOR_SCRIPT_REPO | jq '.[] | "\(.path) \(.download_url)"' -r | shuf -n1 | cut -d " " -f2) | bash +} + +# tere file explorer | usage: tere +tere() { + local result=$(command tere "$@") + [ -n "$result" ] && cd -- "$result" +} + +# fetch random git commit message +whatthecommit() { + curl --silent --fail https://whatthecommit.com/index.txt +} + +# aliases +alias ..="cd .." +alias adp="adb push" +alias cls="echo -e '\0033\0143'" +alias config="/usr/bin/git --git-dir=$HOME/dotfiles --work-tree=$HOME" +alias cp="cp -i" +alias df="df -h" +alias du="du -c -h" +alias e="$EDITOR" +alias fetch="neofetch --ascii ~/.config/neofetch/logo-ascii" +alias free="free -m" +alias grep="grep --color=tty -d skip" +alias jctl="journalctl -p 3 -xb" +alias ls='exa -l --color=always --group-directories-first' +alias ll='exa -al --color=always --group-directories-first' +alias lt='exa -aT --color=always --group-directories-first' +alias l.='exa -a | egrep "^\."' +alias merge='xrdb -merge ~/.Xresources' +alias mirror="sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist" +alias mirrord="sudo reflector --latest 50 --number 20 --sort delay --save /etc/pacman.d/mirrorlist" +alias mirrors="sudo reflector --latest 50 --number 20 --sort score --save /etc/pacman.d/mirrorlist" +alias mirrora="sudo reflector --latest 50 --number 20 --sort age --save /etc/pacman.d/mirrorlist" +alias mkcheetah="m otatools vendorbootimage vendorkernelbootimage target-files-package" +alias mkdir="mkdir -p -v" +alias more="less" +alias mv="mv -i" +alias nano="nano -au" +alias ping="ping -c 5" +alias psa="ps auxf" +alias psgrep="ps aux | grep -v grep | grep -i -e VSZ -e" +alias psmem='ps auxf | sort -nr -k 4' +alias pscpu='ps auxf | sort -nr -k 3' +alias qr_read="maim -qs | zbarimg -q --raw - | xclip -selection clipboard -f" +alias reboot="sudo systemctl -i reboot" +alias reload="clear && reset && cls && source $HOME/.xstefenrc" +alias rm="rm -i" +alias rp="repopick " +alias rr='curl -s -L https://raw.githubusercontent.com/keroserene/rickrollrc/master/roll.sh | bash' +alias showcommands="croot && gzip -cd out/verbose.log.gz | less -R" +alias ss_sel_clip="maim -s | xclip -selection clipboard -t image/png" +alias ss_active_save="maim -i $(xdotool getactivewindow) ~/Pictures/maim$(date +%s).jpg" +alias ss_full_save="maim ~/Pictures/maim-$(date +%s).png" +alias startx="startx $HOME/.xinitrc $@" +if is_available doas; then + complete -cf doas + alias sudoedit="doas rnano" +else + alias sudo="sudo " +fi +alias sysu="systemctl --user" +alias update-grub="grub-mkconfig -o /boot/grub/grub.cfg" +alias wget="wget -c -t 0 --retry-connrefused" +alias wttr="curl wttr.in/dfw?format=3" +alias obxp='xprop | grep "WM_WINDOW_ROLE\|WM_CLASS" && echo "WM_CLASS(STRING) = \"NAME\", \"CLASS\""' +#alias xup="sudo pacman -Sy && sudo powerpill -Su && paru -Su" +alias xup='yay' +alias yabs="curl -sL yabs.sh | bash" + +# env vars +export USE_CCACHE=1 +export CCACHE_DIR="/mnt/ccache" +export CCACHE_EXEC="$(command -v ccache)" +export EDITOR="nano" +export WITHOUT_CHECK_API=true +export SKIP_ABI_CHECKS=true +export WITH_GAPPS=true +export WITH_GMS=true +export KERNEL_LTO=thin +#export GLOBAL_THINLTO=true +export USE_THINLTO_CACHE=true + +# mounts / path +[[ $PATH != ?(*:)$HOME/.local/bin?(:*) ]] && export PATH=$HOME/.local/bin:$PATH +[[ $PATH != ?(*:)$HOME/.cargo/bin?(:*) ]] && export PATH=$PATH:$HOME/.cargo/bin +[[ ! $(findmnt -rno SOURCE,TARGET /mnt/ccache) ]] && mount /mnt/ccache + +# ------------------------------------------------------------------ +# misc +# ------------------------------------------------------------------ + +# mondays +eval $(thefuck --alias FUCK) + +# sudo prompt colors +export SUDO_PROMPT="$(tput bold setab 1 setaf 7)[sudo]$(tput sgr0) $(tput setaf 6)password for$(tput sgr0) $(tput setaf 5)%p$(tput sgr0): " + +# prompt +#colorscript -e random +#eval "$(starship init bash)" +SBP_PATH=$HOME/.sbp +. ${SBP_PATH}/sbp.bash