小编aho*_*n42的帖子

Ansible:以不同用户身份运行命令,但不使用 sudo

我的总体目标是通过ansible为特定用户重新启动pulseaudio(所以如果您有更好的想法如何做到这一点,我很乐意听到它:))

我想以用户身份运行以下命令myuser,根据pulseaudio,这不应该以 sudo/root 身份完成。

$([[ $(pulseaudio -k) -eq 0 ]] || exit 0; sleep 5; [[ $(pulseaudio -D --exit-idle-time=-1) -eq 0 ]] || exit 0)
Run Code Online (Sandbox Code Playgroud)

如果我自己在一台机器上测试它,效果会很好。如果pulseaudio正在运行,它会杀死它,然后再次启动它,如果pulseaudio已经停止,它不会失败。

尝试 1 [等待密码超时]:

我的 ansible 任务(作为角色的一部分)如下所示:

- name: restart pulse audio
  shell: '$([[ $(pulseaudio -k) -eq 0 ]] || exit 0; sleep 5; [[ $(pulseaudio -D --exit-idle-time=-1) -eq 0 ]] || exit 0)'
  args:
    executable: /bin/bash
  become: true
  become_method: sudo
  become_flags: "su - {{ ansible_user }} -c"
Run Code Online (Sandbox Code Playgroud)

但如果我运行它,我会收到错误FAILED! => {"msg": "Timeout …

bash sudo pulseaudio ansible

6
推荐指数
1
解决办法
7324
查看次数

设置JComboBox PopupMenu的大小

我正在编写一个扩展JComboBox的自定义组件.我的问题是,如果我添加或删除项目,PopupMenu将不会实现其大小.所以列表中有2个项目,但如果在PopupMenu中有2个"空"项之前有4个项目.

我找到的唯一解决方法是做(在JIntelligentComboBox.java第213行)


this.setPopupVisible(false);
this.setPopupVisible(true);

但结果将是一个闪烁的PopupMenu :-(

那么我还能做些什么来刷新/重绘PopupMenu而不会闪烁?

用于测试:组件和一个小测试程序
要生成我的问题,你可以例如:

  • 输入"e"
  • 按"返回"
  • 输入"m"

提前致谢

编辑:我的目标是一个ComboBox,其行为类似于Firefox或Chrome中的地址栏,我想显示包含类型字符的PopupMenu的所有项目.

cboxtester.java:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.plaf.basic.BasicComboBoxRenderer;


public class cboxtester extends JFrame {

    private DefaultComboBoxModel dcm = new DefaultComboBoxModel(new Object[][] {new Object[] {"Mittagessen", "", 0}, 
                                                                                new Object[] {"Essen", "", 0}, 
                                                                                new Object[] {"Frühstück", "", 0}, 
                                                                                new Object[] {"Abendessen", "", 0}});

    private JIntelligentComboBox icb = new JIntelligentComboBox(dcm);

    private cboxtester(){
        this.add(icb, BorderLayout.CENTER);

        this.add(new JButton("bla"), BorderLayout.EAST); …
Run Code Online (Sandbox Code Playgroud)

java swing popupmenu jcombobox

4
推荐指数
2
解决办法
6832
查看次数

标签 统计

ansible ×1

bash ×1

java ×1

jcombobox ×1

popupmenu ×1

pulseaudio ×1

sudo ×1

swing ×1