├── .build.yml ├── .github ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ ├── documentation_report.yml │ └── feature_request.yml ├── actions │ ├── autotools │ │ └── action.yml │ ├── doxycheck │ │ └── action.yml │ ├── meson │ │ └── action.yml │ └── setup │ │ └── action.yml ├── pull_request_template.md └── workflows │ ├── build.yml │ ├── codeql.yml │ ├── lock.yml │ ├── main.yml │ └── mkdocs.yml ├── .gitignore ├── .gitlab-ci.yml ├── .gitmodules ├── .mailmap ├── .travis.yml ├── AUTHORS ├── CODE_OF_CONDUCT.md ├── CONFIG.md ├── COPYING ├── Changelog ├── Examples ├── i3_empty_workspace.sh ├── i3_switch_workspaces.sh ├── rofi-file-browser.sh ├── test_script_env.sh ├── test_script_mode.sh ├── test_script_mode_color.sh └── test_script_mode_delim.sh ├── INSTALL.md ├── Makefile.am ├── README.md ├── config └── config.c ├── configure.ac ├── data ├── rofi-theme-selector.desktop ├── rofi.desktop ├── rofi.png └── rofi.svg ├── doc ├── README.md ├── default_configuration.rasi ├── default_theme.rasi ├── man_filter.lua ├── meson.build ├── rofi-actions.5.markdown ├── rofi-debugging.5.markdown ├── rofi-dmenu.5.markdown ├── rofi-keys.5.markdown ├── rofi-script.5.markdown ├── rofi-sensible-terminal.1.markdown ├── rofi-theme-selector.1.markdown ├── rofi-theme.5.markdown ├── rofi-thumbnails.5.markdown ├── rofi.1.markdown └── rofi.doxy.in ├── include ├── css-colors.h ├── display.h ├── helper-theme.h ├── helper.h ├── history.h ├── keyb.h ├── mode-private.h ├── mode.h ├── modes │ ├── combi.h │ ├── dmenu.h │ ├── dmenuscriptshared.h │ ├── drun.h │ ├── filebrowser.h │ ├── help-keys.h │ ├── modes.h │ ├── recursivebrowser.h │ ├── run.h │ ├── script.h │ ├── ssh.h │ └── window.h ├── rofi-icon-fetcher.h ├── rofi-types.h ├── rofi.h ├── settings.h ├── theme.h ├── timings.h ├── view-internal.h ├── view.h ├── widgets │ ├── box.h │ ├── container.h │ ├── icon.h │ ├── listview.h │ ├── scrollbar.h │ ├── textbox.h │ ├── widget-internal.h │ └── widget.h ├── xcb-internal.h ├── xcb.h └── xrmoptions.h ├── lexer ├── theme-lexer.l └── theme-parser.y ├── libgwater-xcb-nolibtool.mk ├── m4 ├── ax_compare_version.m4 └── ax_prog_flex_version.m4 ├── meson-dist-script ├── meson.build ├── meson_options.txt ├── mkdocs ├── docs │ ├── 1.7.0 │ │ ├── rofi-script.5.markdown │ │ ├── rofi-theme.5.markdown │ │ └── rofi.1.markdown │ ├── 1.7.1 │ │ ├── rofi-script.5.markdown │ │ ├── rofi-theme.5.markdown │ │ └── rofi.1.markdown │ ├── 1.7.2 │ │ ├── rofi-script.5.markdown │ │ ├── rofi-theme.5.markdown │ │ └── rofi.1.markdown │ ├── 1.7.3 │ │ ├── rofi-debugging.5.markdown │ │ ├── rofi-dmenu.5.markdown │ │ ├── rofi-keys.5.markdown │ │ ├── rofi-script.5.markdown │ │ ├── rofi-theme.5.markdown │ │ └── rofi.1.markdown │ ├── 1.7.4 │ │ ├── rofi-debugging.5.markdown │ │ ├── rofi-dmenu.5.markdown │ │ ├── rofi-keys.5.markdown │ │ ├── rofi-script.5.markdown │ │ ├── rofi-theme.5.markdown │ │ └── rofi.1.markdown │ ├── 1.7.5 │ │ ├── rofi-debugging.5.markdown │ │ ├── rofi-dmenu.5.markdown │ │ ├── rofi-keys.5.markdown │ │ ├── rofi-script.5.markdown │ │ ├── rofi-theme.5.markdown │ │ └── rofi.1.markdown │ ├── 1.7.6 │ │ ├── rofi-debugging.5.markdown │ │ ├── rofi-dmenu.5.markdown │ │ ├── rofi-keys.5.markdown │ │ ├── rofi-script.5.markdown │ │ ├── rofi-sensible-terminal.1.markdown │ │ ├── rofi-theme-selector.1.markdown │ │ ├── rofi-theme.5.markdown │ │ ├── rofi-thumbnails.5.markdown │ │ └── rofi.1.markdown │ ├── 1.7.7 │ │ ├── rofi-debugging.5.markdown │ │ ├── rofi-dmenu.5.markdown │ │ ├── rofi-keys.5.markdown │ │ ├── rofi-script.5.markdown │ │ ├── rofi-sensible-terminal.1.markdown │ │ ├── rofi-theme-selector.1.markdown │ │ ├── rofi-theme.5.markdown │ │ ├── rofi-thumbnails.5.markdown │ │ └── rofi.1.markdown │ ├── 1.7.8 │ │ ├── rofi-debugging.5.markdown │ │ ├── rofi-dmenu.5.markdown │ │ ├── rofi-keys.5.markdown │ │ ├── rofi-script.5.markdown │ │ ├── rofi-sensible-terminal.1.markdown │ │ ├── rofi-theme-selector.1.markdown │ │ ├── rofi-theme.5.markdown │ │ ├── rofi-thumbnails.5.markdown │ │ └── rofi.1.markdown │ ├── 1.7.9 │ │ ├── rofi-actions.5.markdown │ │ ├── rofi-debugging.5.markdown │ │ ├── rofi-dmenu.5.markdown │ │ ├── rofi-keys.5.markdown │ │ ├── rofi-script.5.markdown │ │ ├── rofi-theme.5.markdown │ │ ├── rofi-thumbnails.5.markdown │ │ └── rofi.1.markdown │ ├── CONFIG.md │ ├── COPYING.md │ ├── INSTALL.md │ ├── current │ │ ├── rofi-actions.5.markdown │ │ ├── rofi-debugging.5.markdown │ │ ├── rofi-dmenu.5.markdown │ │ ├── rofi-keys.5.markdown │ │ ├── rofi-script.5.markdown │ │ ├── rofi-theme.5.markdown │ │ ├── rofi-thumbnails.5.markdown │ │ └── rofi.1.markdown │ ├── downloads.md │ ├── guides │ │ ├── DynamicThemes │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ └── dynamic_themes.md │ │ ├── Plugins │ │ │ ├── 2017-04-19-rofi-140-sneak-preview-plugins.md │ │ │ └── rofi-file-browser.png │ │ ├── Positioning │ │ │ ├── anchors.svg │ │ │ ├── example-pos.png │ │ │ └── theme3-positioning.markdown │ │ └── Transparency │ │ │ ├── rofi-background.png │ │ │ ├── rofi-background2.png │ │ │ ├── rofi-fake.png │ │ │ ├── rofi-paper.png │ │ │ ├── rofi-real.png │ │ │ ├── rofi-transp.png │ │ │ ├── structure.svg │ │ │ └── theme3-transparency.markdown │ ├── images │ │ ├── rofi-logo-full.png │ │ └── rofi.png │ ├── index.md │ └── themes │ │ ├── Adapta-Nokto.png │ │ ├── Arc-Dark.png │ │ ├── Arc.png │ │ ├── DarkBlue.png │ │ ├── Indego.png │ │ ├── Monokai.png │ │ ├── Paper.png │ │ ├── android_notification.png │ │ ├── arthur.png │ │ ├── blue.png │ │ ├── c64.png │ │ ├── capture.sh │ │ ├── default.png │ │ ├── dmenu.png │ │ ├── docu.png │ │ ├── fancy.png │ │ ├── fancy2.png │ │ ├── fullscreen-preview.png │ │ ├── glue_pro_blue.png │ │ ├── gruvbox-dark-hard.png │ │ ├── gruvbox-dark-soft.png │ │ ├── gruvbox-dark.png │ │ ├── gruvbox-light-hard.png │ │ ├── gruvbox-light-soft.png │ │ ├── gruvbox-light.png │ │ ├── iggy.png │ │ ├── lb.png │ │ ├── material.png │ │ ├── paper-float.png │ │ ├── purple.png │ │ ├── sidebar-v2.png │ │ ├── sidebar.png │ │ ├── solarized.png │ │ ├── solarized_alternate.png │ │ └── themes.md └── mkdocs.yml ├── pkgconfig └── rofi.pc.in ├── releasenotes ├── 0.15.12 │ ├── release-0.15.12.markdown │ ├── rofi-screenshot.png │ ├── rofi-theme-site.png │ ├── rofi-themenator.png │ └── rofi-warning.png ├── 1.0.0 │ └── release-1.0.0.markdown ├── 1.1.0 │ └── release-1.1.0.markdown ├── 1.2.0 │ ├── release-1.2.0.markdown │ ├── rofi-multi-select.png │ ├── rofi-options.png │ ├── rofi-underline-match.png │ └── rofi-window-align.png ├── 1.3.0 │ ├── dmenu-async.png │ ├── fuzzy.png │ ├── release-1.3.0.markdown │ ├── resize.gif │ ├── structure.png │ ├── structure.svg │ ├── theme-selector.gif │ └── theme-selector.png ├── 1.3.1 │ └── release-1.3.1.markdown ├── 1.4.0 │ ├── release-1.4.0.markdown │ ├── rofi-border-transp.png │ ├── rofi-border.png │ ├── rofi-dmenu.png │ ├── rofi-error.png │ ├── rofi-fonts.png │ ├── rofi-fzf.png │ ├── rofi-icons.png │ ├── rofi-no-fzf.png │ ├── rofi-rainbow.png │ └── rofi-top.png ├── 1.5.0 │ ├── release-1.5.0.markdown │ ├── rofi-colon.png │ ├── rofi-match.png │ └── rofi-neg-match.png ├── 1.5.2 │ ├── border-issue.png │ └── release-1.5.2.markdown ├── 1.5.3 │ ├── release-1.5.3.markdown │ ├── rofi-dmenu-icons.png │ ├── rofi-ellipsize-end.png │ ├── rofi-ellipsize-middle.png │ └── rofi-ellipsize-start.png ├── 1.6.0 │ ├── icons.png │ ├── icons2.png │ ├── release-1.6.0.markdown │ └── warning.png ├── 1.6.1 │ ├── filebrowser.png │ └── release-1.6.1.markdown ├── 1.7.0 │ ├── background-image.png │ ├── complete.gif │ ├── iggy-theme.png │ ├── iggy.jpg │ ├── release-1.7.0.markdown │ └── rofi-icons.png ├── 1.7.1 │ └── release-1.7.1.markdown ├── 1.7.2 │ └── release-1.7.2.markdown ├── 1.7.3 │ └── release-1.7.3.markdown ├── 1.7.4 │ ├── horizontal.png │ ├── release-1.7.4.markdown │ └── vertical.png ├── 1.7.5 │ └── release-1.7.5.markdown ├── 1.7.6 │ ├── release-1.7.6.markdown │ └── text-outline.png ├── 1.7.7 │ └── release-1.7.7.markdown ├── 1.7.8 │ └── release-1.7.8.markdown └── 1.7.9 │ └── release-1.7.9.markdown ├── resources └── resources.xml ├── script ├── get_git_rev.sh ├── rofi-sensible-terminal └── rofi-theme-selector ├── source ├── css-colors.c ├── helper.c ├── history.c ├── keyb.c ├── mode.c ├── modes │ ├── combi.c │ ├── dmenu.c │ ├── drun.c │ ├── filebrowser.c │ ├── help-keys.c │ ├── recursivebrowser.c │ ├── run.c │ ├── script.c │ ├── ssh.c │ └── window.c ├── rofi-icon-fetcher.c ├── rofi-types.c ├── rofi.c ├── theme.c ├── timings.c ├── view.c ├── widgets │ ├── box.c │ ├── container.c │ ├── icon.c │ ├── listview.c │ ├── scrollbar.c │ ├── textbox.c │ └── widget.c ├── xcb.c └── xrmoptions.c ├── test ├── box-test.c ├── helper-config-cmdline-parser.c ├── helper-expand.c ├── helper-pidfile.c ├── helper-test.c ├── helper-tokenize.c ├── history-test.c ├── mode-test.c ├── scrollbar-test.c ├── textbox-test.c ├── theme-parser-test.c └── widget-test.c └── themes ├── Adapta-Nokto.rasi ├── Arc-Dark.rasi ├── Arc.rasi ├── DarkBlue.rasi ├── Indego.rasi ├── Monokai.rasi ├── Paper.rasi ├── android_notification.rasi ├── arthur.rasi ├── blue.rasi ├── breaking-themes ├── 2076.rasi └── readme.md ├── c64.rasi ├── dmenu.rasi ├── docu.rasi ├── fancy.rasi ├── fancy2.rasi ├── fullscreen-preview.rasi ├── glue_pro_blue.rasi ├── gruvbox-common.rasinc ├── gruvbox-dark-hard.rasi ├── gruvbox-dark-soft.rasi ├── gruvbox-dark.rasi ├── gruvbox-light-hard.rasi ├── gruvbox-light-soft.rasi ├── gruvbox-light.rasi ├── iggy.jpg ├── iggy.rasi ├── lb.rasi ├── material.rasi ├── paper-float.rasi ├── purple.rasi ├── sidebar-v2.rasi ├── sidebar.rasi ├── solarized.rasi └── solarized_alternate.rasi /.build.yml: -------------------------------------------------------------------------------- 1 | image: ubuntu/lts 2 | packages: 3 | - meson 4 | - ninja-build 5 | - autoconf 6 | - automake 7 | - build-essential 8 | - libpango1.0-dev 9 | - libstartup-notification0-dev 10 | - libxcb-ewmh-dev 11 | - libxcb-icccm4-dev 12 | - libxcb-randr0-dev 13 | - libxcb-util0-dev 14 | - libxcb-xinerama0-dev 15 | - libxcb-xkb-dev 16 | - libxcb-xrm-dev 17 | - libxcb-cursor-dev 18 | - libxcb-imdkit-dev 19 | - libxcb-keysyms1 20 | - libxkbcommon-dev 21 | - libxkbcommon-dev 22 | - libxkbcommon-x11-dev 23 | - libgdk-pixbuf2.0-dev 24 | - ninja-build 25 | - pandoc 26 | - check 27 | - flex 28 | - bison 29 | - libglib2.0-dev-bin 30 | - doxygen 31 | sources: 32 | - https://sr.ht/~qball/rofi/ 33 | tasks: 34 | - setup: | 35 | cd rofi 36 | meson setup builddir . -Db_lto=true 37 | - build: | 38 | ninja -C rofi/builddir 39 | - test: | 40 | ninja -C rofi/builddir test 41 | - doxygen: | 42 | ninja -C rofi/builddir/ doc/html > doxygen.log 2>&1 43 | if [ $(grep -c warnings doxygen.log) -gt 0 ]; then exit 1; fi 44 | - dist: | 45 | ninja -C rofi/builddir dist 46 | artifacts: 47 | - rofi/builddir/meson-dist/rofi-1.7.8-dev.tar.xz 48 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | When reporting bugs keep in mind that the people working on it do this unpaid, 2 | in their free time and as a hobby. So be polite and helpful. Reports that 3 | demand, contain insults to this or other projects, or have a general unfriendly 4 | tone will be closed without discussion. Everybody has it own way of working; 5 | What might be the norm for you, might not be for others. Therefore be verbose in 6 | your description. 7 | 8 | **The issue tracker is for bugs only.** 9 | 10 | This is an attempt to keep the issue tracker clean and searchable. 11 | 12 | Questions or discussions about new features belong on 13 | [GITHUB Discussions](https://github.com/davatorium/rofi/discussions) or 14 | [FORUM](https://reddit.com/r/qtools/), 15 | [IRC](https://webchat.freenode.net/?channels=#rofi), frequently asked questions 16 | will be added to the [F.A.Q](https://github.com/DaveDavenport/rofi/wiki#faq) on 17 | the [wiki](https://github.com/DaveDavenport/rofi/wiki). 18 | 19 | Questions filled in on the bug tracker will be marked `question`, locked and 20 | closed. 21 | 22 | It is preferred to have feature requests discussed via 23 | [GITHUB Discussions](https://github.com/davatorium/rofi/discussions) or 24 | [FORUM](https://reddit.com/r/qtools/) or 25 | [IRC](https://webchat.freenode.net/?channels=#rofi) first. 26 | 27 | # Creating a bug report 28 | 29 | Please write your bug reports in clear English. 30 | 31 | Before creating a bug report: 32 | 33 | * Update to the latest version. Check if problem still exists. 34 | * Check existing bug reports, see if it is already reported. 35 | * Read the documentation. Make sure the behaviour you are seeing is a bug. 36 | 37 | When reporting bugs include the following information: 38 | 39 | * Rofi version. rofi -v 40 | * Rofi configuration. rofi -help (in a [gist](https://gist.github.com/)) 41 | * Steps to reproduce. 42 | * What behaviour you see. 43 | * What behaviour you expect to see. 44 | * A proper title for others to search for. 45 | * Be exact. 46 | 47 | When adding comments to an issue make sure: 48 | 49 | * It is relevant to the issue. 50 | * It contributes to solving the issue. 51 | * Use :+1: :-1: emojis instead of replying 'me too' or 'I also have this.' 52 | * Do **NOT** ask for an update. Asking does not contribute to solving the issue 53 | and just annoys people with a notification. The answer is already available; 54 | if there is an update it will be linked/mentioned in the issue, otherwise 55 | there is no update. 56 | 57 | 58 | Issue high-jacking, e.g. adding a request/issue to an existing issue, is very 59 | disruptive. 60 | Please create a new issue, if it is similar it will be marked duplicate. 61 | 62 | # Creating a feature request 63 | 64 | 65 | Before creating a feature request: 66 | 67 | * First check the *next* branch, to see if the feature has already been 68 | implemented. 69 | * Check existing reports, see if it is already requested. 70 | 71 | When reporting a feature request include the following information: 72 | 73 | * Rofi version. (rofi -v) 74 | * A clear description of the feature you want added. 75 | * A use-case for the feature. 76 | 77 | If possible try to explain how you would expect to use feature. 78 | For example, should it be a configuration option or a hot-key. 79 | 80 | Requesting a feature is no guarantee it will be added. 81 | 82 | **Please do not submit reports related to wayland, see 83 | [here](https://github.com/DaveDavenport/rofi/wiki/Wayland) for more 84 | information.** 85 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: discussion forum 4 | url: https://github.com/davatorium/rofi/discussions 5 | about: Please ask and answer questions here. 6 | - name: Rofi IRC channel 7 | url: https://web.libera.chat/?channels=#rofi 8 | about: Please ask and answer question in real time here. 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation_report.yml: -------------------------------------------------------------------------------- 1 | name: Documentation Bug Report 2 | description: Report a problem in Rofi Documentation 3 | labels: [Documentation] 4 | title: "[Doc] " 5 | body: 6 | 7 | - type: markdown 8 | attributes: 9 | value: | 10 | First read the 11 | [guidelines](https://github.com/DaveDavenport/rofi/blob/next/.github/CONTRIBUTING.md)! 12 | This is not optional for any report. People must be able to understand 13 | the full context of the report when reading it, at any time. 14 | 15 | If you feel like you “it is simple and requires no explanation”, please 16 | consider you’re wrong and still fill the full report. Any report 17 | missing required informations will be labeled as “Incomplete Report - 18 | Please follow the guidelines” and will be closed. If you ask a 19 | question, enter dummy information in required fields to get passed the 20 | checks or in general completely ignore the guidelines, the issue will 21 | be closed and locked as spam. 22 | 23 | If you are unsure, please use the 24 | [discussion](https://github.com/davatorium/rofi/discussions) forum 25 | first. It is easy to upgrade a question to an issue in github. 26 | 27 | **Please do not submit reports related to wayland, see 28 | [here](https://github.com/DaveDavenport/rofi/wiki/Wayland) for more 29 | information.** 30 | 31 | - type: input 32 | attributes: 33 | label: "Rofi version (rofi -v)" 34 | placeholder: "Version: 1.7.5" 35 | validations: 36 | required: true 37 | - type: input 38 | attributes: 39 | label: "URL" 40 | description: "Please provide a link to the relevant documentation." 41 | placeholder: "link to page on https://davatorium.github.io/rofi/ or file on https://github.com/davatorium/rofi/" 42 | validations: 43 | required: true 44 | 45 | - type: textarea 46 | attributes: 47 | label: "Explain the issue with the documentation, please be verbose." 48 | placeholder: | 49 | * What am I trying to achieve 50 | .. 51 | * What instructions are unclear, wrong or missing 52 | .. 53 | * Suggestions for improving the current documentation 54 | .. 55 | validations: 56 | required: true 57 | - type: textarea 58 | attributes: 59 | label: "Optional fixed text" 60 | description: "Suggested new and or improved text for documentation." 61 | validations: 62 | required: false 63 | - type: checkboxes 64 | id: wayland 65 | attributes: 66 | label: Using wayland display server protocol 67 | description: I have checked and confirm that my issue is not related to running rofi using wayland as display server protocol. See [here](https://github.com/DaveDavenport/rofi/wiki/Wayland) for more information. 68 | options: 69 | - label: "No, my documentation issue is not about running rofi using the wayland display server protocol" 70 | required: true 71 | - type: checkboxes 72 | id: latestversion 73 | attributes: 74 | label: I've checked if the issue exists in the latest stable release 75 | description: I confirm that I verified the issue still exists in the latest stable release. 76 | options: 77 | - label: "Yes, I have checked the problem exists in the latest stable version" 78 | required: false 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: Feature Request 2 | description: It'd be cool if rofi did/had/would... 3 | labels: Feature Request 4 | title: "[REQUEST] " 5 | body: 6 | 7 | - type: markdown 8 | attributes: 9 | value: | 10 | First read the [guidelines](https://github.com/DaveDavenport/rofi/blob/next/.github/CONTRIBUTING.md)! This is not optional for any report/question. People must be able to understand the full context of the report when reading it, at any time. 11 | 12 | If you feel like you “just have a simple question”, please consider you’re wrong and still fill the full report. Any report missing these informations will be labeled as “Incomplete Report - Please follow the guidelines” and may not be answered in a timely fashion. 13 | 14 | If you are unsure, please use the [discussion](https://github.com/davatorium/rofi/discussions) forum first. It is easy to upgrade a question to an issue in github. 15 | 16 | **Please do not submit reports related to wayland, see [here](https://github.com/DaveDavenport/rofi/wiki/Wayland) for more information.** 17 | 18 | **Requesting a feature is no guarantee it will be added.** 19 | 20 | - type: checkboxes 21 | id: before-feature-request 22 | attributes: 23 | label: Before opening a feature request 24 | options: 25 | - label: I checked the *next* branch to see if the feature has already been implemented 26 | required: true 27 | - label: I searched existing reports to see if it is already requested. 28 | required: true 29 | - type: textarea 30 | attributes: 31 | label: "What is the user problem or growth opportunity you want to see solved?" 32 | validations: 33 | required: true 34 | - type: textarea 35 | attributes: 36 | label: "How do you know that this problem exists today? Why is this important?" 37 | validations: 38 | required: true 39 | - type: textarea 40 | attributes: 41 | label: "Who will benefit from it?" 42 | validations: 43 | required: true 44 | - type: input 45 | attributes: 46 | label: "Rofi version (rofi -v)" 47 | placeholder: "Version: 1.6.0" 48 | validations: 49 | required: true 50 | - type: input 51 | attributes: 52 | label: "Configuration" 53 | description: "Please use https://gist.github.com and include output of `rofi -dump-config` and `rofi -dump-theme`." 54 | placeholder: "Gist URL" 55 | validations: 56 | required: true 57 | - type: textarea 58 | attributes: 59 | label: "Additional information" 60 | validations: 61 | required: false 62 | 63 | -------------------------------------------------------------------------------- /.github/actions/autotools/action.yml: -------------------------------------------------------------------------------- 1 | name: Autotools Build 2 | description: Builds Rofi using Autotools 3 | 4 | inputs: 5 | do-release: 6 | description: Do a make dist and upload 7 | required: true 8 | cc: 9 | description: Compiler to use 10 | required: true 11 | windowmode: 12 | description: Enable window mode 13 | required: true 14 | 15 | runs: 16 | using: composite 17 | steps: 18 | - id: pip 19 | run: pip install meson ninja 20 | shell: bash 21 | - id: setup 22 | run: | 23 | autoreconf --install 24 | 25 | mkdir builddir && cd builddir 26 | 27 | ../configure CC=${{ inputs.cc }} --${{ inputs.windowmode }}-windowmode 28 | shell: bash 29 | - id: build 30 | run: cd builddir && make 31 | shell: bash 32 | - id: test 33 | run: cd builddir && make distcheck 34 | shell: bash 35 | - id: doxy 36 | run: cd builddir && make doxy > doxygen.log 2>&1 37 | shell: bash 38 | - id: doxycheck 39 | uses: ./.github/actions/doxycheck 40 | with: 41 | logfile: builddir/doxygen.log 42 | - id: autoconf-dist-check 43 | shell: bash 44 | run: | 45 | tar xf builddir/rofi-*.tar.gz 46 | cd rofi-*/ 47 | ./configure 48 | make 49 | make check 50 | - id: upload 51 | if: ${{ inputs.do-release == 'true' }} 52 | uses: actions/upload-artifact@v4 53 | with: 54 | name: tarballs ${{ github.sha }} 55 | path: | 56 | builddir/*.tar.gz 57 | builddir/*.tar.xz 58 | -------------------------------------------------------------------------------- /.github/actions/doxycheck/action.yml: -------------------------------------------------------------------------------- 1 | name: Doxygen Check 2 | description: Checks for Doxygen warnings 3 | 4 | inputs: 5 | logfile: 6 | description: Path to doxygen logfile 7 | required: true 8 | 9 | runs: 10 | using: composite 11 | steps: 12 | - id: check 13 | run: | 14 | if [[ "$(grep -c warning: ${{ inputs.logfile }})" != 0 ]]; then 15 | echo 16 | echo Doxygen warnings found: 17 | grep warning ${{ inputs.logfile }} 18 | echo 19 | 20 | exit 1 21 | fi 22 | 23 | python ./doxy-coverage/doxy-coverage.py builddir/doc/html/xml/ 24 | shell: bash 25 | -------------------------------------------------------------------------------- /.github/actions/meson/action.yml: -------------------------------------------------------------------------------- 1 | name: Meson Build 2 | description: Builds Rofi using Meson 3 | 4 | inputs: 5 | cc: 6 | description: Compiler to use 7 | required: true 8 | 9 | runs: 10 | using: composite 11 | steps: 12 | - id: pip 13 | run: pip install meson ninja 14 | shell: bash 15 | - id: setup 16 | run: meson setup builddir -Db_coverage=true 17 | shell: bash 18 | env: 19 | CC: ${{ inputs.cc }} 20 | - id: build 21 | run: ninja -C builddir 22 | shell: bash 23 | - id: dist 24 | run: ninja -C builddir dist 25 | shell: bash 26 | - id: test 27 | run: ninja -C builddir test 28 | shell: bash 29 | - id: doxy 30 | run: ninja -C builddir doc/html > doxygen.log 2>&1 31 | shell: bash 32 | - id: doxycheck 33 | uses: ./.github/actions/doxycheck 34 | with: 35 | logfile: doxygen.log 36 | -------------------------------------------------------------------------------- /.github/actions/setup/action.yml: -------------------------------------------------------------------------------- 1 | name: CI Build Setup 2 | description: Sets up build dependencies 3 | 4 | runs: 5 | using: composite 6 | steps: 7 | - id: python 8 | uses: actions/setup-python@v4 9 | with: 10 | python-version: '3.x' 11 | - id: apt 12 | run: | 13 | sudo apt-get update 14 | sudo apt-get install -y \ 15 | discount \ 16 | doxygen \ 17 | fluxbox \ 18 | gdb \ 19 | graphviz \ 20 | jq \ 21 | lcov \ 22 | libpango1.0-dev \ 23 | libstartup-notification0-dev \ 24 | libxcb-ewmh-dev \ 25 | libxcb-icccm4-dev \ 26 | libxcb-randr0-dev \ 27 | libxcb-util0-dev \ 28 | libxcb-xinerama0-dev \ 29 | libxcb-xkb-dev \ 30 | libxcb-xrm-dev \ 31 | libxcb-cursor-dev \ 32 | libxcb-imdkit-dev \ 33 | libxkbcommon-dev \ 34 | libxkbcommon-dev \ 35 | libxkbcommon-x11-dev \ 36 | libgdk-pixbuf-2.0-dev \ 37 | ninja-build \ 38 | pandoc \ 39 | python3-pip \ 40 | python3-setuptools \ 41 | python3-wheel \ 42 | texi2html \ 43 | texinfo \ 44 | xdotool \ 45 | xfonts-base \ 46 | xterm \ 47 | xutils-dev 48 | shell: bash 49 | - id: doxy 50 | run: git clone https://github.com/davatorium/doxy-coverage 51 | shell: bash 52 | - id: check 53 | run: | 54 | curl -L https://github.com/libcheck/check/releases/download/0.14.0/check-0.14.0.tar.gz | tar xzf - 55 | cd check-0.14.0 56 | ./configure 57 | make 58 | sudo make install 59 | sudo ldconfig 60 | shell: bash 61 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | > Please follow these steps before submitting your PR: 2 | > 3 | > - [ ] This PR targets the `next` branch and not `master` 4 | > - [ ] If your PR is a work in progress, include [WIP] in its title 5 | > - [ ] Its commits' summaries are reasonably descriptive 6 | > - [ ] You've described what this PR addresses below 7 | > - [ ] You've included links to relevant issues, if any with `#issue_num` 8 | > - [ ] You've deleted this template 9 | > 10 | > Thank you for contributing to rofi! <3 11 | 12 | Your description here... 13 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: CI Build 2 | 3 | on: 4 | push: 5 | branches: 6 | - next 7 | paths-ignore: 8 | - "**.md" 9 | - "**.markdown" 10 | - "**.rasi" 11 | pull_request: 12 | paths-ignore: 13 | - "**.md" 14 | - "**.markdown" 15 | - "**.rasi" 16 | 17 | jobs: 18 | build-meson-gcc: 19 | runs-on: ubuntu-latest 20 | steps: 21 | - uses: actions/checkout@v3 22 | with: 23 | submodules: recursive 24 | - uses: ./.github/actions/setup 25 | - uses: ./.github/actions/meson 26 | with: 27 | cc: gcc 28 | build-meson-clang: 29 | runs-on: ubuntu-latest 30 | steps: 31 | - uses: actions/checkout@v3 32 | with: 33 | submodules: recursive 34 | - uses: ./.github/actions/setup 35 | - uses: ./.github/actions/meson 36 | with: 37 | cc: clang 38 | build-autotools-gcc: 39 | runs-on: ubuntu-latest 40 | steps: 41 | - uses: actions/checkout@v3 42 | with: 43 | submodules: recursive 44 | - uses: ./.github/actions/setup 45 | - uses: ./.github/actions/autotools 46 | with: 47 | cc: gcc 48 | windowmode: enable 49 | do-release: true 50 | build-autotools-gcc-no-window: 51 | runs-on: ubuntu-latest 52 | steps: 53 | - uses: actions/checkout@v4 54 | with: 55 | submodules: recursive 56 | - uses: ./.github/actions/setup 57 | - uses: ./.github/actions/autotools 58 | with: 59 | cc: gcc 60 | windowmode: disable 61 | do-release: false 62 | build-autotools-clang: 63 | runs-on: ubuntu-latest 64 | steps: 65 | - uses: actions/checkout@v3 66 | with: 67 | submodules: recursive 68 | - uses: ./.github/actions/setup 69 | - uses: ./.github/actions/autotools 70 | with: 71 | cc: clang 72 | windowmode: enable 73 | do-release: false 74 | -------------------------------------------------------------------------------- /.github/workflows/codeql.yml: -------------------------------------------------------------------------------- 1 | name: "CodeQL" 2 | 3 | on: 4 | push: 5 | branches: [ 'next', 'master' ] 6 | pull_request: 7 | # The branches below must be a subset of the branches above 8 | branches: [ 'next' ] 9 | schedule: 10 | - cron: '59 13 * * 3' 11 | 12 | jobs: 13 | analyze: 14 | name: Analyze 15 | runs-on: ubuntu-latest 16 | permissions: 17 | actions: read 18 | contents: read 19 | security-events: write 20 | 21 | strategy: 22 | fail-fast: false 23 | matrix: 24 | language: [ 'cpp' ] 25 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] 26 | # Use only 'java' to analyze code written in Java, Kotlin or both 27 | # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both 28 | # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support 29 | 30 | steps: 31 | - name: Checkout repository 32 | uses: actions/checkout@v3 33 | with: 34 | submodules: recursive 35 | 36 | - uses: ./.github/actions/setup 37 | 38 | # Initializes the CodeQL tools for scanning. 39 | - name: Initialize CodeQL 40 | uses: github/codeql-action/init@v3 41 | with: 42 | languages: ${{ matrix.language }} 43 | # If you wish to specify custom queries, you can do so here or in a config file. 44 | # By default, queries listed here will override any specified in a config file. 45 | # Prefix the list here with "+" to use these queries and those in the config file. 46 | 47 | # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs 48 | # queries: security-extended,security-and-quality 49 | 50 | - uses: ./.github/actions/meson 51 | with: 52 | cc: gcc 53 | 54 | - name: Perform CodeQL Analysis 55 | uses: github/codeql-action/analyze@v3 56 | with: 57 | category: "/language:${{matrix.language}}" 58 | -------------------------------------------------------------------------------- /.github/workflows/lock.yml: -------------------------------------------------------------------------------- 1 | name: 'Lock Threads' 2 | 3 | on: 4 | schedule: 5 | - cron: '0 0 * * *' 6 | workflow_dispatch: 7 | 8 | permissions: 9 | issues: write 10 | pull-requests: write 11 | discussions: write 12 | 13 | concurrency: 14 | group: lock-threads 15 | 16 | jobs: 17 | action: 18 | runs-on: ubuntu-latest 19 | steps: 20 | - uses: dessant/lock-threads@v5 21 | with: 22 | process-only: 'issues' 23 | github-token: ${{ github.token }} 24 | issue-inactive-days: '31' 25 | exclude-issue-created-before: '' 26 | exclude-issue-created-after: '' 27 | exclude-issue-created-between: '' 28 | exclude-issue-closed-before: '' 29 | exclude-issue-closed-after: '' 30 | exclude-issue-closed-between: '' 31 | include-any-issue-labels: '' 32 | include-all-issue-labels: '' 33 | exclude-any-issue-labels: '' 34 | add-issue-labels: '' 35 | remove-issue-labels: '' 36 | issue-comment: > 37 | This pull request has been automatically locked since there 38 | has not been any recent activity after it was closed. 39 | Please open a new issue for related bugs. 40 | issue-lock-reason: 'resolved' 41 | log-output: false 42 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | on: 2 | issues: 3 | types: [opened, edited] 4 | 5 | jobs: 6 | auto_close_issues: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Checkout 10 | uses: actions/checkout@v1 11 | 12 | - name: Automatically close issues that don't follow the issue template 13 | uses: davatorium/auto-close-issues@v1.0.4 14 | with: 15 | github-token: ${{ secrets.GITHUB_TOKEN }} 16 | issue-close-message: "@${issue.user.login}: hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template." # optional property 17 | closed-issues-label: "Incomplete Report - Please follow the guidelines" # optional property 18 | -------------------------------------------------------------------------------- /.github/workflows/mkdocs.yml: -------------------------------------------------------------------------------- 1 | name: Publish docs via GitHub Pages 2 | on: 3 | push: 4 | branches: 5 | - sphinx 6 | - next 7 | 8 | jobs: 9 | build: 10 | name: Deploy docs 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout master 14 | uses: actions/checkout@v1 15 | 16 | - name: Deploy docs 17 | uses: mhausenblas/mkdocs-deploy-gh-pages@master 18 | env: 19 | CONFIG_FILE: mkdocs/mkdocs.yml 20 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /build*/ 2 | /.cache/ 3 | /.vscode/ 4 | 5 | # autotools generated files 6 | /missing 7 | /install-sh 8 | /configure 9 | /config.status 10 | /config.h.in 11 | /config.h 12 | /Makefile.in 13 | /Makefile 14 | /aclocal.m4 15 | /autom4te.cache/ 16 | /compile 17 | /depcomp 18 | /stamp-h1 19 | .dirstamp 20 | .deps/ 21 | *.o 22 | *.gcov 23 | *.gcda 24 | *.gcno 25 | /test-driver 26 | /ar-lib 27 | 28 | # generated files 29 | /helper_test 30 | /helper_config_cmdline_parser 31 | /helper_expand 32 | /history_test 33 | /rofi_test 34 | /textbox_test 35 | /rofi 36 | /doc/*.html 37 | /doc/*.doxy 38 | /gitconfig.h 39 | test/output.txt 40 | 41 | # I want to ignore log files 42 | *.log 43 | 44 | # Core files should never be checked in 45 | core 46 | 47 | # ignore patches too, the code is either checked in or branch. 48 | *.patch* 49 | 50 | # backup files 51 | *.swp 52 | *.*~ 53 | *.unc-backup~ 54 | *.unc-backup.md5~ 55 | 56 | # Build 57 | ylwrap 58 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | before_script: 2 | - apt-get update 3 | - apt-get install --force-yes -y software-properties-common apt-transport-https 4 | - add-apt-repository -y 'deb http://debian.jpleau.ca/ jessie-backports main contrib non-free' 5 | - apt-get update -qq 6 | - apt-get install --force-yes -y autoconf automake make libx11-dev libpango1.0-dev libcairo2-dev libstartup-notification0-dev libxcb-icccm4-dev libxcb-util0-dev libxcb-xinerama0-dev libxcb-xkb-dev libx11-xcb-dev 7 | - apt-get install --force-yes -y libxcb1-dev xvfb discount xdotool fluxbox libxkbcommon-dev libxkbcommon-x11-dev libxcb-ewmh-dev xutils-dev libtool lcov libxcb-randr0-dev doxygen python flex bison librsvg2-dev texinfo 8 | - git clone --recursive https://github.com/Airblader/xcb-util-xrm.git 9 | - cd xcb-util-xrm 10 | - ./autogen.sh --prefix=/usr 11 | - make 12 | - sudo make install 13 | - cd - 14 | - git clone https://github.com/libcheck/check/ -b 0.11.0 15 | - cd check 16 | - autoreconf -i 17 | - TEX="false" ./configure --prefix=/usr/ 18 | - make 19 | - sudo make install 20 | - cd - 21 | - git clone https://github.com/alobbs/doxy-coverage 22 | 23 | build-rofi: 24 | script: 25 | - git submodule update --init 26 | - autoreconf -i 27 | - ./configure --enable-gcov 28 | - make 29 | - make check 30 | - make distcheck 31 | - make coverage 32 | - make doxy 33 | - python2 doxy-coverage/doxy-coverage.py doc/html/xml/ 34 | artifacts: 35 | expire_in: 2 weeks 36 | paths: 37 | - coverage 38 | - doc/html 39 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libgwater"] 2 | path = subprojects/libgwater 3 | url = https://github.com/sardemff7/libgwater 4 | [submodule "libnkutils"] 5 | path = subprojects/libnkutils 6 | url = https://github.com/sardemff7/libnkutils 7 | -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- 1 | Morgane Glidic 2 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Aaron Ash 2 | Adrià Farrés 3 | Anton Löfgren 4 | Avatar 5 | bendem 6 | Benjamin Cremer 7 | Benjamin R. Haskell 8 | Bruno Braga 9 | Buglloc 10 | Chris Salzberg 11 | daemoni 12 | Dan Beste 13 | Daniel Hahler 14 | DanteFireX 15 | Dave Davenport 16 | Deiwin Sarjas 17 | Dimitar Yordanov 18 | Edwin Pujols 19 | eigengrau 20 | Eric Engeström 21 | Fangrui Song 22 | fice-t 23 | Florian Franzen 24 | Gabriel Holodak 25 | Gareth Poole 26 | Georgios Bitzes 27 | Greg Fitzgerald 28 | Guy Hughes 29 | Hexchain Tong 30 | Ian Remmler 31 | James Vaughan 32 | Jason Pleau 33 | Jasper Lievisse Adriaanse 34 | Klemens Schölhorn 35 | koppa 36 | lbonn 37 | Marcin Sedlak 38 | marduk 39 | Michael Vetter 40 | Moritz Maxeiner 41 | Nick87720z 42 | Niklas Haas 43 | N. Izumi 44 | Paulo Flabiano Smorigo 45 | Peter Cannici 46 | qedi 47 | Morgane Glidic 48 | Rasmus Steinke 49 | RaZ0rr-Two 50 | Roomcays 51 | seanpringle 52 | Sebastian Reuße 53 | Simon Hanna 54 | Stanislav Seletskiy 55 | Thomas Adam 56 | Thorsten Wißmann 57 | Tilman Blumenbach 58 | Tobias Kortkamp 59 | Tom Hinton 60 | TonCherAmi 61 | vimeitor 62 | Wieland Hoffmann 63 | Yaroslav 64 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at qball@gmpclient.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | MIT/X11 License 2 | Modified 2013-2024 Qball Cow 3 | Copyright (c) 2012 Sean Pringle 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /Examples/i3_empty_workspace.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | MAX_DESKTOPS=20 4 | 5 | WORKSPACES=$(seq -s '\n' 1 1 "${MAX_DESKTOPS}") 6 | 7 | EMPTY_WORKSPACE=$( (i3-msg -t get_workspaces | tr ',' '\n' | grep num | awk -F: '{print int($2)}' ; \ 8 | echo -e "${WORKSPACES}" ) | sort -n | uniq -u | head -n 1) 9 | 10 | i3-msg workspace "${EMPTY_WORKSPACE}" 11 | -------------------------------------------------------------------------------- /Examples/i3_switch_workspaces.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ -z $@ ] 4 | then 5 | gen_workspaces() 6 | { 7 | i3-msg -t get_workspaces | tr ',' '\n' | grep "name" | sed 's/"name":"\(.*\)"/\1/g' | sort -n 8 | } 9 | 10 | echo empty; gen_workspaces 11 | else 12 | WORKSPACE=$@ 13 | 14 | if [ "${WORKSPACE}" = "empty" ] 15 | then 16 | i3_empty_workspace.sh >/dev/null 17 | elif [ -n "${WORKSPACE}" ] 18 | then 19 | i3-msg workspace "${WORKSPACE}" >/dev/null 20 | fi 21 | fi 22 | -------------------------------------------------------------------------------- /Examples/rofi-file-browser.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Various options for the file browser script: 4 | ROFI_FB_GENERIC_FO="xdg-open" # command used for opening the selection 5 | ROFI_FB_PREV_LOC_FILE=~/.local/share/rofi/rofi_fb_prevloc 6 | ROFI_FB_HISTORY_FILE=~/.local/share/rofi/rofi_fb_history 7 | ROFI_FB_HISTORY_MAXCOUNT=5 # maximum number of history entries 8 | # Comment the next variable to always start in the last visited directory, 9 | # otherwise rofi_fb will start in the specified directory: 10 | ROFI_FB_START_DIR=$HOME # starting directory 11 | # Uncomment the following line to disable history: 12 | # ROFI_FB_NO_HISTORY=1 13 | 14 | # Beginning of the script: 15 | # Create the directory for the files of the script 16 | if [ ! -d "$(dirname "${ROFI_FB_PREV_LOC_FILE}")" ] 17 | then 18 | mkdir -p "$(dirname "${ROFI_FB_PREV_LOC_FILE}")" 19 | fi 20 | if [ ! -d "$(dirname "${ROFI_FB_HISTORY_FILE}")" ] 21 | then 22 | mkdir -p "$(dirname "${ROFI_FB_HISTORY_FILE}")" 23 | fi 24 | 25 | # Initialize $ROFI_FB_CUR_DIR 26 | if [ -d "${ROFI_FB_START_DIR}" ] 27 | then 28 | ROFI_FB_CUR_DIR="${ROFI_FB_START_DIR}" 29 | else 30 | ROFI_FB_CUR_DIR="$PWD" 31 | fi 32 | 33 | # Read last location, otherwise we default to $ROFI_FB_START_DIR or $PWD. 34 | if [ -f "${ROFI_FB_PREV_LOC_FILE}" ] 35 | then 36 | ROFI_FB_CUR_DIR=$(cat "${ROFI_FB_PREV_LOC_FILE}") 37 | fi 38 | 39 | # Handle argument. 40 | if [ -n "$@" ] 41 | then 42 | if [[ "$@" == /* ]] 43 | then 44 | ROFI_FB_CUR_DIR="$@" 45 | else 46 | ROFI_FB_CUR_DIR="${ROFI_FB_CUR_DIR}/$@" 47 | fi 48 | fi 49 | 50 | # If argument is no directory. 51 | if [ ! -d "${ROFI_FB_CUR_DIR}" ] 52 | then 53 | if [ -x "${ROFI_FB_CUR_DIR}" ] 54 | then 55 | coproc ( "${ROFI_FB_CUR_DIR}" >/dev/null 2>&1 ) 56 | exec 1>&- 57 | exit; 58 | elif [ -f "${ROFI_FB_CUR_DIR}" ] 59 | then 60 | if [[ "${ROFI_FB_NO_HISTORY}" -ne 1 ]] 61 | then 62 | # Append selected entry to history and remove exceeding entries 63 | sed -i "s|${ROFI_FB_CUR_DIR}|##deleted##|g" "${ROFI_FB_HISTORY_FILE}" 64 | sed -i '/##deleted##/d' "${ROFI_FB_HISTORY_FILE}" 65 | echo "${ROFI_FB_CUR_DIR}" >> "${ROFI_FB_HISTORY_FILE}" 66 | if [ "$( wc -l < "${ROFI_FB_HISTORY_FILE}" )" -gt "${ROFI_FB_HISTORY_MAXCOUNT}" ] 67 | then 68 | sed -i 1d "${ROFI_FB_HISTORY_FILE}" 69 | fi 70 | fi 71 | # Open the selected entry with $ROFI_FB_GENERIC_FO 72 | coproc ( "${ROFI_FB_GENERIC_FO}" "${ROFI_FB_CUR_DIR}" >/dev/null 2>&1 ) 73 | if [ -d "${ROFI_FB_START_DIR}" ] 74 | then 75 | echo "${ROFI_FB_START_DIR}" > "${ROFI_FB_PREV_LOC_FILE}" 76 | fi 77 | exit; 78 | fi 79 | exit; 80 | fi 81 | 82 | # Process current dir. 83 | if [ -n "${ROFI_FB_CUR_DIR}" ] 84 | then 85 | ROFI_FB_CUR_DIR=$(readlink -e "${ROFI_FB_CUR_DIR}") 86 | echo "${ROFI_FB_CUR_DIR}" > "${ROFI_FB_PREV_LOC_FILE}" 87 | pushd "${ROFI_FB_CUR_DIR}" >/dev/null 88 | fi 89 | 90 | # Output to rofi 91 | if [[ "${ROFI_FB_NO_HISTORY}" -ne 1 ]] 92 | then 93 | tac "${ROFI_FB_HISTORY_FILE}" | grep "${ROFI_FB_CUR_DIR}" 94 | fi 95 | echo ".." 96 | ls 97 | # vim:sw=4:ts=4:et: 98 | -------------------------------------------------------------------------------- /Examples/test_script_env.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ -z "${ROFI_OUTSIDE}" ] 4 | then 5 | echo "run this script in rofi". 6 | exit 7 | fi 8 | 9 | echo -en "\x00no-custom\x1ffalse\n" 10 | echo -en "\x00data\x1fmonkey do, monkey did\n" 11 | echo -en "\x00use-hot-keys\x1ftrue\n" 12 | echo -en "${ROFI_RETV}\x00icon\x1ffirefox\x1finfo\x1ftest\n" 13 | 14 | if [ -n "${ROFI_INFO}" ] 15 | then 16 | echo "my info: ${ROFI_INFO} " 17 | fi 18 | if [ -n "${ROFI_DATA}" ] 19 | then 20 | echo "my data: ${ROFI_DATA} " 21 | fi 22 | -------------------------------------------------------------------------------- /Examples/test_script_mode.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ "$*" = "quit" ]; then 4 | exit 0 5 | fi 6 | 7 | if [ "$@" ]; then 8 | # Override the previously set prompt. 9 | echo -en "\x00prompt\x1fChange prompt\n" 10 | for a in {1..10}; do 11 | echo "$a" 12 | done 13 | echo "quit" 14 | else 15 | echo -en "\x00prompt\x1ftesting\n" 16 | echo -en "\0urgent\x1f0,2\n" 17 | echo -en "\0active\x1f1\n" 18 | echo -en "\0markup-rows\x1ftrue\n" 19 | echo -en "\0message\x1fSpecial boldmessage\n" 20 | 21 | echo -en "aap\0icon\x1ffolder\n" 22 | echo -en "blob\0icon\x1ffolder\x1fdisplay\x1fblub\n" 23 | echo "noot" 24 | echo "mies" 25 | echo -en "-------------\0nonselectable\x1ftrue\x1fpermanent\x1ftrue\n" 26 | echo "testing" 27 | echo "Bold" 28 | echo "quit" 29 | fi 30 | -------------------------------------------------------------------------------- /Examples/test_script_mode_color.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ "$*" = "quit" ] 4 | then 5 | exit 0 6 | fi 7 | 8 | if [ "$@" ] 9 | then 10 | # Override the previously set prompt. 11 | echo -en "\0theme\x1felement-text { background-color: $@;}\n" 12 | echo -en "\0keep-selection\x1ftrue\n" 13 | # echo -en "\0new-selection\x1f2\n" 14 | echo "red" 15 | echo "lightgreen" 16 | echo "lightblue" 17 | echo "lightyellow" 18 | echo "quit" 19 | else 20 | echo -en "\x00prompt\x1ftesting\n" 21 | echo -en "\0urgent\x1f0,2\n" 22 | echo -en "\0active\x1f1\n" 23 | echo -en "\0keep-selection\x1ftrue\n" 24 | echo -en "\0message\x1fSpecial boldmessage\n" 25 | 26 | echo "red" 27 | echo "lightgreen" 28 | echo "lightblue" 29 | echo "lightyellow" 30 | echo "pink" 31 | echo "green" 32 | echo "blue" 33 | echo "gold" 34 | echo "quit" 35 | fi 36 | -------------------------------------------------------------------------------- /Examples/test_script_mode_delim.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ "$@" = "quit" ]] 4 | then 5 | exit 0 6 | fi 7 | 8 | # Override the previously set prompt. 9 | # We only want to do this on first call of script. 10 | if [[ $ROFI_RETV = 0 ]] 11 | then 12 | echo -en "\x00delim\x1f\\x1\n" 13 | fi 14 | echo -en "\x00message\x1fmy line1\nmyline2\nmy line3\x1" 15 | echo -en "\x00prompt\x1fChange prompt\x1" 16 | for a in {1..10} 17 | do 18 | echo -en "$a\x1" 19 | done 20 | echo -en "newline\ntest\x1" 21 | echo -en "quit" 22 | -------------------------------------------------------------------------------- /data/rofi-theme-selector.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Encoding=UTF-8 3 | Version=1.0 4 | Type=Application 5 | Terminal=false 6 | Exec=rofi-theme-selector 7 | Name=Rofi Theme Selector 8 | Icon=rofi 9 | -------------------------------------------------------------------------------- /data/rofi.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Encoding=UTF-8 3 | Version=1.0 4 | Type=Application 5 | Terminal=false 6 | Exec=rofi -show 7 | Name=Rofi 8 | Icon=rofi 9 | -------------------------------------------------------------------------------- /data/rofi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/data/rofi.png -------------------------------------------------------------------------------- /doc/README.md: -------------------------------------------------------------------------------- 1 | Manpages are build using [pandoc](https://pandoc.org/) 2 | 3 | Manpages can be updated using the following make command: 4 | 5 | ``` 6 | make generate-manpage 7 | ``` 8 | -------------------------------------------------------------------------------- /doc/default_configuration.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | 3 | // Timeout from user input. 4 | timeout { 5 | // The delay after inactivity to execute action. 6 | delay: 0; 7 | // The action to execute once the delay expires. 8 | action: "kb-cancel"; 9 | } 10 | 11 | // File browser mode. 12 | filebrowser { 13 | sorting-method: "name"; 14 | directories-first: true; 15 | } 16 | } 17 | 18 | @theme "default" 19 | -------------------------------------------------------------------------------- /doc/meson.build: -------------------------------------------------------------------------------- 1 | man_files = [ 2 | 'rofi.1', 3 | 'rofi-sensible-terminal.1', 4 | 'rofi-theme-selector.1', 5 | 'rofi-actions.5', 6 | 'rofi-debugging.5', 7 | 'rofi-dmenu.5', 8 | 'rofi-keys.5', 9 | 'rofi-script.5', 10 | 'rofi-theme.5', 11 | 'rofi-thumbnails.5', 12 | ] 13 | 14 | fs = import('fs') 15 | 16 | pandoc = find_program('pandoc', required: false, version: '>=2.9') 17 | 18 | if pandoc.found() 19 | man_targets = [] 20 | cp_cmds = [] 21 | foreach f: man_files 22 | section_number = f.split('.')[1] 23 | install_dest = join_paths(get_option('prefix'), get_option('mandir'), 'man' + section_number) 24 | 25 | man_targets += custom_target(f, 26 | input: ['.'.join([f, 'markdown']), 'man_filter.lua'], 27 | output: f, 28 | command: [ 'pandoc', '--standalone', '--to=man', 29 | '--lua-filter', '@INPUT1@', 30 | '-f', 'markdown-tex_math_dollars', 31 | '@INPUT0@', '-o', '@OUTPUT@' ], 32 | install: true, 33 | install_dir: install_dest, 34 | build_by_default: true, 35 | ) 36 | endforeach 37 | 38 | run_target('generate-manpage', command: ['true'], depends: man_targets) 39 | else 40 | man_missing = false 41 | foreach f: man_files 42 | if not fs.is_file(f) 43 | man_missing = true 44 | endif 45 | endforeach 46 | 47 | if man_missing 48 | warning('Man files cannot be generated and not present in source directory, they will not be installed') 49 | else 50 | install_man(man_files) 51 | endif 52 | endif 53 | 54 | doxy_conf = configuration_data() 55 | doxy_conf.set('PACKAGE', meson.project_name()) 56 | doxy_conf.set('VERSION', meson.project_version()) 57 | doxy_conf.set('abs_builddir', join_paths(meson.project_build_root(), meson.current_build_dir())) 58 | doxy_conf.set('abs_top_srcdir', meson.project_source_root()) 59 | 60 | doxyfile = configure_file( 61 | input: 'rofi.doxy.in', 62 | output: 'rofi.doxy', 63 | configuration: doxy_conf, 64 | ) 65 | 66 | doxygen = find_program('doxygen', required: false) 67 | if doxygen.found() 68 | html_target = custom_target('doxy', 69 | input: doxyfile, 70 | output: 'html', 71 | command: [doxygen, doxyfile], 72 | install: false, 73 | ) 74 | endif 75 | -------------------------------------------------------------------------------- /doc/rofi-actions.5.markdown: -------------------------------------------------------------------------------- 1 | # rofi-actions(5) 2 | 3 | ## NAME 4 | 5 | **rofi-actions** - Custom commands following interaction with rofi menus 6 | 7 | ## DESCRIPTION 8 | 9 | **rofi** allows to set custom commands or scripts to be executed when some actions are performed in the menu, such as changing selection, accepting an entry or canceling. 10 | 11 | This makes it possible for example to play sound effects or read aloud menu entries on selection. 12 | 13 | ## USAGE 14 | 15 | Following is the list of rofi flags for specifying custom commands or scripts to execute on supported actions: 16 | 17 | `-on-selection-changed` *cmd* 18 | 19 | Command or script to run when the current selection changes. Selected text is forwarded to the command replacing the pattern *{entry}*. 20 | 21 | `-on-entry-accepted` *cmd* 22 | 23 | Command or script to run when a menu entry is accepted. Accepted text is forwarded to the command replacing the pattern *{entry}*. 24 | 25 | `-on-mode-changed` *cmd* 26 | 27 | Command or script to run when the menu mode (e.g. drun,window,ssh...) is changed. 28 | 29 | `-on-menu-canceled` *cmd* 30 | 31 | Command or script to run when the menu is canceled. 32 | 33 | `-on-menu-error` *cmd* 34 | 35 | Command or script to run when an error menu is shown (e.g. `rofi -e "error message"`). Error text is forwarded to the command replacing the pattern *{error}*. 36 | 37 | `-on-screenshot-taken` *cmd* 38 | 39 | Command or script to run when a screenshot of rofi is taken. Screenshot path is forwarded to the command replacing the pattern *{path}*. 40 | 41 | ### Example usage 42 | 43 | Rofi command line: 44 | 45 | ```bash 46 | rofi -on-selection-changed "/path/to/select.sh {entry}" \ 47 | -on-entry-accepted "/path/to/accept.sh {entry}" \ 48 | -on-menu-canceled "/path/to/exit.sh" \ 49 | -on-mode-changed "/path/to/change.sh" \ 50 | -on-menu-error "/path/to/error.sh {error}" \ 51 | -on-screenshot-taken "/path/to/camera.sh {path}" \ 52 | -show drun 53 | ``` 54 | 55 | Rofi config file: 56 | 57 | ```css 58 | configuration { 59 | on-selection-changed: "/path/to/select.sh {entry}"; 60 | on-entry-accepted: "/path/to/accept.sh {entry}"; 61 | on-menu-canceled: "/path/to/exit.sh"; 62 | on-mode-changed: "/path/to/change.sh"; 63 | on-menu-error: "/path/to/error.sh {error}"; 64 | on-screenshot-taken: "/path/to/camera.sh {path}"; 65 | } 66 | ``` 67 | 68 | ### Play sound effects 69 | 70 | Here's an example bash script that plays a sound effect using `aplay` when the current selection is changed: 71 | 72 | ```bash 73 | #!/bin/bash 74 | 75 | coproc aplay -q $HOME/Music/selecting_an_item.wav 76 | ``` 77 | 78 | The use of `coproc` for playing sounds is suggested, otherwise the rofi process will wait for sounds to end playback before exiting. 79 | 80 | ### Read aloud 81 | 82 | Here's an example bash script that reads aloud currently selected entries using `espeak`: 83 | 84 | ```bash 85 | #!/bin/bash 86 | 87 | killall espeak 88 | echo "selected: $@" | espeak 89 | ``` 90 | -------------------------------------------------------------------------------- /doc/rofi-sensible-terminal.1.markdown: -------------------------------------------------------------------------------- 1 | # rofi-sensible-terminal(1) 2 | 3 | ## NAME 4 | 5 | **rofi-sensible-terminal** - launches $TERMINAL with fallbacks 6 | 7 | ## SYNOPSIS 8 | 9 | rofi-sensible-terminal [arguments] 10 | 11 | ## DESCRIPTION 12 | 13 | rofi-sensible-terminal is invoked in the rofi default config to start a terminal. This 14 | wrapper script is necessary since there is no distribution-independent terminal launcher 15 | (but for example Debian has x-terminal-emulator). Distribution packagers are responsible for 16 | shipping this script in a way which is appropriate for the distribution. 17 | 18 | It tries to start one of the following (in that order): 19 | 20 | * `$TERMINAL` (this is a non-standard variable) 21 | * x-terminal-emulator 22 | * urxvt 23 | * rxvt 24 | * st 25 | * terminology 26 | * qterminal 27 | * Eterm 28 | * aterm 29 | * uxterm 30 | * xterm 31 | * roxterm 32 | * xfce4-terminal.wrapper 33 | * mate-terminal 34 | * lxterminal 35 | * konsole 36 | * alacritty 37 | * kitty 38 | * wezterm 39 | 40 | 41 | ## SEE ALSO 42 | 43 | rofi(1) 44 | 45 | ## AUTHORS 46 | 47 | Dave Davenport and contributors 48 | 49 | Copied script from i3: 50 | Michael Stapelberg and contributors 51 | -------------------------------------------------------------------------------- /doc/rofi-theme-selector.1.markdown: -------------------------------------------------------------------------------- 1 | # rofi-theme-selector(1) 2 | 3 | ## NAME 4 | 5 | **rofi-theme-selector** - Preview and apply themes for **rofi** 6 | 7 | ## DESCRIPTION 8 | 9 | **rofi-theme-selector** is a bash/rofi script to preview and apply themes for 10 | **rofi**. It's part of any installation of **rofi**. 11 | 12 | ## USAGE 13 | 14 | ### Running rofi-theme-selector 15 | 16 | **rofi-theme-selector** shows a list of all available themes in a **rofi** 17 | window. It lets you preview each theme with the Enter key and apply the theme 18 | to your **rofi** configuration file with Alt+a. 19 | 20 | ## Theme directories 21 | 22 | **rofi-theme-selector** searches the following directories for themes: 23 | 24 | - ${PREFIX}/share/rofi/themes 25 | - $XDG_CONFIG_HOME/rofi/themes 26 | - $XDG_DATA_HOME/share/rofi/themes 27 | 28 | ${PREFIX} reflects the install location of rofi. In most cases this will be 29 | "/usr".
30 | $XDG_CONFIG_HOME is normally unset. Default path is "$HOME/.config".
31 | $XDG_DATA_HOME is normally unset. Default path is "$HOME/.local/share". 32 | 33 | ## SEE ALSO 34 | 35 | rofi(1) 36 | 37 | ## AUTHORS 38 | 39 | Qball Cow qball@gmpclient.org
40 | Rasmus Steinke rasi@xssn.at 41 | -------------------------------------------------------------------------------- /include/css-colors.h: -------------------------------------------------------------------------------- 1 | #ifndef ROFI_INCLUDE_CSS_COLORS_H 2 | #define ROFI_INCLUDE_CSS_COLORS_H 3 | 4 | #include 5 | /** 6 | * @defgroup CSSCOLORS CssColors 7 | * @ingroup HELPERS 8 | * 9 | * Lookup table for CSS 4.0 named colors. Like `Navo`. 10 | * 11 | * @{ 12 | */ 13 | 14 | /** 15 | * Structure of colors. 16 | */ 17 | typedef struct CSSColor { 18 | /** CSS name of the color. */ 19 | char *name; 20 | /** BGRA 8 bit color components. */ 21 | uint8_t b, g, r, a; 22 | } CSSColor; 23 | 24 | /** 25 | * Array with all the named colors. Of type #CSSColor, there are #num_CSSColors 26 | * items in this array. 27 | */ 28 | extern const CSSColor CSSColors[]; 29 | /** 30 | * Number of named colors. 31 | */ 32 | extern const unsigned int num_CSSColors; 33 | /** @} */ 34 | #endif // ROFI_INCLUDE_CSS_COLORS_H 35 | -------------------------------------------------------------------------------- /include/display.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2023 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_DISPLAY_H 29 | #define ROFI_DISPLAY_H 30 | 31 | #include "helper.h" 32 | #include "nkutils-bindings.h" 33 | #include 34 | 35 | /** 36 | * @param main_loop The GMainLoop 37 | * @param bindings The bindings object 38 | * 39 | * Setup the display backend 40 | * 41 | * @returns Whether the setup succeeded or not 42 | */ 43 | gboolean display_setup(GMainLoop *main_loop, NkBindings *bindings); 44 | 45 | /** 46 | * Do some late setup of the display backend 47 | * 48 | * @returns Whether the setup succeeded or not 49 | */ 50 | gboolean display_late_setup(void); 51 | 52 | /** 53 | * Do some early cleanup, like unmapping the surface 54 | */ 55 | void display_early_cleanup(void); 56 | 57 | /** 58 | * Cleanup any remaining display related stuff 59 | */ 60 | void display_cleanup(void); 61 | 62 | /** 63 | * Dumps the display layout for -help output 64 | */ 65 | void display_dump_monitor_layout(void); 66 | 67 | /** 68 | * @param context The startup notification context for the application to launch 69 | * @param child_setup A pointer to return the child setup function 70 | * @param user_data A pointer to return the child setup function user_data 71 | * 72 | * Provides the needed child setup function 73 | */ 74 | void display_startup_notification(RofiHelperExecuteContext *context, 75 | GSpawnChildSetupFunc *child_setup, 76 | gpointer *user_data); 77 | 78 | #endif 79 | -------------------------------------------------------------------------------- /include/helper-theme.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2023 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_HELPER_THEME_H 29 | #define ROFI_HELPER_THEME_H 30 | #include "theme.h" 31 | #include 32 | /** 33 | * @defgroup HELPERS Helpers 34 | * @{ 35 | */ 36 | /** 37 | * @param th The RofiHighlightColorStyle 38 | * @param tokens Array of regexes used for matching 39 | * @param input The input string to find the matches on 40 | * @param retv The Attribute list to update with matches 41 | * 42 | * Creates a set of pango attributes highlighting the matches found in the input 43 | * string. 44 | * 45 | * @returns the updated retv list. 46 | */ 47 | PangoAttrList *helper_token_match_get_pango_attr(RofiHighlightColorStyle th, 48 | rofi_int_matcher **tokens, 49 | const char *input, 50 | PangoAttrList *retv); 51 | 52 | /** 53 | * @param retv The Attribute list to update with matches 54 | * @param start The start to highlighting. 55 | * @param end The end point for the highlight 56 | * @param th The RofiHighlightColorStyle 57 | * 58 | * Creates a set of pango attributes highlighting the matches found in the input 59 | * style. 60 | * 61 | */ 62 | void helper_token_match_set_pango_attr_on_style(PangoAttrList *retv, int start, 63 | int end, 64 | RofiHighlightColorStyle th); 65 | /** 66 | * @param pfd Pango font description to validate. 67 | * @param font The name of the font to check. 68 | * 69 | * @returns true if font is valid. 70 | */ 71 | gboolean helper_validate_font(PangoFontDescription *pfd, const char *font); 72 | /** @} */ 73 | #endif // ROFI_HELPER_THEME_H 74 | -------------------------------------------------------------------------------- /include/history.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2023 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_HISTORY_H 29 | #define ROFI_HISTORY_H 30 | 31 | /** 32 | * @defgroup HISTORY History 33 | * @ingroup HELPERS 34 | * 35 | * Implements a very simple history module that can be used by a #Mode. 36 | * 37 | * This uses the following options from the #config object: 38 | * * #Settings::disable_history 39 | * * #Settings::ignored_prefixes 40 | * 41 | * @{ 42 | */ 43 | 44 | /** 45 | * @param filename The filename of the history cache. 46 | * @param entry The entry to add/increment 47 | * 48 | * Sets the entry in the history, if it exists its use-count is incremented. 49 | * 50 | */ 51 | void history_set(const char *filename, const char *entry) 52 | __attribute__((nonnull)); 53 | 54 | /** 55 | * @param filename The filename of the history cache. 56 | * @param entry The entry to remove 57 | * 58 | * Removes the entry from the history. 59 | */ 60 | void history_remove(const char *filename, const char *entry) 61 | __attribute__((nonnull)); 62 | 63 | /** 64 | * @param filename The filename of the history cache. 65 | * @param length The length of the returned list. 66 | * 67 | * Gets the entries in the list (in order of usage) 68 | * @returns a list of entries length long. (and NULL terminated). 69 | */ 70 | char **history_get_list(const char *filename, unsigned int *length) 71 | __attribute__((nonnull)); 72 | 73 | /**@}*/ 74 | #endif // ROFI_HISTORY_H 75 | -------------------------------------------------------------------------------- /include/modes/combi.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODE_COMBI_H 29 | #define ROFI_MODE_COMBI_H 30 | #include "mode.h" 31 | 32 | /** 33 | * @defgroup COBIMode Combi 34 | * @ingroup MODES 35 | * 36 | * Dialog that can combine multiple #Mode into one view. 37 | * 38 | * This mode uses the following options from the #config object: 39 | * * #Settings::combi_modes 40 | * 41 | * It creates the following option: 42 | * * Settings::display_combi 43 | * 44 | * @{ 45 | */ 46 | 47 | /** #Mode object representing the combi dialog. */ 48 | extern Mode combi_mode; 49 | 50 | /**@}*/ 51 | #endif // ROFI_MODE_COMBI_H 52 | -------------------------------------------------------------------------------- /include/modes/dmenu.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODE_DMENU_H 29 | #define ROFI_MODE_DMENU_H 30 | 31 | /** 32 | * @defgroup DMENU DMenu 33 | * @ingroup MODES 34 | * 35 | * 36 | * @{ 37 | */ 38 | /** 39 | * dmenu dialog. 40 | * 41 | * @returns TRUE if script was successful. 42 | */ 43 | int dmenu_mode_dialog(void); 44 | 45 | /** 46 | * Print dmenu mode commandline options to stdout, for use in help menu. 47 | */ 48 | void print_dmenu_options(void); 49 | 50 | /**@}*/ 51 | #endif // ROFI_MODE_DMENU_H 52 | -------------------------------------------------------------------------------- /include/modes/dmenuscriptshared.h: -------------------------------------------------------------------------------- 1 | #ifndef ROFI_MODES_DMENU_SCRIPT_SHARED_H 2 | #define ROFI_MODES_DMENU_SCRIPT_SHARED_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | typedef struct { 9 | /** Entry content. (visible part) */ 10 | char *entry; 11 | 12 | /** Display */ 13 | char *display; 14 | 15 | /** Icon name to display. */ 16 | char *icon_name; 17 | /** Async icon fetch handler. */ 18 | uint32_t icon_fetch_uid; 19 | uint32_t icon_fetch_size; 20 | /** Hidden meta keywords. */ 21 | char *meta; 22 | 23 | /** info */ 24 | char *info; 25 | 26 | /** non-selectable */ 27 | gboolean nonselectable; 28 | 29 | /** permanent */ 30 | gboolean permanent; 31 | 32 | /** urgent */ 33 | gboolean urgent; 34 | /** active */ 35 | gboolean active; 36 | } DmenuScriptEntry; 37 | /** 38 | * @param sw Unused 39 | * @param entry The entry to update. 40 | * @param buffer The buffer to parse. 41 | * @param length The buffer length. 42 | * 43 | * Updates entry with the parsed values from buffer. 44 | */ 45 | void dmenuscript_parse_entry_extras(G_GNUC_UNUSED Mode *sw, 46 | DmenuScriptEntry *entry, char *buffer, 47 | size_t length); 48 | #endif // ROFI_MODES_DMENU_SCRIPT_SHARED_H 49 | -------------------------------------------------------------------------------- /include/modes/drun.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODE_DRUN_H 29 | #define ROFI_MODE_DRUN_H 30 | 31 | #include "mode.h" 32 | 33 | /** 34 | * @defgroup DRUNMode DRun 35 | * @ingroup MODES 36 | * @{ 37 | */ 38 | #ifdef ENABLE_DRUN 39 | /** #Mode object representing the desktop menu run dialog. */ 40 | extern Mode drun_mode; 41 | #endif // ENABLE_DRUN 42 | /**@}*/ 43 | #endif // ROFI_MODE_DRUN_H 44 | -------------------------------------------------------------------------------- /include/modes/filebrowser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2023 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODE_FILE_BROWSER_H 29 | #define ROFI_MODE_FILE_BROWSER_H 30 | #include "mode.h" 31 | /** 32 | * @defgroup FileBrowserMode FileBrowser 33 | * @ingroup MODES 34 | * 35 | * 36 | * @{ 37 | */ 38 | /** #Mode object representing the run dialog. */ 39 | extern Mode file_browser_mode; 40 | 41 | /** 42 | * Create a new filebrowser. 43 | * @returns a new filebrowser structure. 44 | */ 45 | Mode *create_new_file_browser(void); 46 | /** 47 | * @param sw Mode object. 48 | * @param mretv return value passed in. 49 | * @param input The user input string. 50 | * @param selected_line The user selected line. 51 | * @param path The full path as output. 52 | * 53 | * @returns the state the user selected. 54 | */ 55 | ModeMode file_browser_mode_completer(Mode *sw, int mretv, char **input, 56 | unsigned int selected_line, char **path); 57 | /**@}*/ 58 | #endif // ROFI_MODE_FILE_BROWSER_H 59 | -------------------------------------------------------------------------------- /include/modes/help-keys.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODE_HELPKEYS_H 29 | #define ROFI_MODE_HELPKEYS_H 30 | 31 | #include "mode.h" 32 | /** 33 | * @defgroup HELPKEYSMode KeysHelp 34 | * @ingroup MODES 35 | * 36 | * Displays the different keybindings available in *rofi* 37 | * 38 | * @{ 39 | */ 40 | /** 41 | * #Mode object representing the help key mode view 42 | */ 43 | extern Mode help_keys_mode; 44 | /**@}*/ 45 | #endif // ROFI_MODE_HELPKEYS_H 46 | -------------------------------------------------------------------------------- /include/modes/modes.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODES_MODES_H 29 | #define ROFI_MODES_MODES_H 30 | 31 | /** 32 | * @defgroup MODES Modes 33 | */ 34 | /** 35 | * List of available modes. 36 | */ 37 | 38 | #include "modes/combi.h" 39 | #include "modes/dmenu.h" 40 | #include "modes/drun.h" 41 | #include "modes/filebrowser.h" 42 | #include "modes/recursivebrowser.h" 43 | #include "modes/help-keys.h" 44 | #include "modes/run.h" 45 | #include "modes/script.h" 46 | #include "modes/ssh.h" 47 | #include "modes/window.h" 48 | #endif // ROFI_MODES_MODES_H 49 | -------------------------------------------------------------------------------- /include/modes/recursivebrowser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2023 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODE_RECURSIVE_BROWSER_H 29 | #define ROFI_MODE_RECURSIVE_BROWSER_H 30 | #include "mode.h" 31 | /** 32 | * @defgroup FileBrowserMode FileBrowser 33 | * @ingroup MODES 34 | * 35 | * 36 | * @{ 37 | */ 38 | /** #Mode object representing the run dialog. */ 39 | extern Mode recursive_browser_mode; 40 | 41 | /** 42 | * Create a new filebrowser. 43 | * @returns a new filebrowser structure. 44 | */ 45 | Mode *create_new_recursive_browser(void); 46 | /** 47 | * @param sw Mode object. 48 | * @param mretv return value passed in. 49 | * @param input The user input string. 50 | * @param selected_line The user selected line. 51 | * @param path The full path as output. 52 | * 53 | * @returns the state the user selected. 54 | */ 55 | ModeMode recursive_browser_mode_completer(Mode *sw, int mretv, char **input, 56 | unsigned int selected_line, char **path); 57 | /**@}*/ 58 | #endif // ROFI_MODE_RECURSIVE_BROWSER_H 59 | -------------------------------------------------------------------------------- /include/modes/run.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODE_RUN_H 29 | #define ROFI_MODE_RUN_H 30 | 31 | #include "mode.h" 32 | 33 | /** 34 | * @defgroup RUNMode Run 35 | * @ingroup MODES 36 | * 37 | * This mode uses the following options from the #config object: 38 | * * #Settings::run_command 39 | * * #Settings::run_shell_command 40 | * * #Settings::run_list_command 41 | * 42 | * @{ 43 | */ 44 | /** #Mode object representing the run dialog. */ 45 | extern Mode run_mode; 46 | 47 | /**@}*/ 48 | #endif // ROFI_MODE_RUN_H 49 | -------------------------------------------------------------------------------- /include/modes/script.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODE_SCRIPT_H 29 | #define ROFI_MODE_SCRIPT_H 30 | 31 | #include "mode.h" 32 | 33 | /** 34 | * @defgroup SCRIPTMode Script 35 | * @ingroup MODES 36 | * 37 | * @{ 38 | */ 39 | /** 40 | * @param str The input string to parse 41 | * 42 | * Parse an argument string into the right ScriptOptions data object. 43 | * This is off format: \:\ 44 | * 45 | * @returns NULL when it fails, a newly allocated ScriptOptions when successful. 46 | */ 47 | Mode *script_mode_parse_setup(const char *str); 48 | 49 | /** 50 | * @param token The modes str to check 51 | * 52 | * Check if token could be a valid script modes. 53 | * 54 | * @returns true when valid. 55 | */ 56 | gboolean script_mode_is_valid(const char *token); 57 | 58 | /** 59 | * Gather the users scripts from `~/.config/rofi/scripts/` 60 | */ 61 | void script_mode_gather_user_scripts(void); 62 | 63 | /** 64 | * Cleanup memory allocated by `script_mode_gather_user_scripts` 65 | */ 66 | void script_mode_cleanup(void); 67 | /** 68 | * @param is_term if printed to terminal 69 | * 70 | * List the user scripts found. 71 | */ 72 | void script_user_list(gboolean is_term); 73 | /**@}*/ 74 | #endif // ROFI_MODE_SCRIPT_H 75 | -------------------------------------------------------------------------------- /include/modes/ssh.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODE_SSH_H 29 | #define ROFI_MODE_SSH_H 30 | #include "mode.h" 31 | /** 32 | * @defgroup SSHMode SSH 33 | * @ingroup MODES 34 | * 35 | * SSH Mode, returns a list of known SSH hosts the user can log into. 36 | * It does this by parsing the SSH config file and optional the known host and 37 | * host list It also keeps history of the last chosen hosts. 38 | * 39 | * This mode uses the following options from the #config object: 40 | * * #Settings::ssh_command 41 | * * #Settings::parse_known_hosts 42 | * * #Settings::parse_hosts 43 | * 44 | * @{ 45 | */ 46 | 47 | /** #Mode object representing the ssh mode. */ 48 | extern Mode ssh_mode; 49 | /**@}*/ 50 | #endif // ROFI_MODE_SSH_H 51 | -------------------------------------------------------------------------------- /include/modes/window.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_MODE_WINDOW_H 29 | #define ROFI_MODE_WINDOW_H 30 | 31 | #include "mode.h" 32 | 33 | /** 34 | * @defgroup WINDOWMode Window 35 | * @ingroup MODES 36 | * 37 | * @{ 38 | */ 39 | #ifdef WINDOW_MODE 40 | 41 | extern Mode window_mode; 42 | extern Mode window_mode_cd; 43 | 44 | void window_client_handle_signal(xcb_window_t win, gboolean create); 45 | #endif // WINDOW_MODE 46 | /** @}*/ 47 | #endif // ROFI_MODE_WINDOW_H 48 | -------------------------------------------------------------------------------- /include/rofi-icon-fetcher.h: -------------------------------------------------------------------------------- 1 | #ifndef ROFI_ICON_FETCHER_H 2 | #define ROFI_ICON_FETCHER_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | /** 9 | * @defgroup ICONFETCHER IconFetcher 10 | * @ingroup HELPERS 11 | * 12 | * Small helper of to fetch icons. This makes use of the 'view' threadpool. 13 | * @{ 14 | */ 15 | 16 | /** 17 | * Initialize the icon fetcher. 18 | */ 19 | void rofi_icon_fetcher_init(void); 20 | 21 | /** 22 | * Destroy and free the memory used by the icon fetcher. 23 | */ 24 | void rofi_icon_fetcher_destroy(void); 25 | 26 | /** 27 | * @param name The name of the icon to fetch. 28 | * @param size The size of the icon to fetch. 29 | * 30 | * Query the icon-theme for icon with name and size. 31 | * The returned icon will be the best match for the requested size, it should 32 | * still be resized to the actual size. 33 | * 34 | * name can also be a full path, if prefixed with file://. 35 | * 36 | * @returns the uid identifying the request. 37 | */ 38 | uint32_t rofi_icon_fetcher_query(const char *name, const int size); 39 | 40 | /** 41 | * @param name The name of the icon to fetch. 42 | * @param wsize The width of the icon to fetch. 43 | * @param hsize The height of the icon to fetch. 44 | * 45 | * Query the icon-theme for icon with name and size. 46 | * The returned icon will be the best match for the requested size, it should 47 | * still be resized to the actual size. For icons it will take the min of wsize 48 | * and hsize. 49 | * 50 | * name can also be a full path, if prefixed with file://. 51 | * 52 | * @returns the uid identifying the request. 53 | */ 54 | uint32_t rofi_icon_fetcher_query_advanced(const char *name, const int wsize, 55 | const int hsize); 56 | 57 | /** 58 | * @param uid The unique id representing the matching request. 59 | * 60 | * If the surface is used, the user should reference the surface. 61 | * 62 | * @returns the surface with the icon, NULL when not found. 63 | */ 64 | cairo_surface_t *rofi_icon_fetcher_get(const uint32_t uid); 65 | 66 | /** 67 | * @param uid The unique id representing the matching request. 68 | * @param surface [out] The surface found. 69 | * 70 | * If the surface is used, the user should reference the surface. 71 | * 72 | * @returns false if a query was done and failed. 73 | */ 74 | gboolean rofi_icon_fetcher_get_ex(const uint32_t uid, 75 | cairo_surface_t **surface); 76 | /** 77 | * @param path the image path to check. 78 | * 79 | * Checks if a file is a supported image. (by looking at extension). 80 | * 81 | * @returns true if image, false otherwise. 82 | */ 83 | gboolean rofi_icon_fetcher_file_is_image(const char *const path); 84 | /** @} */ 85 | #endif // ROFI_ICON_FETCHER_H 86 | -------------------------------------------------------------------------------- /include/timings.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2023 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | /** 29 | * @defgroup TIMINGS Timings 30 | * @ingroup HELPERS 31 | * @{ 32 | */ 33 | #ifndef ROFI_TIMINGS_H 34 | #define ROFI_TIMINGS_H 35 | 36 | /** 37 | * Init the timestamping mechanism . 38 | * implementation. 39 | */ 40 | void rofi_timings_init(void); 41 | /** 42 | * @param file filename tick originates from 43 | * @param str function name. 44 | * @param line line number 45 | * @param msg message 46 | * 47 | * Report a tick. 48 | */ 49 | void rofi_timings_tick(const char *file, char const *str, int line, 50 | char const *msg); 51 | /** 52 | * Stop the timestamping mechanism 53 | */ 54 | void rofi_timings_quit(void); 55 | 56 | /** 57 | * Start timestamping mechanism. 58 | * Call to this function is time 0. 59 | */ 60 | #define TIMINGS_START() rofi_timings_init() 61 | /** 62 | * Report current time since TIMINGS_START 63 | */ 64 | #define TICK() rofi_timings_tick(__FILE__, __func__, __LINE__, "") 65 | /** 66 | * @param a an string 67 | * Report current time since TIMINGS_START 68 | */ 69 | #define TICK_N(a) rofi_timings_tick(__FILE__, __func__, __LINE__, a) 70 | /** 71 | * Stop timestamping mechanism. 72 | */ 73 | #define TIMINGS_STOP() rofi_timings_quit() 74 | 75 | #else 76 | 77 | /** 78 | * Start timestamping mechanism. 79 | * Call to this function is time 0. 80 | */ 81 | #define TIMINGS_START() 82 | /** 83 | * Stop timestamping mechanism. 84 | */ 85 | #define TIMINGS_STOP() 86 | /** 87 | * Report current time since TIMINGS_START 88 | */ 89 | #define TICK() 90 | /** 91 | * @param a an string 92 | * Report current time since TIMINGS_START 93 | */ 94 | #define TICK_N(a) 95 | 96 | #endif // ROFI_TIMINGS_H 97 | /**@}*/ 98 | -------------------------------------------------------------------------------- /include/widgets/box.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_HBOX_H 29 | #define ROFI_HBOX_H 30 | 31 | #include "rofi-types.h" 32 | #include "widget.h" 33 | 34 | /** 35 | * @defgroup box box 36 | * @ingroup widget 37 | * 38 | * Widget used to pack multiple widgets either horizontally or vertically. 39 | * It supports packing widgets horizontally or vertically. Child widgets are 40 | * always expanded to the maximum size in the opposite direction of the packing 41 | * direction. e.g. vertically packed widgets use the full box width. 42 | * 43 | * @{ 44 | */ 45 | 46 | /** 47 | * Abstract handle to the box widget internal state. 48 | */ 49 | typedef struct _box box; 50 | 51 | /** 52 | * @param parent The widgets parent. 53 | * @param name The name of the widget. 54 | * @param type The packing direction of the newly created box. 55 | * 56 | * @returns a newly created box, free with #widget_free 57 | */ 58 | box *box_create(widget *parent, const char *name, RofiOrientation type); 59 | 60 | /** 61 | * @param box Handle to the box widget. 62 | * @param child Handle to the child widget to pack. 63 | * @param expand If the child widget should expand and use all available space. 64 | * 65 | * Add a widget to the box. 66 | */ 67 | void box_add(box *box, widget *child, gboolean expand); 68 | /**@}*/ 69 | #endif // ROFI_HBOX_H 70 | -------------------------------------------------------------------------------- /include/widgets/container.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_CONTAINER_H 29 | #define ROFI_CONTAINER_H 30 | 31 | #include "widget.h" 32 | 33 | /** 34 | * @defgroup container container 35 | * @ingroup widget 36 | * 37 | * 38 | * @{ 39 | */ 40 | 41 | /** 42 | * Abstract handle to the container widget internal state. 43 | */ 44 | typedef struct _container container; 45 | 46 | /** 47 | * @param parent The widget's parent 48 | * @param name The name of the widget. 49 | * 50 | * @returns a newly created container, free with #widget_free 51 | */ 52 | container *container_create(widget *parent, const char *name); 53 | 54 | /** 55 | * @param container Handle to the container widget. 56 | * @param child Handle to the child widget to pack. 57 | * 58 | * Add a widget to the container. 59 | */ 60 | void container_add(container *container, widget *child); 61 | /**@}*/ 62 | #endif // ROFI_CONTAINER_H 63 | -------------------------------------------------------------------------------- /include/widgets/icon.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2018 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_ICON_H 29 | #define ROFI_ICON_H 30 | 31 | #include "widget.h" 32 | 33 | /** 34 | * @defgroup icon icon 35 | * @ingroup widget 36 | * 37 | * 38 | * @{ 39 | */ 40 | 41 | /** 42 | * Abstract handle to the icon widget internal state. 43 | */ 44 | typedef struct _icon icon; 45 | 46 | /** 47 | * @param parent The widget's parent 48 | * @param name The name of the widget. 49 | * 50 | * @returns a newly created icon, free with #widget_free 51 | */ 52 | icon *icon_create(widget *parent, const char *name); 53 | 54 | /** 55 | * @param icon The icon widget handle. 56 | * @param size The size of the icon. 57 | * 58 | */ 59 | void icon_set_size(widget *icon, const int size); 60 | 61 | /** 62 | * @param icon_widget The icon widget handle. 63 | * @param surf The surface to display. 64 | */ 65 | void icon_set_surface(icon *icon_widget, cairo_surface_t *surf); 66 | /**@}*/ 67 | #endif // ROFI_ICON_H 68 | -------------------------------------------------------------------------------- /include/widgets/scrollbar.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2017 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_SCROLLBAR_H 29 | #define ROFI_SCROLLBAR_H 30 | #include "widgets/widget-internal.h" 31 | #include "widgets/widget.h" 32 | #include 33 | 34 | /** 35 | * @defgroup Scrollbar Scrollbar 36 | * @ingroup widget 37 | * 38 | * @{ 39 | */ 40 | /** 41 | * Internal structure for the scrollbar. 42 | */ 43 | typedef struct _scrollbar { 44 | widget widget; 45 | unsigned int length; 46 | unsigned int pos; 47 | unsigned int pos_length; 48 | RofiDistance width; 49 | } scrollbar; 50 | 51 | /** 52 | * @param parent The parent widget. 53 | * @param name The name of the widget. 54 | * 55 | * Create a new scrollbar 56 | * 57 | * @returns the scrollbar object. 58 | */ 59 | scrollbar *scrollbar_create(widget *parent, const char *name); 60 | 61 | /** 62 | * @param sb scrollbar object 63 | * @param pos_length new length 64 | * 65 | * set the length of the handle relative to the max value of bar. 66 | */ 67 | void scrollbar_set_handle_length(scrollbar *sb, unsigned int pos_length); 68 | 69 | /** 70 | * @param sb scrollbar object 71 | * @param pos new position 72 | * 73 | * set the position of the handle relative to the set max value of bar. 74 | */ 75 | void scrollbar_set_handle(scrollbar *sb, unsigned int pos); 76 | 77 | /** 78 | * @param sb scrollbar object 79 | * @param max the new max 80 | * 81 | * set the max value of the bar. 82 | */ 83 | void scrollbar_set_max_value(scrollbar *sb, unsigned int max); 84 | 85 | /** 86 | * @param sb scrollbar object 87 | * @param y clicked position 88 | * 89 | * Calculate the position of the click relative to the max value of bar 90 | */ 91 | guint scrollbar_scroll_get_line(const scrollbar *sb, int y); 92 | 93 | /**@}*/ 94 | #endif // ROFI_SCROLLBAR_H 95 | -------------------------------------------------------------------------------- /include/xcb-internal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2023 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | #ifndef ROFI_XCB_INTERNAL_H 29 | #define ROFI_XCB_INTERNAL_H 30 | /** Indication we accept that startup notification api is not yet frozen */ 31 | #define SN_API_NOT_YET_FROZEN 32 | #include 33 | #include 34 | 35 | #include "xcb.h" 36 | #include 37 | #include 38 | #include 39 | #include 40 | 41 | #include 42 | 43 | /** 44 | * Structure to keep xcb stuff around. 45 | */ 46 | struct _xcb_stuff { 47 | GMainLoop *main_loop; 48 | GWaterXcbSource *source; 49 | xcb_connection_t *connection; 50 | #ifdef XCB_IMDKIT 51 | xcb_xic_t ic; 52 | xcb_xim_t *im; 53 | xcb_key_symbols_t *syms; 54 | #endif 55 | xcb_ewmh_connection_t ewmh; 56 | xcb_screen_t *screen; 57 | int screen_nbr; 58 | SnDisplay *sndisplay; 59 | SnLauncheeContext *sncontext; 60 | struct _workarea *monitors; 61 | struct { 62 | /** Flag indicating first event */ 63 | uint8_t first_event; 64 | /** Keyboard device id */ 65 | int32_t device_id; 66 | } xkb; 67 | xcb_timestamp_t last_timestamp; 68 | NkBindingsSeat *bindings_seat; 69 | uint32_t mouse_seen; 70 | xcb_window_t focus_revert; 71 | char *clipboard; 72 | }; 73 | 74 | #endif 75 | -------------------------------------------------------------------------------- /libgwater-xcb-nolibtool.mk: -------------------------------------------------------------------------------- 1 | noinst_LIBRARIES += \ 2 | libgwater-xcb.a 3 | 4 | libgwater_xcb_a_SOURCES = \ 5 | subprojects/libgwater/xcb/libgwater-xcb.c \ 6 | subprojects/libgwater/xcb/libgwater-xcb.h 7 | 8 | libgwater_xcb_a_CFLAGS = \ 9 | $(AM_CFLAGS) \ 10 | $(GW_XCB_INTERNAL_CFLAGS) 11 | 12 | GW_XCB_CFLAGS = \ 13 | -I$(srcdir)/subprojects/libgwater/xcb \ 14 | $(GW_XCB_INTERNAL_CFLAGS) 15 | 16 | GW_XCB_LIBS = \ 17 | libgwater-xcb.a \ 18 | $(GW_XCB_INTERNAL_LIBS) 19 | -------------------------------------------------------------------------------- /m4/ax_prog_flex_version.m4: -------------------------------------------------------------------------------- 1 | # =========================================================================== 2 | # https://www.gnu.org/software/autoconf-archive/ax_prog_flex_version.html 3 | # =========================================================================== 4 | # 5 | # SYNOPSIS 6 | # 7 | # AX_PROG_FLEX_VERSION([VERSION],[ACTION-IF-TRUE],[ACTION-IF-FALSE]) 8 | # 9 | # DESCRIPTION 10 | # 11 | # Makes sure that flex version is greater or equal to the version 12 | # indicated. If true the shell commands in ACTION-IF-TRUE are executed. If 13 | # not the shell commands in commands in ACTION-IF-TRUE are executed. If 14 | # not the shell commands in ACTION-IF-FALSE are run. Note if $FLEX is not 15 | # set (for example by running AC_CHECK_PROG or AC_PATH_PROG) the macro 16 | # will fail. 17 | # 18 | # Example: 19 | # 20 | # AC_PATH_PROG([FLEX],[flex]) 21 | # AX_PROG_FLEX_VERSION([2.5.39],[ ... ],[ ... ]) 22 | # 23 | # This will check to make sure that the flex you have is at least version 24 | # 2.5.39 or greater. 25 | # 26 | # NOTE: This macro uses the $FLEX variable to perform the check. 27 | # 28 | # LICENSE 29 | # 30 | # Copyright (c) 2015 Jonathan Rajotte-Julien 31 | # 32 | # Copying and distribution of this file, with or without modification, are 33 | # permitted in any medium without royalty provided the copyright notice 34 | # and this notice are preserved. This file is offered as-is, without any 35 | # warranty. 36 | 37 | #serial 2 38 | 39 | AC_DEFUN([AX_PROG_FLEX_VERSION],[ 40 | AC_REQUIRE([AC_PROG_SED]) 41 | AC_REQUIRE([AC_PROG_GREP]) 42 | 43 | AS_IF([test -n "$FLEX"],[ 44 | ax_flex_version="$1" 45 | 46 | AC_MSG_CHECKING([for flex version]) 47 | changequote(<<,>>) 48 | flex_version=`$FLEX --version 2>&1 \ 49 | | $SED -n -e '/flex /s/.* (\{0,1\}\([0-9]*\.[0-9]*\.[0-9]*\))\{0,1\}.*/\1/;p'` 50 | changequote([,]) 51 | AC_MSG_RESULT($flex_version) 52 | 53 | AC_SUBST([FLEX_VERSION],[$flex_version]) 54 | 55 | AX_COMPARE_VERSION([$flex_version],[ge],[$ax_flex_version],[ 56 | : 57 | $2 58 | ],[ 59 | : 60 | $3 61 | ]) 62 | ],[ 63 | AC_MSG_WARN([could not find flex]) 64 | $3 65 | ]) 66 | ]) 67 | -------------------------------------------------------------------------------- /meson-dist-script: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -eu 4 | 5 | cd "${MESON_DIST_ROOT}" 6 | 7 | # deploy docs 8 | mkdir build 9 | meson setup build -Dprefix=/usr 10 | ninja -C build 11 | cp build/doc/*.1 doc 12 | cp build/doc/*.5 doc 13 | rm -rf build 14 | 15 | # configure script 16 | autoreconf -i 17 | -------------------------------------------------------------------------------- /meson_options.txt: -------------------------------------------------------------------------------- 1 | option('drun', type: 'boolean', value: true, description: 'Desktop file mode') 2 | option('window', type: 'boolean', value: true, description: 'Window switcher mode') 3 | option('check', type: 'feature', description: 'Build and run libcheck-based tests') 4 | option('imdkit', type: 'boolean', value: true, description: 'IMDKit support') 5 | -------------------------------------------------------------------------------- /mkdocs/docs/1.7.6/rofi-sensible-terminal.1.markdown: -------------------------------------------------------------------------------- 1 | # rofi-sensible-terminal(1) 2 | 3 | ## NAME 4 | 5 | **rofi-sensible-terminal** - launches $TERMINAL with fallbacks 6 | 7 | ## SYNOPSIS 8 | 9 | rofi-sensible-terminal [arguments] 10 | 11 | ## DESCRIPTION 12 | 13 | rofi-sensible-terminal is invoked in the rofi default config to start a terminal. This 14 | wrapper script is necessary since there is no distribution-independent terminal launcher 15 | (but for example Debian has x-terminal-emulator). Distribution packagers are responsible for 16 | shipping this script in a way which is appropriate for the distribution. 17 | 18 | It tries to start one of the following (in that order): 19 | 20 | * `$TERMINAL` (this is a non-standard variable) 21 | * x-terminal-emulator 22 | * urxvt 23 | * rxvt 24 | * st 25 | * terminology 26 | * qterminal 27 | * Eterm 28 | * aterm 29 | * uxterm 30 | * xterm 31 | * roxterm 32 | * xfce4-terminal.wrapper 33 | * mate-terminal 34 | * lxterminal 35 | * konsole 36 | * alacritty 37 | * kitty 38 | * wezterm 39 | 40 | 41 | ## SEE ALSO 42 | 43 | rofi(1) 44 | 45 | ## AUTHORS 46 | 47 | Dave Davenport and contributors 48 | 49 | Copied script from i3: 50 | Michael Stapelberg and contributors 51 | -------------------------------------------------------------------------------- /mkdocs/docs/1.7.6/rofi-theme-selector.1.markdown: -------------------------------------------------------------------------------- 1 | # rofi-theme-selector(1) 2 | 3 | ## NAME 4 | 5 | **rofi-theme-selector** - Preview and apply themes for **rofi** 6 | 7 | ## DESCRIPTION 8 | 9 | **rofi-theme-selector** is a bash/rofi script to preview and apply themes for 10 | **rofi**. It's part of any installation of **rofi**. 11 | 12 | ## USAGE 13 | 14 | ### Running rofi-theme-selector 15 | 16 | **rofi-theme-selector** shows a list of all available themes in a **rofi** 17 | window. It lets you preview each theme with the Enter key and apply the theme 18 | to your **rofi** configuration file with Alt+a. 19 | 20 | ## Theme directories 21 | 22 | **rofi-theme-selector** searches the following directories for themes: 23 | 24 | - ${PREFIX}/share/rofi/themes 25 | - $XDG_CONFIG_HOME/rofi/themes 26 | - $XDG_DATA_HOME/share/rofi/themes 27 | 28 | ${PREFIX} reflects the install location of rofi. In most cases this will be 29 | "/usr".
30 | $XDG_CONFIG_HOME is normally unset. Default path is "$HOME/.config".
31 | $XDG_DATA_HOME is normally unset. Default path is "$HOME/.local/share". 32 | 33 | ## SEE ALSO 34 | 35 | rofi(1) 36 | 37 | ## AUTHORS 38 | 39 | Qball Cow qball@gmpclient.org
40 | Rasmus Steinke rasi@xssn.at 41 | -------------------------------------------------------------------------------- /mkdocs/docs/1.7.7/rofi-sensible-terminal.1.markdown: -------------------------------------------------------------------------------- 1 | # rofi-sensible-terminal(1) 2 | 3 | ## NAME 4 | 5 | **rofi-sensible-terminal** - launches $TERMINAL with fallbacks 6 | 7 | ## SYNOPSIS 8 | 9 | rofi-sensible-terminal [arguments] 10 | 11 | ## DESCRIPTION 12 | 13 | rofi-sensible-terminal is invoked in the rofi default config to start a terminal. This 14 | wrapper script is necessary since there is no distribution-independent terminal launcher 15 | (but for example Debian has x-terminal-emulator). Distribution packagers are responsible for 16 | shipping this script in a way which is appropriate for the distribution. 17 | 18 | It tries to start one of the following (in that order): 19 | 20 | * `$TERMINAL` (this is a non-standard variable) 21 | * x-terminal-emulator 22 | * urxvt 23 | * rxvt 24 | * st 25 | * terminology 26 | * qterminal 27 | * Eterm 28 | * aterm 29 | * uxterm 30 | * xterm 31 | * roxterm 32 | * xfce4-terminal.wrapper 33 | * mate-terminal 34 | * lxterminal 35 | * konsole 36 | * alacritty 37 | * kitty 38 | * wezterm 39 | 40 | 41 | ## SEE ALSO 42 | 43 | rofi(1) 44 | 45 | ## AUTHORS 46 | 47 | Dave Davenport and contributors 48 | 49 | Copied script from i3: 50 | Michael Stapelberg and contributors 51 | -------------------------------------------------------------------------------- /mkdocs/docs/1.7.7/rofi-theme-selector.1.markdown: -------------------------------------------------------------------------------- 1 | # rofi-theme-selector(1) 2 | 3 | ## NAME 4 | 5 | **rofi-theme-selector** - Preview and apply themes for **rofi** 6 | 7 | ## DESCRIPTION 8 | 9 | **rofi-theme-selector** is a bash/rofi script to preview and apply themes for 10 | **rofi**. It's part of any installation of **rofi**. 11 | 12 | ## USAGE 13 | 14 | ### Running rofi-theme-selector 15 | 16 | **rofi-theme-selector** shows a list of all available themes in a **rofi** 17 | window. It lets you preview each theme with the Enter key and apply the theme 18 | to your **rofi** configuration file with Alt+a. 19 | 20 | ## Theme directories 21 | 22 | **rofi-theme-selector** searches the following directories for themes: 23 | 24 | - ${PREFIX}/share/rofi/themes 25 | - $XDG_CONFIG_HOME/rofi/themes 26 | - $XDG_DATA_HOME/share/rofi/themes 27 | 28 | ${PREFIX} reflects the install location of rofi. In most cases this will be 29 | "/usr".
30 | $XDG_CONFIG_HOME is normally unset. Default path is "$HOME/.config".
31 | $XDG_DATA_HOME is normally unset. Default path is "$HOME/.local/share". 32 | 33 | ## SEE ALSO 34 | 35 | rofi(1) 36 | 37 | ## AUTHORS 38 | 39 | Qball Cow qball@gmpclient.org
40 | Rasmus Steinke rasi@xssn.at 41 | -------------------------------------------------------------------------------- /mkdocs/docs/1.7.8/rofi-sensible-terminal.1.markdown: -------------------------------------------------------------------------------- 1 | # rofi-sensible-terminal(1) 2 | 3 | ## NAME 4 | 5 | **rofi-sensible-terminal** - launches $TERMINAL with fallbacks 6 | 7 | ## SYNOPSIS 8 | 9 | rofi-sensible-terminal [arguments] 10 | 11 | ## DESCRIPTION 12 | 13 | rofi-sensible-terminal is invoked in the rofi default config to start a terminal. This 14 | wrapper script is necessary since there is no distribution-independent terminal launcher 15 | (but for example Debian has x-terminal-emulator). Distribution packagers are responsible for 16 | shipping this script in a way which is appropriate for the distribution. 17 | 18 | It tries to start one of the following (in that order): 19 | 20 | * `$TERMINAL` (this is a non-standard variable) 21 | * x-terminal-emulator 22 | * urxvt 23 | * rxvt 24 | * st 25 | * terminology 26 | * qterminal 27 | * Eterm 28 | * aterm 29 | * uxterm 30 | * xterm 31 | * roxterm 32 | * xfce4-terminal.wrapper 33 | * mate-terminal 34 | * lxterminal 35 | * konsole 36 | * alacritty 37 | * kitty 38 | * wezterm 39 | 40 | 41 | ## SEE ALSO 42 | 43 | rofi(1) 44 | 45 | ## AUTHORS 46 | 47 | Dave Davenport and contributors 48 | 49 | Copied script from i3: 50 | Michael Stapelberg and contributors 51 | -------------------------------------------------------------------------------- /mkdocs/docs/1.7.8/rofi-theme-selector.1.markdown: -------------------------------------------------------------------------------- 1 | # rofi-theme-selector(1) 2 | 3 | ## NAME 4 | 5 | **rofi-theme-selector** - Preview and apply themes for **rofi** 6 | 7 | ## DESCRIPTION 8 | 9 | **rofi-theme-selector** is a bash/rofi script to preview and apply themes for 10 | **rofi**. It's part of any installation of **rofi**. 11 | 12 | ## USAGE 13 | 14 | ### Running rofi-theme-selector 15 | 16 | **rofi-theme-selector** shows a list of all available themes in a **rofi** 17 | window. It lets you preview each theme with the Enter key and apply the theme 18 | to your **rofi** configuration file with Alt+a. 19 | 20 | ## Theme directories 21 | 22 | **rofi-theme-selector** searches the following directories for themes: 23 | 24 | - ${PREFIX}/share/rofi/themes 25 | - $XDG_CONFIG_HOME/rofi/themes 26 | - $XDG_DATA_HOME/share/rofi/themes 27 | 28 | ${PREFIX} reflects the install location of rofi. In most cases this will be 29 | "/usr".
30 | $XDG_CONFIG_HOME is normally unset. Default path is "$HOME/.config".
31 | $XDG_DATA_HOME is normally unset. Default path is "$HOME/.local/share". 32 | 33 | ## SEE ALSO 34 | 35 | rofi(1) 36 | 37 | ## AUTHORS 38 | 39 | Qball Cow qball@gmpclient.org
40 | Rasmus Steinke rasi@xssn.at 41 | -------------------------------------------------------------------------------- /mkdocs/docs/1.7.9/rofi-actions.5.markdown: -------------------------------------------------------------------------------- 1 | # rofi-actions(5) 2 | 3 | ## NAME 4 | 5 | **rofi-actions** - Custom commands following interaction with rofi menus 6 | 7 | ## DESCRIPTION 8 | 9 | **rofi** allows to set custom commands or scripts to be executed when some actions are performed in the menu, such as changing selection, accepting an entry or canceling. 10 | 11 | This makes it possible for example to play sound effects or read aloud menu entries on selection. 12 | 13 | ## USAGE 14 | 15 | Following is the list of rofi flags for specifying custom commands or scripts to execute on supported actions: 16 | 17 | `-on-selection-changed` *cmd* 18 | 19 | Command or script to run when the current selection changes. Selected text is forwarded to the command replacing the pattern *{entry}*. 20 | 21 | `-on-entry-accepted` *cmd* 22 | 23 | Command or script to run when a menu entry is accepted. Accepted text is forwarded to the command replacing the pattern *{entry}*. 24 | 25 | `-on-mode-changed` *cmd* 26 | 27 | Command or script to run when the menu mode (e.g. drun,window,ssh...) is changed. 28 | 29 | `-on-menu-canceled` *cmd* 30 | 31 | Command or script to run when the menu is canceled. 32 | 33 | `-on-menu-error` *cmd* 34 | 35 | Command or script to run when an error menu is shown (e.g. `rofi -e "error message"`). Error text is forwarded to the command replacing the pattern *{error}*. 36 | 37 | `-on-screenshot-taken` *cmd* 38 | 39 | Command or script to run when a screenshot of rofi is taken. Screenshot path is forwarded to the command replacing the pattern *{path}*. 40 | 41 | ### Example usage 42 | 43 | Rofi command line: 44 | 45 | ```bash 46 | rofi -on-selection-changed "/path/to/select.sh {entry}" \ 47 | -on-entry-accepted "/path/to/accept.sh {entry}" \ 48 | -on-menu-canceled "/path/to/exit.sh" \ 49 | -on-mode-changed "/path/to/change.sh" \ 50 | -on-menu-error "/path/to/error.sh {error}" \ 51 | -on-screenshot-taken "/path/to/camera.sh {path}" \ 52 | -show drun 53 | ``` 54 | 55 | Rofi config file: 56 | 57 | ```css 58 | configuration { 59 | on-selection-changed: "/path/to/select.sh {entry}"; 60 | on-entry-accepted: "/path/to/accept.sh {entry}"; 61 | on-menu-canceled: "/path/to/exit.sh"; 62 | on-mode-changed: "/path/to/change.sh"; 63 | on-menu-error: "/path/to/error.sh {error}"; 64 | on-screenshot-taken: "/path/to/camera.sh {path}"; 65 | } 66 | ``` 67 | 68 | ### Play sound effects 69 | 70 | Here's an example bash script that plays a sound effect using `aplay` when the current selection is changed: 71 | 72 | ```bash 73 | #!/bin/bash 74 | 75 | coproc aplay -q $HOME/Music/selecting_an_item.wav 76 | ``` 77 | 78 | The use of `coproc` for playing sounds is suggested, otherwise the rofi process will wait for sounds to end playback before exiting. 79 | 80 | ### Read aloud 81 | 82 | Here's an example bash script that reads aloud currently selected entries using `espeak`: 83 | 84 | ```bash 85 | #!/bin/bash 86 | 87 | killall espeak 88 | echo "selected: $@" | espeak 89 | ``` 90 | -------------------------------------------------------------------------------- /mkdocs/docs/CONFIG.md: -------------------------------------------------------------------------------- 1 | ../../CONFIG.md -------------------------------------------------------------------------------- /mkdocs/docs/COPYING.md: -------------------------------------------------------------------------------- 1 | ../../COPYING -------------------------------------------------------------------------------- /mkdocs/docs/INSTALL.md: -------------------------------------------------------------------------------- 1 | ../../INSTALL.md -------------------------------------------------------------------------------- /mkdocs/docs/current/rofi-actions.5.markdown: -------------------------------------------------------------------------------- 1 | ../../../doc/rofi-actions.5.markdown -------------------------------------------------------------------------------- /mkdocs/docs/current/rofi-debugging.5.markdown: -------------------------------------------------------------------------------- 1 | ../../../doc/rofi-debugging.5.markdown -------------------------------------------------------------------------------- /mkdocs/docs/current/rofi-dmenu.5.markdown: -------------------------------------------------------------------------------- 1 | ../../../doc/rofi-dmenu.5.markdown -------------------------------------------------------------------------------- /mkdocs/docs/current/rofi-keys.5.markdown: -------------------------------------------------------------------------------- 1 | ../../../doc/rofi-keys.5.markdown -------------------------------------------------------------------------------- /mkdocs/docs/current/rofi-script.5.markdown: -------------------------------------------------------------------------------- 1 | ../../../doc/rofi-script.5.markdown -------------------------------------------------------------------------------- /mkdocs/docs/current/rofi-theme.5.markdown: -------------------------------------------------------------------------------- 1 | ../../../doc/rofi-theme.5.markdown -------------------------------------------------------------------------------- /mkdocs/docs/current/rofi-thumbnails.5.markdown: -------------------------------------------------------------------------------- 1 | ../../../doc/rofi-thumbnails.5.markdown -------------------------------------------------------------------------------- /mkdocs/docs/current/rofi.1.markdown: -------------------------------------------------------------------------------- 1 | ../../../doc/rofi.1.markdown -------------------------------------------------------------------------------- /mkdocs/docs/downloads.md: -------------------------------------------------------------------------------- 1 | # Downloads 2 | 3 | ## Development 4 | 5 | For development no tarball is released. Please follow the 6 | [Installation](../INSTALL/) instructions for obtaining and compiling 7 | development version. 8 | 9 | ## [1.7.9](https://github.com/davatorium/rofi/releases/tag/1.7.9) 10 | 11 | - [tar.gz](https://github.com/davatorium/rofi/releases/download/1.7.9/rofi-1.7.9.tar.gz) 12 | - [tar.xz](https://github.com/davatorium/rofi/releases/download/1.7.9/rofi-1.7.9.tar.xz) 13 | 14 | ## [1.7.8](https://github.com/davatorium/rofi/releases/tag/1.7.8) 15 | 16 | - [tar.gz](https://github.com/davatorium/rofi/releases/download/1.7.8/rofi-1.7.8.tar.gz) 17 | - [tar.xz](https://github.com/davatorium/rofi/releases/download/1.7.8/rofi-1.7.8.tar.xz) 18 | 19 | ## [1.7.7](https://github.com/davatorium/rofi/releases/tag/1.7.7) 20 | 21 | - [tar.gz](https://github.com/davatorium/rofi/releases/download/1.7.7/rofi-1.7.7.tar.gz) 22 | - [tar.xz](https://github.com/davatorium/rofi/releases/download/1.7.7/rofi-1.7.7.tar.xz) 23 | 24 | ## [1.7.6](https://github.com/davatorium/rofi/releases/tag/1.7.6) 25 | 26 | - [tar.gz](https://github.com/davatorium/rofi/releases/download/1.7.6/rofi-1.7.6.tar.gz) 27 | - [tar.xz](https://github.com/davatorium/rofi/releases/download/1.7.6/rofi-1.7.6.tar.xz) 28 | 29 | ## [1.7.5](https://github.com/davatorium/rofi/releases/tag/1.7.5) 30 | 31 | - [tar.gz](https://github.com/davatorium/rofi/releases/download/1.7.5/rofi-1.7.5.tar.gz) 32 | - [tar.xz](https://github.com/davatorium/rofi/releases/download/1.7.5/rofi-1.7.5.tar.xz) 33 | 34 | ## [1.7.4](https://github.com/davatorium/rofi/releases/tag/1.7.4) 35 | 36 | - [tar.gz](https://github.com/davatorium/rofi/releases/download/1.7.4/rofi-1.7.4.tar.gz) 37 | - [tar.xz](https://github.com/davatorium/rofi/releases/download/1.7.4/rofi-1.7.4.tar.xz) 38 | 39 | ## [1.7.3](https://github.com/davatorium/rofi/releases/tag/1.7.3) 40 | 41 | - [tar.gz](https://github.com/davatorium/rofi/releases/download/1.7.3/rofi-1.7.3.tar.gz) 42 | - [tar.xz](https://github.com/davatorium/rofi/releases/download/1.7.3/rofi-1.7.3.tar.xz) 43 | 44 | ## [1.7.2](https://github.com/davatorium/rofi/releases/tag/1.7.2) 45 | 46 | - [tar.gz](https://github.com/davatorium/rofi/releases/download/1.7.2/rofi-1.7.2.tar.gz) 47 | - [tar.xz](https://github.com/davatorium/rofi/releases/download/1.7.2/rofi-1.7.2.tar.xz) 48 | 49 | ## [1.7.1](https://github.com/davatorium/rofi/releases/tag/1.7.1) 50 | 51 | - [tar.gz](https://github.com/davatorium/rofi/releases/download/1.7.1/rofi-1.7.1.tar.gz) 52 | - [tar.xz](https://github.com/davatorium/rofi/releases/download/1.7.1/rofi-1.7.1.tar.xz) 53 | 54 | ## [1.7.0](https://github.com/davatorium/rofi/releases/tag/1.7.0) 55 | 56 | - [tar.gz](https://github.com/davatorium/rofi/releases/download/1.7.0/rofi-1.7.0.tar.gz) 57 | - [tar.xz](https://github.com/davatorium/rofi/releases/download/1.7.0/rofi-1.7.0.tar.xz) 58 | -------------------------------------------------------------------------------- /mkdocs/docs/guides/DynamicThemes/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/guides/DynamicThemes/1.png -------------------------------------------------------------------------------- /mkdocs/docs/guides/DynamicThemes/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/guides/DynamicThemes/2.png -------------------------------------------------------------------------------- /mkdocs/docs/guides/Plugins/rofi-file-browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/guides/Plugins/rofi-file-browser.png -------------------------------------------------------------------------------- /mkdocs/docs/guides/Positioning/example-pos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/guides/Positioning/example-pos.png -------------------------------------------------------------------------------- /mkdocs/docs/guides/Positioning/theme3-positioning.markdown: -------------------------------------------------------------------------------- 1 | # Positioning Rofi on the monitor 2 | 3 | In the current theme format you set these properties on the `window` widget. 4 | 5 | The first, location, determines where **rofi** is placed on the monitor, the 6 | second what point of the **rofi** window connects there. This sounds 7 | complicated, but it ain't. 8 | 9 | ## location setting 10 | 11 | The location setting determines the place of the window on the monitor. 12 | 13 | The location setting supports the following values: 14 | 15 | - north 16 | - northeast 17 | - northwest 18 | - south 19 | - southeast 20 | - southwest 21 | - east 22 | - west 23 | - center 24 | 25 | This is depicted in the diagram below: 26 | 27 | ![location](anchors.svg) 28 | 29 | ## anchor setting 30 | 31 | The anchor sets what point of the **rofi** window is placed at the specified 32 | *location*. 33 | 34 | The *anchor* settings supports the same values as the *location* setting. 35 | 36 | If you want the middle of the **rofi** window to be always located at the 37 | center of the monitor set both *location* and *anchor* to `center`. 38 | 39 | If the **rofi** window resizes, its center will stay at the center. If you set 40 | the *anchor* to `north` the top of the **rofi** window is at the center of the 41 | monitor, and the window will grow down. 42 | 43 | If you set the *anchor* and *location* to `south`, **rofi** is located at the 44 | bottom center and the window grows up. 45 | 46 | > Note that if you set the *anchor* to `south` and the *location* to `north` 47 | > the **rofi** window will be placed above the monitor and might not be 48 | > visible. 49 | 50 | > In another blog post we will explain how the dynamic sizing behaviour of 51 | > **rofi** can be tweaked or disabled. 52 | 53 | So the following theme setting will place the top of the **rofi** window in the 54 | center of the monitor: 55 | 56 | ```css 57 | window { 58 | location: center; 59 | anchor: north; 60 | } 61 | ``` 62 | 63 | As depicted here, RED is the location (center of screen), GREEN is the anchor 64 | on **rofi** window (north): 65 | 66 | ![positions](example-pos.png) 67 | 68 | > Quick hint, if you want to quickly test out changes to the theme, without 69 | > editing the file, run **rofi** like: 70 | 71 | ```bash 72 | rofi -show run -theme-str "window { location: center; anchor: north;}" 73 | ``` 74 | -------------------------------------------------------------------------------- /mkdocs/docs/guides/Transparency/rofi-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/guides/Transparency/rofi-background.png -------------------------------------------------------------------------------- /mkdocs/docs/guides/Transparency/rofi-background2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/guides/Transparency/rofi-background2.png -------------------------------------------------------------------------------- /mkdocs/docs/guides/Transparency/rofi-fake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/guides/Transparency/rofi-fake.png -------------------------------------------------------------------------------- /mkdocs/docs/guides/Transparency/rofi-paper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/guides/Transparency/rofi-paper.png -------------------------------------------------------------------------------- /mkdocs/docs/guides/Transparency/rofi-real.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/guides/Transparency/rofi-real.png -------------------------------------------------------------------------------- /mkdocs/docs/guides/Transparency/rofi-transp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/guides/Transparency/rofi-transp.png -------------------------------------------------------------------------------- /mkdocs/docs/guides/Transparency/theme3-transparency.markdown: -------------------------------------------------------------------------------- 1 | ## Transparency within rofi 2 | 3 | > The images in this guide are outdated, but the principals still hold. 4 | 5 | **Rofi** window is build up by first drawing the background, and then each 6 | widget above it, with the correct transparency factor. 7 | 8 | Remember the general widget structure: 9 | 10 | ![structure](structure.svg) 11 | 12 | This means if you set every widget to be 30% transparent on a white background: 13 | it will look like: 14 | 15 | ![images](rofi-transp.png) 16 | 17 | The transparency applies one on top of the other, so while they all are 30%, in 18 | the end it will be less transparent. 19 | 20 | > Try it yourself 21 | 22 | ```bash 23 | rofi -theme-str '@theme "/dev/null" window { background-color: white; }* { padding:5; background-color: rgba(20,20,20,0.5);}' -show run 24 | ``` 25 | 26 | This can sometimes be difficult when creating themes with a nice transparent 27 | background. 28 | The trick to make this work nicely is the following. 29 | 30 | Specify fully transparent background on the highest level. 31 | 32 | ```css 33 | * { 34 | background: transparent; 35 | } 36 | ``` 37 | 38 | Then set the background on the window box. 39 | 40 | ```css 41 | window { 42 | background: #cc1c1c1c; 43 | } 44 | ``` 45 | 46 | Now if you only set the background on widgets you want differently colored, it 47 | nicely works out. 48 | 49 | ## Transparency on the window 50 | 51 | This determines how transparency on the window is handled. 52 | This is set the be `transparency` option on the `window` widget. 53 | The option takes a string. There are basically 4 options: 54 | 55 | ### No transparency or "real" 56 | 57 | The background of the window is black and fully transparent, and everything is 58 | drawn on top of this. This means that if you have a composite manager (ARGB 59 | window), you get a fully transparent background, otherwise fully black. 60 | 61 | This is the preferred option if you have a composite manager running. 62 | 63 | ![rofi real](rofi-real.png) 64 | 65 | This image is actually partially transparent (won't show here clearly as block 66 | background is white.) 67 | 68 | ### Fake transparency or "screenshot" 69 | 70 | This tries to emulate a transparent window by taking a screenshot of the window 71 | before showing and then drawing everything on top of this. While this is not an 72 | ideal solution (it won't update if something changes in the background) it is 73 | often a very usable facsimile. 74 | 75 | ![rofi fake](rofi-fake.png) 76 | 77 | > Note: It can get very slow, especially on high resolution (4k) monitors. 78 | 79 | ### Background transparency or "background" 80 | 81 | This uses the background image (the root window image). This is, in my opinion, 82 | mostly useful when used fullscreen. 83 | 84 | ![rofi background](rofi-background2.png) 85 | 86 | ![rofi background2](rofi-background.png) 87 | 88 | ### Picture 89 | 90 | If instead of one of the above option, you specify a path to a png file this is 91 | used as background image. This can create a theme where you use paper as 92 | background. 93 | 94 | ![rofi paper](rofi-paper.png) 95 | -------------------------------------------------------------------------------- /mkdocs/docs/images/rofi-logo-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/images/rofi-logo-full.png -------------------------------------------------------------------------------- /mkdocs/docs/images/rofi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/images/rofi.png -------------------------------------------------------------------------------- /mkdocs/docs/index.md: -------------------------------------------------------------------------------- 1 | ![rofi](images/rofi-logo-full.png) 2 | 3 | # Welcome to Rofi Documentation 4 | 5 | This website holds the web-version of the manpages for rofi and several guides 6 | that have been published over the past years. 7 | The manpages are grouped on rofi version. 8 | 9 | - [Downloads](downloads.md) 10 | - [Installation](INSTALL.md) 11 | - [Themes](themes/themes.md) 12 | - [User scripts (wiki)](https://github.com/davatorium/rofi/wiki/User-scripts) 13 | 14 | ## Development version 15 | 16 | - [Rofi manpage](current/rofi.1.markdown) 17 | - [Themes](current/rofi-theme.5.markdown) 18 | - [Dmenu](current/rofi-dmenu.5.markdown) 19 | - [Script](current/rofi-script.5.markdown) 20 | - [Debugging](current/rofi-debugging.5.markdown) 21 | - [Keys](current/rofi-keys.5.markdown) 22 | - [Actions](current/rofi-actions.5.markdown) 23 | - [Thumbnails](current/rofi-thumbnails.5.markdown) 24 | 25 | ## Stable 26 | 27 | - [Rofi manpage](1.7.9/rofi.1.markdown) 28 | - [Themes](1.7.9/rofi-theme.5.markdown) 29 | - [Dmenu](1.7.9/rofi-dmenu.5.markdown) 30 | - [Script](1.7.9/rofi-script.5.markdown) 31 | - [Debugging](1.7.9/rofi-debugging.5.markdown) 32 | - [Keys](1.7.9/rofi-keys.5.markdown) 33 | - [Thumbnails](1.7.9/rofi-thumbnails.5.markdown) 34 | 35 | ## Guides 36 | 37 | - [Transparency](guides/Transparency/theme3-transparency) 38 | - [Positioning](guides/Positioning/theme3-positioning) 39 | - [Plugins](guides/Plugins/2017-04-19-rofi-140-sneak-preview-plugins.md) 40 | - [Dynamic Theme](guides/DynamicThemes/dynamic_themes.md) 41 | -------------------------------------------------------------------------------- /mkdocs/docs/themes/Adapta-Nokto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/Adapta-Nokto.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/Arc-Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/Arc-Dark.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/Arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/Arc.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/DarkBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/DarkBlue.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/Indego.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/Indego.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/Monokai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/Monokai.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/Paper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/Paper.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/android_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/android_notification.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/arthur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/arthur.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/blue.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/c64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/c64.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/capture.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | THEMES=../../../themes/*.rasi 4 | ROFI_BIN=../../../build/rofi 5 | 6 | function generate_options() { 7 | echo -en "rofi\0icon\x1frofi\n" 8 | echo -en "help browser\0icon\x1fhelp-browser\n" 9 | echo -en "thunderbird\0icon\x1fthunderbird\n" 10 | echo -en "Urgent\0icon\x1femblem-urgent\n" 11 | echo -en "Active\0icon\x1fface-wink\n" 12 | echo -en "folder\0icon\x1ffolder\n" 13 | echo -en "Icon font 🐢 🥳\n" 14 | echo -en "Font icon\0icon\x1f:-)\n" 15 | echo -en "Quit\0icon\x1fapplication-exit\n" 16 | } 17 | 18 | function run_theme { 19 | theme=$1 20 | BASE="$(basename ${theme})" 21 | NAME=${BASE%.rasi} 22 | export ROFI_PNG_OUTPUT="${NAME}.png" 23 | if [ "${NAME}" = "default" ]; then 24 | echo "# Default theme" >>themes.md 25 | else 26 | echo "# [${NAME}](https://github.com/davatorium/rofi/blob/next/themes/${BASE})" >>themes.md 27 | fi 28 | echo "" >>themes.md 29 | generate_options | ${ROFI_BIN} -theme-str "@theme \"${theme}\"" \ 30 | -no-config -dmenu -p "mode" -show-icons \ 31 | -u 3 -a 4 -mesg "Message box for extra information" \ 32 | -take-screenshot-quit 1500 33 | 34 | echo "![${NAME}](${NAME}.png)" >>themes.md 35 | echo "" >>themes.md 36 | } 37 | 38 | echo "# Included Themes" >themes.md 39 | 40 | echo "Below is a list of themes shipped with rofi." >>themes.md 41 | echo "Use \`rofi-theme-selector\` to select and use one of these themes." >>themes.md 42 | 43 | Xvfb :1234 -screen 0 1920x1080x24 & 44 | XEPHYR_PID=$! 45 | export DISPLAY=:1234 46 | sleep 0.5 47 | run_theme "default" 48 | for theme in ${THEMES}; do 49 | run_theme "${theme}" 50 | done 51 | kill ${XEPHYR_PID} 52 | -------------------------------------------------------------------------------- /mkdocs/docs/themes/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/default.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/dmenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/dmenu.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/docu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/docu.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/fancy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/fancy.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/fancy2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/fancy2.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/fullscreen-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/fullscreen-preview.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/glue_pro_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/glue_pro_blue.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/gruvbox-dark-hard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/gruvbox-dark-hard.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/gruvbox-dark-soft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/gruvbox-dark-soft.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/gruvbox-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/gruvbox-dark.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/gruvbox-light-hard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/gruvbox-light-hard.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/gruvbox-light-soft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/gruvbox-light-soft.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/gruvbox-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/gruvbox-light.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/iggy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/iggy.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/lb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/lb.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/material.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/material.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/paper-float.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/paper-float.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/purple.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/sidebar-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/sidebar-v2.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/sidebar.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/solarized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/solarized.png -------------------------------------------------------------------------------- /mkdocs/docs/themes/solarized_alternate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/mkdocs/docs/themes/solarized_alternate.png -------------------------------------------------------------------------------- /pkgconfig/rofi.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | pluginsdir=@libdir@/rofi/ 7 | 8 | Name: rofi 9 | Description: Header files for rofi plugins 10 | Requires.private: glib-2.0 >= 2.40 gmodule-2.0 cairo pango 11 | Version: @VERSION@ 12 | Cflags: -I${includedir}/ 13 | -------------------------------------------------------------------------------- /releasenotes/0.15.12/rofi-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/0.15.12/rofi-screenshot.png -------------------------------------------------------------------------------- /releasenotes/0.15.12/rofi-theme-site.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/0.15.12/rofi-theme-site.png -------------------------------------------------------------------------------- /releasenotes/0.15.12/rofi-themenator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/0.15.12/rofi-themenator.png -------------------------------------------------------------------------------- /releasenotes/0.15.12/rofi-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/0.15.12/rofi-warning.png -------------------------------------------------------------------------------- /releasenotes/1.1.0/release-1.1.0.markdown: -------------------------------------------------------------------------------- 1 | # V1.1.0 - A trump card 2 | 3 | ## New Features 4 | 5 | - Keys mode, showing keybindings. 6 | - Stop cycling option (#407) (Thx to Yaroslav) 7 | - Kill window on delete entry (#316) 8 | 9 | ## Improvements 10 | 11 | - Add Control+Backspace as remove word back keybinding. 12 | - Allow user to use X11 background for fake transparency (#390) 13 | - Allow user to specify background image. 14 | - Improved keybinding handling, allowing on-release and modifier only (#384). 15 | - Use display name for prompt (#409) 16 | - Parse subdirectories in drun parser (#416) 17 | - Switch to stop cycling (#407) 18 | 19 | ## Bug fixes 20 | 21 | - Grab mouse pointer with keyboard 22 | -------------------------------------------------------------------------------- /releasenotes/1.2.0/release-1.2.0.markdown: -------------------------------------------------------------------------------- 1 | # V1.2.0 - 8397 2 | 3 | ## New Features 4 | 5 | Despite me saying after every release that it is mostly feature complete; new **Rofi**, new features. 6 | However these new features are mostly to improve current functionality and debugging. 7 | Below the 4 most important ones. 8 | 9 | ### Underline Match 10 | 11 | A new, hopefully welcome, addition is that **Rofi** now highlights the match in each row: 12 | 13 | ![Rofi Underline](./rofi-underline-match.png) 14 | 15 | To accomplish this, now all matching is done using *GRegex*, as this returns the exact location in the string of each match. 16 | While I don't see a direct use, it is something a lot of other *quick search* tools provide, so **Rofi** could not stay 17 | behind. 18 | 19 | ## Multiline Select 20 | 21 | While already existing in a very rudimentary form, we now improved the multi-line select in **dmenu** mode. It will 22 | allow you to select and unselect rows, selected rows are highlighted with a dot and a small counter indicated the amount 23 | of rows selected. 24 | 25 | ![Rofi Multi Select](./rofi-multi-select.png) 26 | 27 | ## Customize Window string 28 | 29 | You can now specify what the window switcher will show. 30 | It allows for some markup to nicely line up the entries. 31 | 32 | For example if the with of the window is specified in characters, this would right align the class name 33 | 34 | ``` 35 | rofi.window-format: {t:-16} ({c:10}) 36 | ``` 37 | 38 | ![Rofi Window title align](./rofi-window-align.png) 39 | 40 | ## Track configuration option origin 41 | 42 | **Rofi** now keeps track of how configuration options are set. It will now display if it is the default value, set in 43 | Xresources, configuration file or commandline. 44 | 45 | ![Rofi configuration tracking](./rofi-options.png) 46 | 47 | This should help debugging recent bugs, where people had an invalid `pid` path set in the configuration file. 48 | Additionally if you dump the configuration, for using on another pc, it will comment the options that are set to their 49 | default value. (So f.e. pidfile location won't be overriden). 50 | 51 | ## Bug Fixes 52 | 53 | As no tool is without bugs, and **Rofi** not being the exception, we did manage to squash a few. 54 | 55 | * Fix current desktop window selector. 56 | * Fix launching application in terminal. 57 | * Support ```#include``` in config file. 58 | * Fix rofi on 30bit 10 bit per channel display. 59 | * Correct `Control-u` behaviour to remove till begin of line. `Control-w` now whipes the line. 60 | * Add missing `Control-k` keybinding, delete till end of line. 61 | 62 | ## Remove features 63 | 64 | * Removed fuzzy finder 65 | * Remove **[i3](http://www.i3wm.org)** workarounds. As **i3** has, for more than a year now, native support for EWMH. 66 | * Remove **XLib** dependency. The last hard dependency on **Xlib** has been removed by the use of 67 | **[xcb-util-xrm](https://github.com/Airblader/xcb-util-xrm)**. 68 | -------------------------------------------------------------------------------- /releasenotes/1.2.0/rofi-multi-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.2.0/rofi-multi-select.png -------------------------------------------------------------------------------- /releasenotes/1.2.0/rofi-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.2.0/rofi-options.png -------------------------------------------------------------------------------- /releasenotes/1.2.0/rofi-underline-match.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.2.0/rofi-underline-match.png -------------------------------------------------------------------------------- /releasenotes/1.2.0/rofi-window-align.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.2.0/rofi-window-align.png -------------------------------------------------------------------------------- /releasenotes/1.3.0/dmenu-async.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.3.0/dmenu-async.png -------------------------------------------------------------------------------- /releasenotes/1.3.0/fuzzy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.3.0/fuzzy.png -------------------------------------------------------------------------------- /releasenotes/1.3.0/resize.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.3.0/resize.gif -------------------------------------------------------------------------------- /releasenotes/1.3.0/structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.3.0/structure.png -------------------------------------------------------------------------------- /releasenotes/1.3.0/theme-selector.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.3.0/theme-selector.gif -------------------------------------------------------------------------------- /releasenotes/1.3.0/theme-selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.3.0/theme-selector.png -------------------------------------------------------------------------------- /releasenotes/1.3.1/release-1.3.1.markdown: -------------------------------------------------------------------------------- 1 | # V1.3.1: Dan vs. Greg: The never ending story, reloaded. 2 | 3 | A quick follow up release to resolve some issues with copyright notices in the shipped **rofi** themes. 4 | Below is the, modest, full list of changes. 5 | 6 | ## Detailed Changelog 7 | 8 | ### New Features 9 | 10 | - [DRun] Search categories. ([#449](https://github.com/DaveDavenport/rofi/issues/449)) 11 | 12 | ### Improvements 13 | 14 | - Fix exit when failed to grab keyboard. ([#524](https://github.com/DaveDavenport/rofi/issues/524)) 15 | - Introduce lazy keyboard grab mode for people who want rofi to show on key-down in i3. 16 | - Add copyrights to theme (needed for debian packaging). 17 | - DMENU: Correctly detect end-of-file ([#518](https://github.com/DaveDavenport/rofi/issues/518)) 18 | - Directly queue redraw on overlay change. 19 | - Remove pango markup from workspace names in I3. ([#507](https://github.com/DaveDavenport/rofi/issues/507)) 20 | 21 | -------------------------------------------------------------------------------- /releasenotes/1.4.0/rofi-border-transp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.4.0/rofi-border-transp.png -------------------------------------------------------------------------------- /releasenotes/1.4.0/rofi-border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.4.0/rofi-border.png -------------------------------------------------------------------------------- /releasenotes/1.4.0/rofi-dmenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.4.0/rofi-dmenu.png -------------------------------------------------------------------------------- /releasenotes/1.4.0/rofi-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.4.0/rofi-error.png -------------------------------------------------------------------------------- /releasenotes/1.4.0/rofi-fonts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.4.0/rofi-fonts.png -------------------------------------------------------------------------------- /releasenotes/1.4.0/rofi-fzf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.4.0/rofi-fzf.png -------------------------------------------------------------------------------- /releasenotes/1.4.0/rofi-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.4.0/rofi-icons.png -------------------------------------------------------------------------------- /releasenotes/1.4.0/rofi-no-fzf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.4.0/rofi-no-fzf.png -------------------------------------------------------------------------------- /releasenotes/1.4.0/rofi-rainbow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.4.0/rofi-rainbow.png -------------------------------------------------------------------------------- /releasenotes/1.4.0/rofi-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.4.0/rofi-top.png -------------------------------------------------------------------------------- /releasenotes/1.5.0/rofi-colon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.5.0/rofi-colon.png -------------------------------------------------------------------------------- /releasenotes/1.5.0/rofi-match.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.5.0/rofi-match.png -------------------------------------------------------------------------------- /releasenotes/1.5.0/rofi-neg-match.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.5.0/rofi-neg-match.png -------------------------------------------------------------------------------- /releasenotes/1.5.2/border-issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.5.2/border-issue.png -------------------------------------------------------------------------------- /releasenotes/1.5.2/release-1.5.2.markdown: -------------------------------------------------------------------------------- 1 | # 1.5.2: Procrastination in progress 2 | 3 | Rofi 1.5.2 is another bug-fix release in the 1.5 series. 4 | 5 | 6 | ## Fix border drawing 7 | 8 | Issue: #792, #783 9 | 10 | There turned out to be a bug in how borders are drawn. It would overlap parts of the border on corners, screwing up 11 | transparency. 12 | 13 | ![broken border](border-issue.png) 14 | 15 | This is now fixed. 16 | 17 | ## Improve Icon handling 18 | 19 | Issue: #860 20 | 21 | Several bugs around Icon handling have been fixed: 22 | 23 | * Failing to load multiple (identical icons) on initial load. 24 | * Preload user-set icon theme. 25 | * Use the common threadpool in rofi for the icon fetching, instead of spawning a custom one. 26 | 27 | 28 | ## New sort syntax 29 | 30 | Because of all the changes to the sorting methods in rofi, the command-line options for it where very confusing. 31 | To fix this they have been changed. 32 | 33 | The `sort` option is now used to enable/disable sorting. (This can also be changed at run-time using the hotkey) 34 | 35 | The `sorting-method` allows you to set the sorting method. Currently it supports **normal** (levenshtein) and **fzf**. 36 | 37 | ## Documentation updates 38 | 39 | Issue: #879, #867, #837, #831, #804 40 | 41 | Thanks to all the people highlighting or providing fixes to the documentation. 42 | 43 | ## Improving the ssh known hosts file parser 44 | 45 | Issue: #820 46 | 47 | The original known hosts parser was very limited. The parser has been extended to a bit more robust. 48 | 49 | ## Additions 50 | 51 | For some reason I can never make a release without adding more features to it. (Feature creep?). 52 | 53 | ### Option to change the negate character 54 | 55 | Issue: #877 56 | 57 | The option to negate a query: `foo -bar` e.g. search for all items matching `foo` but not `bar` caused a lot of 58 | confusion. It seems people often use rofi to also add arguments to applications (that start with a -). 59 | 60 | To help with this, the negate character (`-`) can be changed, or disabled. 61 | 62 | To disable: 63 | 64 | ``` 65 | rofi -matching-negate-char '\0' 66 | ``` 67 | 68 | 69 | ### Modify the DRUN display string 70 | 71 | Issue: #858 72 | 73 | An often requested feature is the ability to change the display string for the drun modi. 74 | The `-drun-display-format` option is added that allows just this. 75 | 76 | > -drun-display-format 77 | > 78 | > The format string for the drun dialog: 79 | > * name: the application's name 80 | > * generic: the application's generic name 81 | > * exec: the application's executable 82 | > * categories: the application's categories 83 | > * comment: the application comment 84 | > 85 | > Default: {name} [({generic})] 86 | 87 | Items between `[]` are only displayed when the field within is set. So in the above example, the `()` are omitted when 88 | `{generic}` is not set. 89 | 90 | 91 | ### Theme format now supports environment variables 92 | 93 | You can use environment variables as part of your theme/configuration file property value. 94 | Environment variables start with `$` and the name is surrounded by `{}`. 95 | So to query the environment `FOO` you can do: 96 | 97 | ```css 98 | #window { 99 | background: ${FOO}; 100 | } 101 | ``` 102 | 103 | The environment is then parsed as a normal value. 104 | -------------------------------------------------------------------------------- /releasenotes/1.5.3/release-1.5.3.markdown: -------------------------------------------------------------------------------- 1 | # 1.5.3: Time delayed progress 2 | 3 | Rofi 1.5.3 is another bug-fix release in the 1.5 series. 4 | 5 | There is one breaking change in the theme naming and there are a few small new features (tweaks) in this release. 6 | 7 | ## Sidebar renamed to mode-switcher 8 | 9 | The selection buttons to select between the different modi was still called `sidebar` a remnant from the past. 10 | This has now been renamed to `mode-switcher`. 11 | 12 | ## Icons in dmenu 13 | 14 | Just like in window,drun and script modi you can add icons to the list in dmenu mode. 15 | 16 | The syntax is similar to the script modi: 17 | 18 | ```bash 19 | echo -en "Firefox\0icon\x1ffirefox\ngimp\0icon\x1fgimp" | rofi -dmenu -no-config -show-icons 20 | ``` 21 | 22 | ![dmenu icons](rofi-dmenu-icons.png) 23 | 24 | 25 | The entries are separated by a `\n` newline (normal dmenu behaviour). 26 | The extra parameters can be added after a `\0` null character, the key and value are separated by a `\x1f` unit 27 | separator character. 28 | 29 | 30 | ## Ellipsizing listview entries 31 | 32 | If you have very long entries in your view that get ellipsized (cut off at the end indicated by ...) you can now select, 33 | at runtime, where they are cut off (start, middle or end). 34 | 35 | You cycle through the options with the `alt+.` keybinding. 36 | 37 | Start: 38 | 39 | ![dmenu ellipsize](rofi-ellipsize-start.png) 40 | 41 | 42 | Middle: 43 | 44 | ![dmenu ellipsize](rofi-ellipsize-middle.png) 45 | 46 | 47 | End: 48 | 49 | ![dmenu ellipsize](rofi-ellipsize-end.png) 50 | 51 | 52 | ## Full Changelog 53 | 54 | The full list of fixes and updates: 55 | 56 | * Update manpage with missing entry. (#937) 57 | * Rename sidebar widget to mode-switcher and allow configuration from theme. 58 | * Timing: Moving timing output to glib debug system. 59 | * SSH: Fix unitialized variable issue. 60 | * SSH: resolve ':' conflict in history entries. 61 | * SSH: be case-insensitive when parsing keywords. 62 | * RASI Lexer: Fix nested () in variable default field. 63 | * USABILITY: When mode not found, show in gui not just on commandline. 64 | * ICON: Allow aligning image in icon widget. 65 | * Meson build system: cleanups and improvements. 66 | * Meson build system: add documentation (#943) 67 | * Window: Fix default formatting and remove (invalid) deprecation warning. 68 | * DMenu: Add support for showing icons infront of displayed list. 69 | * Overlay: Fix overlay widget to correctly integrate in new theme format. 70 | * Update libnkutils, libgwater. 71 | * DMENU: Add format option to strip pango markup from return value. 72 | * ListView: allow user to change ellipsizing displayed value at run-time. 73 | -------------------------------------------------------------------------------- /releasenotes/1.5.3/rofi-dmenu-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.5.3/rofi-dmenu-icons.png -------------------------------------------------------------------------------- /releasenotes/1.5.3/rofi-ellipsize-end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.5.3/rofi-ellipsize-end.png -------------------------------------------------------------------------------- /releasenotes/1.5.3/rofi-ellipsize-middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.5.3/rofi-ellipsize-middle.png -------------------------------------------------------------------------------- /releasenotes/1.5.3/rofi-ellipsize-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.5.3/rofi-ellipsize-start.png -------------------------------------------------------------------------------- /releasenotes/1.6.0/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.6.0/icons.png -------------------------------------------------------------------------------- /releasenotes/1.6.0/icons2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.6.0/icons2.png -------------------------------------------------------------------------------- /releasenotes/1.6.0/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.6.0/warning.png -------------------------------------------------------------------------------- /releasenotes/1.6.1/filebrowser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.6.1/filebrowser.png -------------------------------------------------------------------------------- /releasenotes/1.6.1/release-1.6.1.markdown: -------------------------------------------------------------------------------- 1 | # 1.6.1: Tortoise Power 2 | 3 | Rofi 1.6.1 is another bug-fix release in the 1.6 series. 4 | This release fixes a few issues with 1.6.0, most important the crash with drun-cache and 5 | resolving some issues that the default theme had on some systems. 6 | There are a few minor new features introduced. 7 | 8 | 9 | ## Theme: min/max and nested media support 10 | 11 | To make themes more adoptable to different setups, `@media` statements can now be nested and support for min/max 12 | operation in `calc()` has been added. 13 | 14 | ## FileBrowser 15 | 16 | The file-browser plugin is now integrated in rofi. 17 | 18 | ![File Browser](filebrowser.png) 19 | 20 | 21 | ## ChangeLog 22 | - Use GdkPixbuf for Icon parsing. 23 | - Add FileBrowser to default mode. 24 | - Fix parsing dicts in config file (with " in middle of string.) 25 | - Add -normalize-match option, that tries to o match ö, é match e. (#1119) 26 | - [Theme] Add min/max operator support to calc() (#1172) 27 | - Show error message and return to list instead of closing (#1187) 28 | - [Theme] Add nested media support. (#1189) 29 | - [Textbox] Try to fix estimated font height. (#1190) 30 | - [DRun] Fix broken caching mechanism. 31 | -------------------------------------------------------------------------------- /releasenotes/1.7.0/background-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.7.0/background-image.png -------------------------------------------------------------------------------- /releasenotes/1.7.0/complete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.7.0/complete.gif -------------------------------------------------------------------------------- /releasenotes/1.7.0/iggy-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.7.0/iggy-theme.png -------------------------------------------------------------------------------- /releasenotes/1.7.0/iggy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.7.0/iggy.jpg -------------------------------------------------------------------------------- /releasenotes/1.7.0/rofi-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.7.0/rofi-icons.png -------------------------------------------------------------------------------- /releasenotes/1.7.1/release-1.7.1.markdown: -------------------------------------------------------------------------------- 1 | # 1.7.1: Turtley amazing! 2 | 3 | This release focusses on fixing bugs found in 1.7.0. The most important ones 4 | are fixing sizing bug, fix nested media statements and broken close-on-delete. 5 | There are a few new features to help themeing: We now support 6 | `env(ENV,default)` statement and when dumping a theme theme-names are resolved 7 | (f.e. `green`, `lightblue`, etc.). 8 | 9 | Thanks to everybody reporting bugs, providing patches that made this release possible. 10 | 11 | For a more complete list of changes see below. 12 | 13 | # Changelog 14 | 15 | * [Theme] Fix highlight with only theme. 16 | * Updated documentation and landing page (Thanks to RaZ0rr-Two) 17 | * [Combi] Fix nesting combi modi (#1510) 18 | * [DMenu] Fix crash dmenu mode when no entry is available. (#1504) 19 | * [Run|Drun] Only initialize file-completer on first use. 20 | * [FileBrowser] Reduce number of re-allocs. 21 | * [Readme] Remove generating readme.html for dist. 22 | * [Dmenu] Fix uninitialized memory (non-selectable) 23 | * [FileBrowser] Try to convert invalid encoded text. (#1471) 24 | * [FileBrowser] Don't crash on invalid file filenames. (#1471) 25 | * [Theme] print known colors as its color name. 26 | * [CMD] If failed to convert commandline to new option, do not stop. (#1425) 27 | * [Theme] Fix parsing of nested media blocks. (#1442) 28 | * [Widgets] Fix sizing logic widgets. (#1437) 29 | * [Window] Try to fix auto-sizing of desktop names for non-i3 desktops. (#1439) 30 | * [Window] Fix broken close-on-delete. (#1421) 31 | * [Listview] Correctly check if selected item is highlighted. (#1423) 32 | * [Entry] Allow action to be taken on input change. (#1405) 33 | * [Theme] Don't truncate double values. (#1419) 34 | * [Grammar] Add support for env(ENV,default). 35 | * [Documentation] documentation fixes. 36 | * [Theme] fix dmenu theme ( #1396). 37 | 38 | # Thanks 39 | 40 | Big thanks to everybody reporting issues. 41 | Special thanks goes to: 42 | 43 | * Iggy 44 | * RaZ0rr-Two 45 | * Morgane Glidic 46 | * Danny Colin 47 | * Tuure Piitulainen 48 | 49 | Apologies if I mistyped or missed anybody. 50 | -------------------------------------------------------------------------------- /releasenotes/1.7.2/release-1.7.2.markdown: -------------------------------------------------------------------------------- 1 | # 1.7.2: Shellebrations! 2 | 3 | A quick in between release, a bug got fixed that caused configurations not working any more in theme files. 4 | While this is the desired behaviour, this release reverts it to avoid breaking to many setups. 5 | 6 | # Changelog 7 | 8 | v1.7.2: 9 | - [Build] Fix building without window mode enabled. 10 | - [Config] Do not print out the 'theme' field in configuration on dump. 11 | - [CI] test window mode less build. 12 | - Allow configuration block in theme again. 13 | 14 | # Thanks 15 | 16 | Big thanks to everybody reporting issues. 17 | Special thanks goes to: 18 | 19 | * Iggy 20 | * Morgane Glidic 21 | * Danny Colin 22 | 23 | Apologies if I mistyped or missed anybody. 24 | -------------------------------------------------------------------------------- /releasenotes/1.7.3/release-1.7.3.markdown: -------------------------------------------------------------------------------- 1 | # 1.7.3: Sturtled! 2 | 3 | A small intermediate release with a few fixes, mostly in documentation and two great additions by Jakub Jiruta: 4 | 5 | * An option to customize the combi mode display format. 6 | * To possibility to set tab stops on listview and entry boxes. 7 | 8 | # Changelog 9 | 10 | v1.7.3: 11 | - [Help] Print out the parsed config/theme files in -help output. 12 | - [Keybindings] Fix keybindings being modified by -theme-str 13 | - [Doc] Add rofi-dmenu manpage. 14 | - [XCB] Cache lookup of monitor. 15 | - Add -replace option (#568) 16 | - Fix memory leak. 17 | - [1566] Add extra debug for resolving monitors. 18 | - [Theme] Add round,floor,ceil function in @calc (#1569) 19 | - [Doc] Explain icon lookup. 20 | - [Combi] Add -combi-display-format (#1570) (thanks to Jakub) 21 | - [Theme] Expand list type ([]) for more data types. 22 | - [Theme] Add support for tab-stops on textbox. (#1571) (thanks to Jakub) 23 | - [Theme] Testing direct access to widgets via cmdline option (-theme+widget+property value) 24 | 25 | # Thanks 26 | 27 | Big thanks to everybody reporting issues. 28 | Special thanks goes to: 29 | 30 | * Iggy 31 | * Morgane Glidic 32 | * Danny Colin 33 | * Jakub Jirutka 34 | 35 | Apologies if I mistyped or missed anybody. 36 | -------------------------------------------------------------------------------- /releasenotes/1.7.4/horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.7.4/horizontal.png -------------------------------------------------------------------------------- /releasenotes/1.7.4/vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.7.4/vertical.png -------------------------------------------------------------------------------- /releasenotes/1.7.5/release-1.7.5.markdown: -------------------------------------------------------------------------------- 1 | # 1.7.5: We shell overcome 2 | 3 | A quick bug-fix release to fix 2 small issues. 4 | 5 | * In DMenu sync mode, the separator is left in the string. 6 | * On special crafted delayed input in dmenu it shows updates to the list very slow. 7 | It now forces to push update (if there) every 1/10 of a second. 8 | * In the view some of the update/redraw policies are fixed to reduced the 9 | perceived delay. 10 | 11 | This makes it clear we need more people testing the development version to 12 | catch these bugs. I only use a very limited set of features myself and do not 13 | have the time nor energy to write and maintain a good automated test setup. 14 | There was one in the past that tested some basic features by running rofi, 15 | inputting user input and validating output. But it was not reliable and 16 | difficult to keep running. 17 | 18 | 19 | # Thanks 20 | 21 | Big thanks to everybody reporting issues. 22 | Special thanks goes to: 23 | 24 | * Iggy 25 | * Morgane Glidic 26 | * Danny Colin 27 | 28 | Apologies if I mistyped or missed anybody. 29 | -------------------------------------------------------------------------------- /releasenotes/1.7.6/text-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/releasenotes/1.7.6/text-outline.png -------------------------------------------------------------------------------- /releasenotes/1.7.8/release-1.7.8.markdown: -------------------------------------------------------------------------------- 1 | # 1.7.8 2 | 3 | ## Fix drawing issue 4 | 5 | In the last release we had some code that hit a bug in some graphics drivers. 6 | The fix that went in had a side-effect causing borders not to be drawn as 7 | expected. This release should fix that. 8 | 9 | Issue: #2076 10 | 11 | ## DBusActivatable 12 | 13 | The previously introduced DBusActivatable seems to cause some issues and 14 | confusion. First if the application (dconf-editor looking at you) does not 15 | acknowledge it launched rofi stays open until it times out. By default this is 16 | 15 seconds. We reduced the timeout to 1.5 seconds and added an option to 17 | disable DBusActivatable. 18 | 19 | The 2nd point is, that if you launch an application via DBusActivatable it is 20 | not launched by rofi and does not inherits rofi's environment, but the one 21 | systemd is configured to use for that user. 22 | The archlinux documentation explains this and how to fix this [here](https://wiki.archlinux.org/title/Systemd/User#Environment_variables). 23 | 24 | Issue: #2077 25 | 26 | ## CI Fixes 27 | 28 | Because of some deprecation, the CI scripts are updated. It might be useful for 29 | people who want to help to test the latest rofi that for every commit an 30 | artifact is build with a 'source package' you can install. 31 | 32 | You can find them 33 | [here](https://github.com/davatorium/rofi/actions/workflows/build.yml) by 34 | clicking on the commit you want and scrolling to the bottom of the page. This 35 | contains a zip with the two normal source tarballs. 36 | 37 | ## Changelog 38 | 39 | * Fix buffer overflow in rofi -e after reading from stdin (#2082) (Thanks to 40 | Faule Socke) 41 | * [DRun] Reduce DBus timeout to 1500ms add option to disable DBusActivatable. 42 | Issue: #2077 43 | * [CI] Do explicit compare with 'true'? 44 | * [CI] Fix typo in conditional. 45 | * [CI] Only make dist on one build. 46 | * [CI] Fix identical name? 47 | * [CI] Bump upload action to v4 48 | * [Widget] Actually remove ADD operator from border drawing. 49 | Issue: #2076 50 | * [widget] Remove the ADD operator. 51 | Issue: #2076 52 | * Add 1.7.7 docs to README. 53 | * Mark as dev version 54 | -------------------------------------------------------------------------------- /releasenotes/1.7.9/release-1.7.9.markdown: -------------------------------------------------------------------------------- 1 | # 1.7.9 2 | 3 | ## Custom commands on events 4 | 5 | Giomatfois62 added a nice feature that allows you to execute a custom command 6 | on different events. For example play a sound when accepting an entry. 7 | 8 | See the 9 | [rofi-actions(5)](https://github.com/davatorium/rofi/blob/1.7.9/doc/rofi-actions.5.markdown) 10 | manpage for more information. 11 | 12 | ## NVidia workaround workaround 13 | 14 | Because of oddness in nvidia drivers, we had an issue the whole screen turned 15 | black if we used the 'over' operator in cairo. Working around this caused some 16 | drawing issues with anti-aliasing. There now exists two flags to to work around 17 | this workaround again. Either disable the workaround, or disable anti-aliasing. 18 | 19 | You can set these options per widget: 20 | 21 | ```css 22 | widget { 23 | border-disable-nvidia-workaround: true; 24 | border-aa: false; 25 | } 26 | ``` 27 | 28 | It's recommended to set it globally. 29 | 30 | ```css 31 | * { 32 | border-disable-nvidia-workaround: true; 33 | border-aa: false; 34 | } 35 | ``` 36 | 37 | ## IMDKit runtime disable option 38 | 39 | Because IMDKit can break some keybindings, this can now be disabled at runtime. 40 | For example if you try to bind only the 'Super' key, this can fix this. 41 | 42 | For more information, see issue: #2124 43 | 44 | ## Smartcase support 45 | 46 | Thanks to Phanium, rofi now supports Vim style 'smartcase'. Can be enabled 47 | using `-case-smart`. 48 | 49 | Fore more information, see issue: #2060 50 | 51 | ## Changelog 52 | 53 | * Add -imdkit config to toggle imdkit at runtime (#2124) (thx Amos Bird) 54 | * [Widget] Add 2 workaround for error in corner radius drawing 55 | * [rofi-sensible-terminal] Add ghostty (#2110) 56 | * [scrollbar] Add theming for rounded corners (#2108) (thx J0hannes101) 57 | * [DOC] Fix indenting of sub-bullets as mkdocs interpets them differently (#2112) 58 | * Fix typo in fullscreen-preview.rasi (#2113) (thx elig0n) 59 | * Add theming to hide text cursor if no text is put in (#2106) (thx J0hannes101) 60 | * [DRUN] Add option to exclude categories from drun #2102 (#2104) (thx J0hannes101) 61 | * [XCB] Don't keep casting from int to double to int 62 | * [Helper] Add a rofi_fallthrough macro to tell compiler fallthrough is intentional 63 | * [View] xcb_clear_area fixed wrong argument order. 64 | * [DRun] Better handling of corrupted cache file. 65 | * Fix broken Pango link (#2096) (thx Emil) 66 | * [NKUtils] Drop support for binding Meta key. (#2095) 67 | * [View] Allow cycling through matching methods (#2091) 68 | * Fix wrong pointer `-replace` and small cleanup. 69 | * [Textbox] Small signedness fixes for password mask code. 70 | * [dmenu] Modified textbox password masking (#2067) (thx Zebra2711) 71 | * add smartcase support like vim (#2060) (thx Phanium) 72 | * [Mode] Fix wrong documentation header. 73 | * Execute custom user commands or scripts on a variety of rofi events (#2053) (thx giomatfois62) 74 | * Add option to enable the `kb-delete-entry` in script mode (#2087) (thx Tiou Lims) 75 | * [Window] Allow active window to be sorted on top. (#2048) 76 | * [Lexer] Allow for optional imports. (#2078) 77 | -------------------------------------------------------------------------------- /resources/resources.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | doc/default_theme.rasi 5 | doc/default_configuration.rasi 6 | 7 | 8 | -------------------------------------------------------------------------------- /script/get_git_rev.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | DIR=$1 4 | FILE=$2 5 | GIT=$(command -v git) 6 | SED=$(command -v sed) 7 | 8 | if [ -d "${DIR}/.git/" ] && [ -n "${GIT}" ] 9 | then 10 | echo -n "#define GIT_VERSION \"" > "${FILE}.tmp" 11 | BRTG="$(${GIT} describe --tags --always --all | ${SED} -e 's:heads/::')" 12 | REV="$(${GIT} describe --tags --always --dirty| ${SED} -e 's:-g\([a-f0-9]\{7\}\):-git-\1:g')" 13 | echo -n "${REV} (${BRTG})" >> "${FILE}.tmp" 14 | echo "\"" >> "${FILE}.tmp" 15 | else 16 | echo "#undef GIT_VERSION" > "${FILE}.tmp" 17 | fi 18 | 19 | if [ ! -f "${FILE}" ] || ! diff "${FILE}.tmp" "${FILE}" >/dev/null 20 | then 21 | mv "${FILE}.tmp" "${FILE}" 22 | else 23 | rm "${FILE}.tmp" 24 | fi 25 | -------------------------------------------------------------------------------- /script/rofi-sensible-terminal: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # This code is released in public domain by Han Boetes 4 | # Updated by Dave Davenport 5 | # 6 | # This script tries to exec a terminal emulator by trying some known terminal 7 | # emulators. 8 | # 9 | # We welcome patches that add distribution-specific mechanisms to find the 10 | # preferred terminal emulator. On Debian, there is the x-terminal-emulator 11 | # symlink for example. 12 | for terminal in $TERMINAL x-terminal-emulator urxvt rxvt st terminology qterminal Eterm aterm uxterm xterm roxterm xfce4-terminal.wrapper mate-terminal lxterminal konsole alacritty kitty wezterm ghostty; do 13 | if command -v $terminal >/dev/null 2>&1; then 14 | exec $terminal "$@" 15 | fi 16 | done 17 | 18 | rofi -e "Failed to find a suitable terminal" 19 | -------------------------------------------------------------------------------- /source/rofi-types.c: -------------------------------------------------------------------------------- 1 | #include "rofi-types.h" 2 | 3 | /** 4 | * Name of the property type 5 | */ 6 | const char *const PropertyTypeName[P_NUM_TYPES] = { 7 | /** Integer */ 8 | "Integer", 9 | /** Double */ 10 | "Double", 11 | /** String */ 12 | "String", 13 | /** Boolean */ 14 | "Boolean", 15 | /** Color */ 16 | "Color", 17 | /** Image */ 18 | "Image", 19 | /** Padding */ 20 | "Padding", 21 | /** Link to global setting */ 22 | "Reference", 23 | /** Position */ 24 | "Position", 25 | /** Highlight */ 26 | "Highlight", 27 | /** List */ 28 | "List", 29 | /** Orientation */ 30 | "Orientation", 31 | /** Cursor */ 32 | "Cursor", 33 | /** Inherit */ 34 | "Inherit", 35 | }; 36 | -------------------------------------------------------------------------------- /source/timings.c: -------------------------------------------------------------------------------- 1 | /* 2 | * rofi 3 | * 4 | * MIT/X11 License 5 | * Copyright © 2013-2023 Qball Cow 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining 8 | * a copy of this software and associated documentation files (the 9 | * "Software"), to deal in the Software without restriction, including 10 | * without limitation the rights to use, copy, modify, merge, publish, 11 | * distribute, sublicense, and/or sell copies of the Software, and to 12 | * permit persons to whom the Software is furnished to do so, subject to 13 | * the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be 16 | * included in all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 | * 26 | */ 27 | 28 | /** Log domain used by timings.*/ 29 | #define G_LOG_DOMAIN "Timings" 30 | 31 | #include "timings.h" 32 | #include "config.h" 33 | #include "rofi.h" 34 | #include 35 | /** 36 | * Timer used to calculate time stamps. 37 | */ 38 | GTimer *global_timer = NULL; 39 | /** 40 | * Last timestamp made. 41 | */ 42 | double global_timer_last = 0.0; 43 | 44 | void rofi_timings_init(void) { 45 | global_timer = g_timer_new(); 46 | double now = g_timer_elapsed(global_timer, NULL); 47 | g_debug("%4.6f (%2.6f): Started", now, 0.0); 48 | } 49 | 50 | void rofi_timings_tick(const char *file, char const *str, int line, 51 | char const *msg) { 52 | double now = g_timer_elapsed(global_timer, NULL); 53 | 54 | g_debug("%4.6f (%2.6f): %s:%s:%-3d %s", now, now - global_timer_last, file, 55 | str, line, msg); 56 | global_timer_last = now; 57 | } 58 | 59 | void rofi_timings_quit(void) { 60 | double now = g_timer_elapsed(global_timer, NULL); 61 | g_debug("%4.6f (%2.6f): Stopped", now, 0.0); 62 | g_timer_destroy(global_timer); 63 | } 64 | -------------------------------------------------------------------------------- /themes/breaking-themes/readme.md: -------------------------------------------------------------------------------- 1 | Test themes that broke in the past. 2 | -------------------------------------------------------------------------------- /themes/dmenu.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * ROFI Color theme 3 | * User: Qball 4 | * Copyright: Dave Davenport 5 | */ 6 | 7 | * { 8 | background-color: Black; 9 | border-color: White; 10 | text-color: White; 11 | font: "Times New Roman 12"; 12 | } 13 | window { 14 | anchor: north; 15 | location: north; 16 | width: 100%; 17 | padding: 4px; 18 | children: [ horibox ]; 19 | } 20 | horibox { 21 | orientation: horizontal; 22 | children: [ prompt, entry, listview ]; 23 | } 24 | listview { 25 | layout: horizontal; 26 | spacing: 5px; 27 | lines: 100; 28 | } 29 | entry { 30 | expand: false; 31 | width: 10em; 32 | } 33 | element { 34 | padding: 0px 2px; 35 | } 36 | element selected { 37 | background-color: SteelBlue; 38 | } 39 | 40 | element-text, element-icon { 41 | background-color: inherit; 42 | text-color: inherit; 43 | } 44 | -------------------------------------------------------------------------------- /themes/fullscreen-preview.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * ROFI Color Theme 3 | * 4 | * Fullscreen theme with switchable PREVIEW option. 5 | * 6 | * User: Dave Davenport 7 | * Copyright: Dave Davenport 8 | */ 9 | 10 | * { 11 | background-color: transparent; 12 | text-color: white; 13 | } 14 | 15 | window { 16 | fullscreen: true; 17 | background-color: black/80%; 18 | padding: 4em; 19 | children: [ wrap, listview-split]; 20 | spacing: 1em; 21 | } 22 | 23 | 24 | /** We add an extra child to this if PREVIEW=true */ 25 | listview-split { 26 | orientation: horizontal; 27 | spacing: 0.4em; 28 | children: [listview]; 29 | } 30 | 31 | wrap { 32 | expand: false; 33 | orientation: vertical; 34 | children: [ inputbar, message ]; 35 | background-image: linear-gradient(white/5%, white/40%); 36 | border-color: lightblue; 37 | border: 3px; 38 | border-radius: 0.4em; 39 | } 40 | 41 | icon-ib { 42 | expand: false; 43 | filename: "system-search"; 44 | vertical-align: 0.5; 45 | horizontal-align: 0.5; 46 | size: 1em; 47 | } 48 | inputbar { 49 | spacing: 0.4em; 50 | padding: 0.4em; 51 | children: [ icon-ib, entry ]; 52 | } 53 | entry { 54 | placeholder: "Search"; 55 | placeholder-color: grey; 56 | } 57 | message { 58 | background-color: red/20%; 59 | border-color: lightsalmon; 60 | border: 3px 0px 0px 0px; 61 | padding: 0.4em; 62 | spacing: 0.4em; 63 | } 64 | 65 | listview { 66 | flow: horizontal; 67 | fixed-columns: true; 68 | columns: 7; 69 | lines: 5; 70 | spacing: 1.0em; 71 | } 72 | 73 | element { 74 | orientation: vertical; 75 | padding: 0.1em; 76 | 77 | background-image: linear-gradient(white/5%, white/20%); 78 | border-color: lightblue /15%; 79 | border: 3px; 80 | border-radius: 0.4em; 81 | 82 | children: [element-icon, element-text ]; 83 | } 84 | element-icon { 85 | size: calc(((100% - 8em) / 7 )); 86 | horizontal-align: 0.5; 87 | vertical-align: 0.5; 88 | } 89 | element-text { 90 | horizontal-align: 0.5; 91 | vertical-align: 0.5; 92 | padding: 0.2em; 93 | } 94 | 95 | element selected { 96 | background-image: linear-gradient(white/25%, white/10%); 97 | border-color: lightblue; 98 | border: 3px; 99 | border-radius: 0.4em; 100 | } 101 | 102 | /** 103 | * Launching rofi with environment PREVIEW set to true 104 | * will split the screen and show a preview widget. 105 | */ 106 | @media ( enabled: env(PREVIEW, false)) { 107 | /** preview widget */ 108 | icon-current-entry { 109 | expand: true; 110 | size: 80%; 111 | } 112 | listview-split { 113 | children: [listview, icon-current-entry]; 114 | } 115 | listview { 116 | columns: 4; 117 | } 118 | 119 | } 120 | 121 | @media ( enabled: env(NO_IMAGE, false)) { 122 | listview { 123 | columns: 1; 124 | spacing: 0.4em; 125 | } 126 | element { 127 | children: [ element-text ]; 128 | } 129 | element-text { 130 | horizontal-align: 0.0; 131 | } 132 | } 133 | -------------------------------------------------------------------------------- /themes/gruvbox-common.rasinc: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | File: gruvbox-common.rasi 3 | Desc: Shared rules between all gruvbox themes 4 | Author: bardisty 5 | Source: https://github.com/bardisty/gruvbox-rofi 6 | Modified: Mon Feb 12 2018 06:06:47 PST -0800 7 | ========================================================================== */ 8 | 9 | window { 10 | background-color: @background; 11 | border: 2; 12 | padding: 2; 13 | } 14 | 15 | mainbox { 16 | border: 0; 17 | padding: 0; 18 | } 19 | 20 | message { 21 | border: 2px 0 0; 22 | border-color: @separatorcolor; 23 | padding: 1px; 24 | } 25 | 26 | textbox { 27 | highlight: @highlight; 28 | text-color: @foreground; 29 | } 30 | 31 | listview { 32 | border: 2px solid 0 0; 33 | padding: 2px 0 0; 34 | border-color: @separatorcolor; 35 | spacing: 2px; 36 | scrollbar: @scrollbar; 37 | } 38 | 39 | element { 40 | border: 0; 41 | padding: 2px; 42 | } 43 | 44 | element.normal.normal { 45 | background-color: @normal-background; 46 | text-color: @normal-foreground; 47 | } 48 | 49 | element.normal.urgent { 50 | background-color: @urgent-background; 51 | text-color: @urgent-foreground; 52 | } 53 | 54 | element.normal.active { 55 | background-color: @active-background; 56 | text-color: @active-foreground; 57 | } 58 | 59 | element.selected.normal { 60 | background-color: @selected-normal-background; 61 | text-color: @selected-normal-foreground; 62 | } 63 | 64 | element.selected.urgent { 65 | background-color: @selected-urgent-background; 66 | text-color: @selected-urgent-foreground; 67 | } 68 | 69 | element.selected.active { 70 | background-color: @selected-active-background; 71 | text-color: @selected-active-foreground; 72 | } 73 | 74 | element.alternate.normal { 75 | background-color: @alternate-normal-background; 76 | text-color: @alternate-normal-foreground; 77 | } 78 | 79 | element.alternate.urgent { 80 | background-color: @alternate-urgent-background; 81 | text-color: @alternate-urgent-foreground; 82 | } 83 | 84 | element.alternate.active { 85 | background-color: @alternate-active-background; 86 | text-color: @alternate-active-foreground; 87 | } 88 | 89 | scrollbar { 90 | width: 4px; 91 | border: 0; 92 | handle-color: @scrollbar-handle; 93 | handle-width: 8px; 94 | padding: 0; 95 | } 96 | 97 | mode-switcher { 98 | border: 2px 0 0; 99 | border-color: @separatorcolor; 100 | } 101 | 102 | inputbar { 103 | spacing: 0; 104 | text-color: @normal-foreground; 105 | padding: 2px; 106 | children: [ prompt, textbox-prompt-sep, entry, case-indicator ]; 107 | } 108 | 109 | case-indicator, 110 | entry, 111 | prompt, 112 | button { 113 | spacing: 0; 114 | text-color: @normal-foreground; 115 | } 116 | 117 | button.selected { 118 | background-color: @selected-normal-background; 119 | text-color: @selected-normal-foreground; 120 | } 121 | 122 | textbox-prompt-sep { 123 | expand: false; 124 | str: ":"; 125 | text-color: @normal-foreground; 126 | margin: 0 0.3em 0 0; 127 | } 128 | element-text, element-icon { 129 | background-color: inherit; 130 | text-color: inherit; 131 | } 132 | -------------------------------------------------------------------------------- /themes/gruvbox-dark-hard.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-dark-hard.rasi 8 | Desc: Gruvbox dark (hard contrast) color theme for Rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 06:04:26 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox dark colors */ 20 | gruvbox-dark-bg0-hard: #1d2021; 21 | gruvbox-dark-bg0: #282828; 22 | gruvbox-dark-bg2: #504945; 23 | gruvbox-dark-fg0: #fbf1c7; 24 | gruvbox-dark-fg1: #ebdbb2; 25 | gruvbox-dark-red-dark: #cc241d; 26 | gruvbox-dark-red-light: #fb4934; 27 | gruvbox-dark-yellow-dark: #d79921; 28 | gruvbox-dark-yellow-light: #fabd2f; 29 | gruvbox-dark-gray: #a89984; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-dark-bg0-hard; 33 | background-color: @background; 34 | foreground: @gruvbox-dark-fg1; 35 | border-color: @gruvbox-dark-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-dark-bg0; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-dark-bg2; 44 | selected-normal-foreground: @gruvbox-dark-fg0; 45 | 46 | active-background: @gruvbox-dark-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-dark-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-dark-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-dark-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common" 62 | 63 | -------------------------------------------------------------------------------- /themes/gruvbox-dark-soft.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-dark-soft.rasi 8 | Desc: Gruvbox dark (soft contrast) color theme for Rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 06:04:37 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox dark colors */ 20 | gruvbox-dark-bg0-soft: #32302f; 21 | gruvbox-dark-bg1: #3c3836; 22 | gruvbox-dark-bg3: #665c54; 23 | gruvbox-dark-fg0: #fbf1c7; 24 | gruvbox-dark-fg1: #ebdbb2; 25 | gruvbox-dark-red-dark: #cc241d; 26 | gruvbox-dark-red-light: #fb4934; 27 | gruvbox-dark-yellow-dark: #d79921; 28 | gruvbox-dark-yellow-light: #fabd2f; 29 | gruvbox-dark-gray: #a89984; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-dark-bg0-soft; 33 | background-color: @background; 34 | foreground: @gruvbox-dark-fg1; 35 | border-color: @gruvbox-dark-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-dark-bg1; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-dark-bg3; 44 | selected-normal-foreground: @gruvbox-dark-fg0; 45 | 46 | active-background: @gruvbox-dark-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-dark-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-dark-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-dark-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common" 62 | 63 | -------------------------------------------------------------------------------- /themes/gruvbox-dark.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-dark.rasi 8 | Desc: Gruvbox dark color theme for Rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 04:08:43 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox dark colors */ 20 | gruvbox-dark-bg0: #282828; 21 | gruvbox-dark-bg0-soft: #32302f; 22 | gruvbox-dark-bg3: #665c54; 23 | gruvbox-dark-fg0: #fbf1c7; 24 | gruvbox-dark-fg1: #ebdbb2; 25 | gruvbox-dark-red-dark: #cc241d; 26 | gruvbox-dark-red-light: #fb4934; 27 | gruvbox-dark-yellow-dark: #d79921; 28 | gruvbox-dark-yellow-light: #fabd2f; 29 | gruvbox-dark-gray: #a89984; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-dark-bg0; 33 | background-color: @background; 34 | foreground: @gruvbox-dark-fg1; 35 | border-color: @gruvbox-dark-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-dark-bg0-soft; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-dark-bg3; 44 | selected-normal-foreground: @gruvbox-dark-fg0; 45 | 46 | active-background: @gruvbox-dark-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-dark-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-dark-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-dark-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common" 62 | 63 | -------------------------------------------------------------------------------- /themes/gruvbox-light-hard.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-light-hard.rasi 8 | Desc: Gruvbox light (hard contrast) color theme for Rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 06:04:48 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox light colors */ 20 | gruvbox-light-bg0-hard: #f9f5d7; 21 | gruvbox-light-bg0: #fbf1c7; 22 | gruvbox-light-bg1: #ebdbb2; 23 | gruvbox-light-fg0: #282828; 24 | gruvbox-light-fg1: #3c3836; 25 | gruvbox-light-red-dark: #9d0006; 26 | gruvbox-light-red-light: #cc241d; 27 | gruvbox-light-yellow-dark: #b57614; 28 | gruvbox-light-yellow-light: #d79921; 29 | gruvbox-light-gray: #7c6f64; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-light-bg0-hard; 33 | background-color: @background; 34 | foreground: @gruvbox-light-fg1; 35 | border-color: @gruvbox-light-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-light-bg0; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-light-bg1; 44 | selected-normal-foreground: @gruvbox-light-fg0; 45 | 46 | active-background: @gruvbox-light-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-light-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-light-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-light-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common" 62 | 63 | -------------------------------------------------------------------------------- /themes/gruvbox-light-soft.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-light-soft.rasi 8 | Desc: Gruvbox light (soft contrast) color theme for Rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 06:05:38 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox light colors */ 20 | gruvbox-light-bg0-soft: #f2e5bc; 21 | gruvbox-light-bg1: #ebdbb2; 22 | gruvbox-light-bg2: #d5c4a1; 23 | gruvbox-light-fg0: #282828; 24 | gruvbox-light-fg1: #3c3836; 25 | gruvbox-light-red-dark: #9d0006; 26 | gruvbox-light-red-light: #cc241d; 27 | gruvbox-light-yellow-dark: #b57614; 28 | gruvbox-light-yellow-light: #d79921; 29 | gruvbox-light-gray: #7c6f64; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-light-bg0-soft; 33 | background-color: @background; 34 | foreground: @gruvbox-light-fg1; 35 | border-color: @gruvbox-light-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-light-bg1; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-light-bg2; 44 | selected-normal-foreground: @gruvbox-light-fg0; 45 | 46 | active-background: @gruvbox-light-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-light-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-light-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-light-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common" 62 | 63 | -------------------------------------------------------------------------------- /themes/gruvbox-light.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-light.rasi 8 | Desc: Gruvbox light color theme for rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 06:06:06 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox light colors */ 20 | gruvbox-light-bg0: #fbf1c7; 21 | gruvbox-light-bg0-soft: #f2e5bc; 22 | gruvbox-light-bg2: #d5c4a1; 23 | gruvbox-light-fg0: #282828; 24 | gruvbox-light-fg1: #3c3836; 25 | gruvbox-light-gray: #7c6f64; 26 | gruvbox-light-red-dark: #9d0006; 27 | gruvbox-light-red-light: #cc241d; 28 | gruvbox-light-yellow-dark: #b57614; 29 | gruvbox-light-yellow-light: #d79921; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-light-bg0; 33 | background-color: @background; 34 | foreground: @gruvbox-light-fg1; 35 | border-color: @gruvbox-light-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-light-bg0-soft; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-light-bg2; 44 | selected-normal-foreground: @gruvbox-light-fg0; 45 | 46 | active-background: @gruvbox-light-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-light-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-light-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-light-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common" 62 | 63 | -------------------------------------------------------------------------------- /themes/iggy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davatorium/rofi/57edcb449a6b294d115a9672d32bdc18c8947c06/themes/iggy.jpg -------------------------------------------------------------------------------- /themes/iggy.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * ROFI Color theme 3 | * User: Qball 4 | * Copyright: Dave Davenport 5 | */ 6 | 7 | 8 | * { 9 | /* Default background color */ 10 | background-color: transparent; 11 | text-color: white; 12 | } 13 | 14 | 15 | window { 16 | padding: 1em; 17 | 18 | border-color: lightgreen; 19 | border: 5px; 20 | border-radius: 10px; 21 | 22 | width: 1024px; 23 | // height: 768px; 24 | 25 | background-color: darkgreen; 26 | 27 | background-image: url("iggy.jpg", width); 28 | } 29 | 30 | mainbox { 31 | spacing: 0px; 32 | children: [inputbar,wrapper-mode-switcher,listview]; 33 | } 34 | 35 | element { 36 | background: transparent; 37 | children: [ element-icon, element-text ]; 38 | } 39 | element,element-text,element-icon, button { 40 | cursor: pointer; 41 | } 42 | 43 | inputbar { 44 | margin: 0px 0px 0.5em 0em; 45 | spacing: 0.4em; 46 | children: [ button-iggy1, entry,overlay,case-indicator, button-iggy2]; 47 | } 48 | 49 | button-iggy1, button-iggy2 { 50 | expand: false; 51 | content: "🐢"; 52 | action: "kb-primary-paste"; 53 | horizontal-align: 0.5; 54 | } 55 | button-iggy2 { 56 | action: "kb-screenshot"; 57 | } 58 | 59 | listview, inputbar, message { 60 | padding: 0.5em; 61 | border-color: lightgreen; 62 | border: 5px; 63 | border-radius: 10px; 64 | background-color: black/70%; 65 | 66 | columns: 4; 67 | lines: 4; 68 | } 69 | listview { 70 | border: 0px 5px 5px 5px; 71 | border-radius: 0px 0px 10px 10px; 72 | } 73 | 74 | 75 | element { 76 | border: 0; 77 | padding: 10px; 78 | font: "Mono 8"; 79 | orientation: vertical; 80 | } 81 | element-icon { 82 | size: 6em; 83 | } 84 | 85 | element selected { 86 | border-color: lightgreen; 87 | border: 5px; 88 | border-radius: 10px; 89 | background-color: lightgreen/20%; 90 | } 91 | 92 | element-text, element-icon { 93 | font: inherit; 94 | horizontal-align: 0.5; 95 | } 96 | 97 | wrapper-mode-switcher { 98 | orientation: horizontal; 99 | 100 | expand: false; 101 | spacing: 0; 102 | children: [ icon-ms-ic1, mode-switcher, icon-ms-ic2 ]; 103 | } 104 | icon-ms-ic1 { 105 | filename: "go-previous"; 106 | action: "kb-mode-previous"; 107 | } 108 | icon-ms-ic2 { 109 | filename: "go-next"; 110 | action: "kb-mode-next"; 111 | } 112 | icon-ms-ic1,icon-ms-ic2 { 113 | size: 16; 114 | vertical-align: 0.8; 115 | expand: false; 116 | border: 0px 0px 5px ; 117 | border-color: lightgreen; 118 | } 119 | 120 | mode-switcher { 121 | border: 0px; 122 | spacing: 0px; 123 | expand: true; 124 | } 125 | button { 126 | text-color: white; 127 | border: 0px 0px 5px ; 128 | border-color: lightgreen; 129 | border-radius: 10px 10px 0 0; 130 | background-image: linear-gradient(to bottom, darkgreen/50%, black/70%); 131 | horizontal-align: 0.5; 132 | } 133 | button selected.normal { 134 | text-color: white; 135 | margin: 0px; 136 | padding: 0px; 137 | 138 | border: 5px 5px 0px ; 139 | border-color: lightgreen; 140 | border-radius: 10px 10px 0 0; 141 | background-image: linear-gradient(to bottom, darkgreen, black/70%); 142 | } 143 | 144 | entry { 145 | placeholder: "Iggy"; 146 | placeholder-color: darkgrey/30%; 147 | } 148 | -------------------------------------------------------------------------------- /themes/material.rasi: -------------------------------------------------------------------------------- 1 | /* 2 | * ROFI color theme 3 | * 4 | * Based on Base16 Material Color Scheme (https://github.com/ntpeters/base16-materialtheme-scheme) 5 | * 6 | * Modified by: Dave Davenport 7 | * User: Tomaszal 8 | * Copyright: Tomas Zaluckij 9 | */ 10 | 11 | * { 12 | base00: #263238; 13 | base01: #2E3C43; 14 | base02: #314549; 15 | base03: #546E7A; 16 | base04: #B2CCD6; 17 | base05: #EEFFFF; 18 | base06: #EEFFFF; 19 | base07: #FFFFFF; 20 | base08: #F07178; 21 | base09: #F78C6C; 22 | base0A: #FFCB6B; 23 | base0B: #C3E88D; 24 | base0C: #89DDFF; 25 | base0D: #82AAFF; 26 | base0E: #C792EA; 27 | base0F: #FF5370; 28 | 29 | /*base0D: #00BCD4;*/ 30 | 31 | spacing: 0; 32 | background-color: transparent; 33 | 34 | } 35 | 36 | window { 37 | transparency: "real"; 38 | background-color: #263238CC; /*base00 + CC (80% opacity)*/ 39 | } 40 | 41 | mainbox { 42 | children: [inputbar, message, mode-switcher, listview]; 43 | spacing: 30px; 44 | padding: 30px 0; 45 | border: 1px; 46 | border-color: @base0D; 47 | } 48 | 49 | inputbar { 50 | padding: 0 30px; 51 | children: [prompt, textbox-prompt-colon, entry, case-indicator]; 52 | } 53 | 54 | prompt { 55 | text-color: @base0D; 56 | } 57 | 58 | textbox-prompt-colon { 59 | expand: false; 60 | str: ":"; 61 | margin: 0 1ch 0 0; 62 | text-color: @base0D; 63 | } 64 | 65 | entry { 66 | text-color: @base07; 67 | } 68 | 69 | case-indicator { 70 | text-color: @base0F; 71 | } 72 | 73 | mode-switcher, message { 74 | border: 1px 0; 75 | border-color: @base0D; 76 | } 77 | 78 | button, textbox { 79 | background-color: @base03; 80 | text-color: @base07; 81 | padding: 5px; 82 | } 83 | 84 | button selected { 85 | background-color: @base0D; 86 | } 87 | 88 | listview { 89 | scrollbar: true; 90 | margin: 0 10px 0 30px; 91 | } 92 | 93 | scrollbar { 94 | background-color: @base03; 95 | handle-color: @base0D; 96 | handle-width: 10px; 97 | border: 0 1px; 98 | border-color: @base0D; 99 | margin: 0 0 0 20px; 100 | } 101 | 102 | element { 103 | padding: 5px; 104 | spacing: 5px; 105 | highlight: bold underline; 106 | children: [element-icon, element-text]; 107 | } 108 | element-text, element-icon { 109 | background-color : inherit; 110 | text-color : inherit; 111 | foreground-color : inherit; 112 | } 113 | 114 | element normal { 115 | background-color: transparent; 116 | } 117 | 118 | element selected { 119 | background-color: @base0D; 120 | } 121 | 122 | element alternate { 123 | /*background-color: @base03;*/ 124 | } 125 | 126 | element normal normal, element selected normal, element alternate normal { 127 | text-color: @base07; 128 | } 129 | 130 | element normal urgent, element selected urgent, element alternate urgent { 131 | text-color: @base0F; 132 | } 133 | 134 | element normal active, element selected active, element alternate active { 135 | text-color: @base0B; 136 | } 137 | -------------------------------------------------------------------------------- /themes/paper-float.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * A floating box version of the paper theme. 3 | * 4 | * User: Qball 5 | * Copyright: Dave Davenport 6 | */ 7 | 8 | * { 9 | blue: #0000FF; 10 | white: #FFFFFF; 11 | black: #000000; 12 | grey: #eeeeee; 13 | 14 | spacing: 2; 15 | background-color: #00000000; 16 | border-color: #444444FF; 17 | anchor: north; 18 | location: center; 19 | } 20 | window { 21 | transparency: "real"; 22 | background-color: #00000000; 23 | border: 0; 24 | padding: 0% 0% 1em 0%; 25 | x-offset: 0; 26 | y-offset: -10%; 27 | } 28 | mainbox { 29 | padding: 0px; 30 | border: 0; 31 | spacing: 1%; 32 | } 33 | message { 34 | border: 2px; 35 | padding: 1em; 36 | background-color: @white; 37 | text-color: @black; 38 | } 39 | textbox normal { 40 | text-color: #002B36FF; 41 | padding: 0; 42 | border: 0; 43 | } 44 | listview { 45 | fixed-height: 1; 46 | border: 2px; 47 | padding: 1em; 48 | reverse: false; 49 | 50 | columns: 1; 51 | background-color: @white; 52 | } 53 | element { 54 | border: 0; 55 | padding: 2px; 56 | highlight: bold ; 57 | } 58 | element-text { 59 | background-color: inherit; 60 | text-color: inherit; 61 | } 62 | element normal.normal { 63 | text-color: #002B36FF; 64 | background-color: #F5F5F500; 65 | } 66 | element normal.urgent { 67 | text-color: #D75F00FF; 68 | background-color: #F5F5F5FF; 69 | } 70 | element normal.active { 71 | text-color: #005F87FF; 72 | background-color: #F5F5F5FF; 73 | } 74 | element selected.normal { 75 | text-color: #F5F5F5FF; 76 | background-color: #4271AEFF; 77 | } 78 | element selected.urgent { 79 | text-color: #F5F5F5FF; 80 | background-color: #D75F00FF; 81 | } 82 | element selected.active { 83 | text-color: #F5F5F5FF; 84 | background-color: #005F87FF; 85 | } 86 | element alternate.normal { 87 | text-color: #002B36FF; 88 | background-color: #D0D0D0FF; 89 | } 90 | element alternate.urgent { 91 | text-color: #D75F00FF; 92 | background-color: #D0D0D0FF; 93 | } 94 | element alternate.active { 95 | text-color: #005F87FF; 96 | background-color: #D0D0D0FF; 97 | } 98 | scrollbar { 99 | border: 0; 100 | padding: 0; 101 | } 102 | inputbar { 103 | spacing: 0; 104 | border: 2px; 105 | padding: 0.5em 1em; 106 | background-color: @grey; 107 | index: 0; 108 | } 109 | inputbar normal { 110 | foreground-color: #002B36FF; 111 | background-color: #F5F5F500; 112 | } 113 | mode-switcher { 114 | border: 2px; 115 | padding: 0.5em 1em; 116 | background-color: @grey; 117 | index: 10; 118 | } 119 | button selected { 120 | text-color: #4271AEFF; 121 | } 122 | inputbar { 123 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; 124 | } 125 | textbox-prompt-colon { 126 | expand: false; 127 | str: ":"; 128 | margin: 0px 0.3em 0em 0em ; 129 | text-color: var(black); 130 | } 131 | error-message { 132 | border: 2px; 133 | padding: 1em; 134 | background-color: #FF8888; 135 | text-color: @black; 136 | } 137 | -------------------------------------------------------------------------------- /themes/sidebar-v2.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * ROFI Color theme 3 | * User: Qball 4 | * Copyright: Dave Davenport 5 | */ 6 | 7 | * { 8 | background-color: transparent; 9 | // Bold, Italic, Underline 10 | highlight: bold #ffffff; 11 | } 12 | window { 13 | background-color: black / 80%; 14 | border-color: white; 15 | border-radius: 0 15mm 15mm 0; 16 | 17 | padding: 10mm; 18 | 19 | height: 100%; 20 | width: 150mm; 21 | border: 1mm 1mm 1mm 0px; 22 | text-color: white; 23 | 24 | 25 | location: west; 26 | anchor: west; 27 | } 28 | inputbar { 29 | background-color: transparent; 30 | text-color: black; 31 | children: [prompt, entry, textbox-end]; 32 | spacing: 1mm; 33 | } 34 | prompt { 35 | border-radius: 5mm 0mm 0mm 5mm; 36 | width: 15mm; 37 | } 38 | textbox-end { 39 | border-radius: 0mm 5mm 5mm 0mm; 40 | width: 15mm; 41 | expand: false; 42 | } 43 | entry { 44 | background-color: grey; 45 | } 46 | prompt, entry, textbox-end, num-filtered-rows { 47 | background-color: white; 48 | text-color: inherit; 49 | padding: 2mm; 50 | vertical-align: 0.5; 51 | } 52 | element { 53 | border-radius: 5mm; 54 | children: [element-icon]; 55 | } 56 | textbox-current-entry { 57 | border-radius: 5mm; 58 | background-color: lightgreen; 59 | text-color: black; 60 | placeholder: "n/a"; 61 | padding: 2mm; 62 | horizontal-align: 0.5; 63 | } 64 | element-icon { 65 | expand: true; 66 | size: 10mm; 67 | vertial-align: 0.5; 68 | horizontal-align: 0.5; 69 | padding: 2mm; 70 | } 71 | 72 | 73 | mainbox { 74 | expand: true; 75 | background-color: transparent; 76 | spacing: 5mm; 77 | children: [ 78 | inputbar, 79 | listview, 80 | icon-current-entry, 81 | textbox-current-entry 82 | ]; 83 | } 84 | icon-current-entry { 85 | size: 100mm; 86 | } 87 | listview { 88 | padding: 0em; 89 | dynamic: false; 90 | lines: 0; 91 | columns: 8; 92 | flow: horizontal; 93 | } 94 | element selected normal { 95 | background-color: MediumSlateBlue; 96 | } 97 | element normal active { 98 | text-color: MediumTurquoise; 99 | } 100 | element normal urgent { 101 | text-color: red; 102 | } 103 | element alternate normal { 104 | } 105 | element alternate active { 106 | text-color: MediumTurquoise; 107 | } 108 | element alternate urgent { 109 | text-color: MediumVioletRed; 110 | } 111 | element selected active { 112 | background-color: MediumTurquoise; 113 | text-color: black; 114 | } 115 | element selected urgent { 116 | background-color: MediumVioletRed; 117 | text-color: black; 118 | } 119 | error-message { 120 | expand: true; 121 | background-color: red; 122 | border-color: darkred; 123 | border: 2px; 124 | padding: 1em; 125 | } 126 | -------------------------------------------------------------------------------- /themes/sidebar.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * ROFI Color theme 3 | * User: Qball 4 | * Copyright: Dave Davenport 5 | */ 6 | 7 | * { 8 | text-color: #ffeedd; 9 | background-color: rgba(0,0,0,0); 10 | dark: #1c1c1c; 11 | // Black 12 | black: #3d352a; 13 | lightblack: #554444; 14 | // 15 | // Red 16 | red: #cd5c5c; 17 | lightred: #cc5533; 18 | // 19 | // Green 20 | green: #86af80; 21 | lightgreen: #88cc22; 22 | // 23 | // Yellow 24 | yellow: #e8ae5b; 25 | lightyellow: #ffa75d; 26 | // 27 | // Blue 28 | blue: #6495ed; 29 | lightblue: #87ceeb; 30 | // 31 | // Magenta 32 | magenta: #deb887; 33 | lightmagenta: #996600; 34 | // 35 | // Cyan 36 | cyan: #b0c4de; 37 | lightcyan: #b0c4de; 38 | // 39 | // White 40 | white: #bbaa99; 41 | lightwhite: #ddccbb; 42 | // 43 | // Bold, Italic, Underline 44 | highlight: bold #ffffff; 45 | } 46 | window { 47 | height: 100%; 48 | width: 30em; 49 | location: west; 50 | anchor: west; 51 | border: 0px 2px 0px 0px; 52 | text-color: @lightwhite; 53 | } 54 | mode-switcher { 55 | border: 2px 0px 0px 0px; 56 | background-color: @lightblack; 57 | padding: 4px; 58 | } 59 | button selected { 60 | border-color: @lightgreen; 61 | text-color: @lightgreen; 62 | } 63 | inputbar { 64 | background-color: @lightblack; 65 | text-color: @lightgreen; 66 | padding: 4px; 67 | border: 0px 0px 2px 0px; 68 | } 69 | mainbox { 70 | expand: true; 71 | background-color: #1c1c1cee; 72 | spacing: 1em; 73 | } 74 | listview { 75 | padding: 0em 0.4em 0em 1em; 76 | dynamic: false; 77 | lines: 0; 78 | } 79 | element-text { 80 | background-color: inherit; 81 | text-color: inherit; 82 | } 83 | element selected normal { 84 | background-color: @blue; 85 | } 86 | element normal active { 87 | text-color: @lightblue; 88 | } 89 | element normal urgent { 90 | text-color: @lightred; 91 | } 92 | element alternate normal { 93 | } 94 | element alternate active { 95 | text-color: @lightblue; 96 | } 97 | element alternate urgent { 98 | text-color: @lightred; 99 | } 100 | element selected active { 101 | background-color: @lightblue; 102 | text-color: @dark; 103 | } 104 | element selected urgent { 105 | background-color: @lightred; 106 | text-color: @dark; 107 | } 108 | error-message { 109 | expand: true; 110 | background-color: red; 111 | border-color: darkred; 112 | border: 2px; 113 | padding: 1em; 114 | } 115 | --------------------------------------------------------------------------------